<?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>11797</bug_id>
          
          <creation_ts>2006-12-10 12:47:18 -0800</creation_ts>
          <short_desc>replace SVGMatrix by AffineTransform</short_desc>
          <delta_ts>2006-12-12 03:32:39 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>420+</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Rob Buis">rwlbuis</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>42576</commentid>
    <comment_count>0</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2006-12-10 12:47:18 -0800</bug_when>
    <thetext>SVGMatrix is not needed, it is just the wrappers that need to add this API. Use AffineTransform internally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42592</commentid>
    <comment_count>1</comment_count>
      <attachid>11799</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2006-12-11 04:13:40 -0800</bug_when>
    <thetext>Created attachment 11799
First attempt

This patch causes no regressions, but reapplying and regenerating it gives compile problems...
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42593</commentid>
    <comment_count>2</comment_count>
      <attachid>11800</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2006-12-11 04:48:33 -0800</bug_when>
    <thetext>Created attachment 11800
This one compiles

This one compiles, thnx WildFox! Waiting for the automatic POD generation before reviewing is needed though.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42644</commentid>
    <comment_count>3</comment_count>
      <attachid>11811</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-12-11 15:55:19 -0800</bug_when>
    <thetext>Created attachment 11811
Updated patch

Patch updated against POD generation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42647</commentid>
    <comment_count>4</comment_count>
      <attachid>11812</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-12-11 17:07:19 -0800</bug_when>
    <thetext>Created attachment 11812
Updated patch II

Incorporated some of weinig&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42651</commentid>
    <comment_count>5</comment_count>
      <attachid>11812</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-12-11 19:18:33 -0800</bug_when>
    <thetext>Comment on attachment 11812
Updated patch II


-- CodeGeneratorObjC.pm

Move these up into CodeGenerator.pm

+my %podTypeHash = (&quot;RGBColor&quot; =&gt; 1, &quot;SVGPoint&quot; =&gt; 1, &quot;SVGRect&quot; =&gt; 1, &quot;SVGNumber&quot; =&gt; 1, &quot;SVGMatrix&quot; =&gt; 1);

+sub IsPodType
+{
+    my $type = shift;
+
+    return 1 if $podTypeHash{$type};
+    return 0;
+}


Please use more descriptive Variable names here and put a comment/FIXME stating that the [Custom] support is needed to fix it.  There also seem to be quite a few unneeded spaces after the first line.

+            my $exceptionOne = ($podType and $podType eq &quot;AffineTransform&quot; and $functionName eq &quot;rotateFromVector&quot;);
+            my $exceptionTwo = ($podType and $podType eq &quot;AffineTransform&quot; and $functionName eq &quot;inverse&quot;);


-- SVGAnimateTransformElement.cpp

Either remove the commented out code or at least put a comment in about why it is commented out.
+/*
+    if (m_transformMatrix)
         m_transformMatrix = new SVGMatrix();
     else {
-        m_transformMatrix-&gt;reset();
+        m_transformMatrix.reset();
 
         if (isAccumulated() &amp;&amp; repeations() != 0.0 &amp;&amp; m_lastMatrix)
             m_transformMatrix-&gt;multiply(m_lastMatrix.get());
     }
-    
+ */   


Are style, although undocumented, is to use 1.0 instead of just 1.
-            m_transformMatrix-&gt;skewX(sx);
+            m_transformMatrix.shear(sx, 1.);
and
-            m_transformMatrix-&gt;skewY(sy);
+            m_transformMatrix.shear(1., sy);


Is there a more efficient way to do this?
-                m_transformMatrix = new SVGMatrix();
+                m_transformMatrix = AffineTransform();


-- SVGPreserveAspectRatio.cpp

Nitpick, re-align function arguments

-SVGMatrix* SVGPreserveAspectRatio::getCTM(float logicX, float logicY,
+AffineTransform SVGPreserveAspectRatio::getCTM(float logicX, float logicY,
                                           float logicWidth, float logicHeight,
                                           float /*physX*/, float /*physY*/,
                                           float physWidth, float physHeight)

-- SVGTransform.cpp

Another nitpick, we tend to use the lowercase &apos;f&apos; for float (I don&apos;t know that it makes a difference though)
+    m_matrix.shear(tan(SVGAngle::torad(angle)), 0.0F);
and
+    m_matrix.shear(0.0F, tan(SVGAngle::torad(angle)));


-- AffineTransformCG.cpp

Why not just set the variable directly in the struct, instead of creating a new one.  Same goes for other platforms.
+void AffineTransform::setA(double a)
+{
+    m_transform = CGAffineTransformMake(a, b(), c(), d(), e(), f());
+}


-- SVGRenderTreeAsText.cpp

Curly braces go on the same line as the else
     else 
     {
-        ts &lt;&lt; &quot;{m=((&quot; &lt;&lt; m.m11() &lt;&lt; &quot;,&quot; &lt;&lt; m.m12() &lt;&lt; &quot;)(&quot; &lt;&lt; m.m21() &lt;&lt; &quot;,&quot; &lt;&lt; m.m22() &lt;&lt; &quot;))&quot;;
-        ts &lt;&lt; &quot; t=(&quot; &lt;&lt; m.dx() &lt;&lt; &quot;,&quot; &lt;&lt; m.dy() &lt;&lt; &quot;)}&quot;;
+        ts &lt;&lt; &quot;{m=((&quot; &lt;&lt; m.a() &lt;&lt; &quot;,&quot; &lt;&lt; m.b() &lt;&lt; &quot;)(&quot; &lt;&lt; m.c() &lt;&lt; &quot;,&quot; &lt;&lt; m.d() &lt;&lt; &quot;))&quot;;
+        ts &lt;&lt; &quot; t=(&quot; &lt;&lt; m.e() &lt;&lt; &quot;,&quot; &lt;&lt; m.f() &lt;&lt; &quot;)}&quot;;
     }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42513</commentid>
    <comment_count>6</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-12-12 03:08:32 -0800</bug_when>
    <thetext>&gt; Move these up into CodeGenerator.pm

Fixed.
 
&gt; Please use more descriptive Variable names here and put a comment/FIXME stating
&gt; that the [Custom] support is needed to fix it.  There also seem to be quite a
&gt; few unneeded spaces after the first line.


Fixed.

&gt; -- SVGAnimateTransformElement.cpp
&gt; 
&gt; Either remove the commented out code or at least put a comment in about why it
&gt; is commented out.

Fixed.
 
&gt; Are style, although undocumented, is to use 1.0 instead of just 1.
&gt; -            m_transformMatrix-&gt;skewX(sx);
&gt; +            m_transformMatrix.shear(sx, 1.);
&gt; and
&gt; -            m_transformMatrix-&gt;skewY(sy);
&gt; +            m_transformMatrix.shear(1., sy);

Fixed.

&gt; Is there a more efficient way to do this?
&gt; -                m_transformMatrix = new SVGMatrix();
&gt; +                m_transformMatrix = AffineTransform();

Yes, .reset(), fixed.

&gt; -- SVGPreserveAspectRatio.cpp
&gt; 
&gt; Nitpick, re-align function arguments

Fixed.
 
&gt; -- SVGTransform.cpp
&gt; 
&gt; Another nitpick, we tend to use the lowercase &apos;f&apos; for float (I don&apos;t know that
&gt; it makes a difference though)
&gt; +    m_matrix.shear(tan(SVGAngle::torad(angle)), 0.0F);
&gt; and
&gt; +    m_matrix.shear(0.0F, tan(SVGAngle::torad(angle)));

Fixed.

&gt; -- AffineTransformCG.cpp
&gt; 
&gt; Why not just set the variable directly in the struct, instead of creating a new
&gt; one.  Same goes for other platforms.

I&apos;ve done that for all platforms except Qt, where that is not possible.

&gt; 
&gt; -- SVGRenderTreeAsText.cpp
&gt; 
&gt; Curly braces go on the same line as the else

Fixed.

Attaching new patch soon...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42476</commentid>
    <comment_count>7</comment_count>
      <attachid>11816</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-12-12 03:15:26 -0800</bug_when>
    <thetext>Created attachment 11816
Final patch

Adressed all of Sam&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42477</commentid>
    <comment_count>8</comment_count>
      <attachid>11817</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-12-12 03:26:30 -0800</bug_when>
    <thetext>Created attachment 11817
Updated final patch

Mention the bug report also in LayoutTests/ChangeLog, as suggested by Rob and remove a typo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42475</commentid>
    <comment_count>9</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-12-12 03:32:39 -0800</bug_when>
    <thetext>Landed in r18177.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11799</attachid>
            <date>2006-12-11 04:13:40 -0800</date>
            <delta_ts>2006-12-11 04:48:33 -0800</delta_ts>
            <desc>First attempt</desc>
            <filename>11797.diff</filename>
            <type>text/plain</type>
            <size>104494</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDE4MTQ5KQorKysgV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsNyArMjEyLDYgQEAgYWxsIDogXAog
ICAgIERPTVNWR0xvY2F0YWJsZS5oIFwKICAgICBET01TVkdNYXJrZXJFbGVtZW50LmggXAogICAg
IERPTVNWR01hc2tFbGVtZW50LmggXAotICAgIERPTVNWR01hdHJpeC5oIFwKICAgICBET01TVkdN
ZXRhZGF0YUVsZW1lbnQuaCBcCiAgICAgRE9NU1ZHTnVtYmVyLmggXAogICAgIERPTVNWR051bWJl
ckxpc3QuaCBcCkBAIC00MDEsNyArNDAwLDYgQEAgYWxsIDogXAogICAgIEpTU1ZHRGVzY0VsZW1l
bnQuaCBcCiAgICAgSlNTVkdEb2N1bWVudC5oIFwKICAgICBKU1NWR0xlbmd0aC5oIFwKLSAgICBK
U1NWR01hdHJpeC5oIFwKICAgICBKU1NWR01ldGFkYXRhRWxlbWVudC5oIFwKICAgICBKU1NWR1Bh
dGhFbGVtZW50LmggXAogICAgIEpTU1ZHUGF0aFNlZy5oIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxODE0OSkKKysrIFdlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03MzMs
OCArNzMzLDYgQEAKIAkJODU0MTYzNkYwQUM3MTgwQjAwMDFFMDFCIC8qIERPTVNWR1BhdGhTZWdM
aXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTQx
NjM1RjBBQzcxODBCMDAwMUUwMUIgLyogRE9NU1ZHUGF0aFNlZ0xpc3QuaCAqLzsgfTsKIAkJODU0
MTYzNzAwQUM3MTgwQjAwMDFFMDFCIC8qIERPTVNWR1BhdGhTZWcubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTQxNjM2MDBBQzcxODBCMDAwMUUwMUIg
LyogRE9NU1ZHUGF0aFNlZy5tbSAqLzsgfTsKIAkJODU0MTYzNzEwQUM3MTgwQjAwMDFFMDFCIC8q
IERPTVNWR1BhdGhTZWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg1NDE2MzYxMEFDNzE4MEIwMDAxRTAxQiAvKiBET01TVkdQYXRoU2VnLmggKi87IH07
Ci0JCTg1NDE2MzcyMEFDNzE4MEIwMDAxRTAxQiAvKiBET01TVkdNYXRyaXgubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTQxNjM2MjBBQzcxODBCMDAw
MUUwMUIgLyogRE9NU1ZHTWF0cml4Lm1tICovOyB9OwotCQk4NTQxNjM3MzBBQzcxODBCMDAwMUUw
MUIgLyogRE9NU1ZHTWF0cml4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NTQxNjM2MzBBQzcxODBCMDAwMUUwMUIgLyogRE9NU1ZHTWF0cml4LmggKi87
IH07CiAJCTg1NDE2Mzc0MEFDNzE4MEIwMDAxRTAxQiAvKiBET01TVkdMZW5ndGhMaXN0Lm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU0MTYzNjQwQUM3
MTgwQjAwMDFFMDFCIC8qIERPTVNWR0xlbmd0aExpc3QubW0gKi87IH07CiAJCTg1NDE2Mzc1MEFD
NzE4MEIwMDAxRTAxQiAvKiBET01TVkdMZW5ndGhMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTQxNjM2NTBBQzcxODBCMDAwMUUwMUIgLyogRE9N
U1ZHTGVuZ3RoTGlzdC5oICovOyB9OwogCQk4NTQxNjM3NjBBQzcxODBCMDAwMUUwMUIgLyogRE9N
U1ZHTGVuZ3RoLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODU0MTYzNjYwQUM3MTgwQjAwMDFFMDFCIC8qIERPTVNWR0xlbmd0aC5tbSAqLzsgfTsKQEAg
LTE5NTYsOCArMTk1NCw2IEBACiAJCUE4OEFENDlGMDk1MjQ4RjAwMDFERDE5NiAvKiBTVkdMb2Nh
dGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
QzBGODgxMDg5NzAxRjMwMEJBNTExNCAvKiBTVkdMb2NhdGFibGUuaCAqLzsgfTsKIAkJQTg4QUQ0
QTAwOTUyNDhGMDAwMUREMTk2IC8qIFNWR01hcmtlckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDMEY4ODIwODk3MDFGMzAwQkE1MTE0
IC8qIFNWR01hcmtlckVsZW1lbnQuY3BwICovOyB9OwogCQlBODhBRDRBMTA5NTI0OEYwMDAxREQx
OTYgLyogU1ZHTWFya2VyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQThDMEY4ODMwODk3MDFGMzAwQkE1MTE0IC8qIFNWR01hcmtlckVsZW1l
bnQuaCAqLzsgfTsKLQkJQTg4QUQ0QTIwOTUyNDhGMDAwMUREMTk2IC8qIFNWR01hdHJpeC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEMwRjg4NDA4
OTcwMUYzMDBCQTUxMTQgLyogU1ZHTWF0cml4LmNwcCAqLzsgfTsKLQkJQTg4QUQ0QTMwOTUyNDhG
MDAwMUREMTk2IC8qIFNWR01hdHJpeC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQThDMEY4ODUwODk3MDFGMzAwQkE1MTE0IC8qIFNWR01hdHJpeC5oICov
OyB9OwogCQlBODhBRDRBNjA5NTI0OEYwMDAxREQxOTYgLyogU1ZHTnVtYmVyTGlzdC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEMwRjg4ODA4OTcw
MUYzMDBCQTUxMTQgLyogU1ZHTnVtYmVyTGlzdC5jcHAgKi87IH07CiAJCUE4OEFENEE3MDk1MjQ4
RjAwMDFERDE5NiAvKiBTVkdOdW1iZXJMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBOEMwRjg4OTA4OTcwMUYzMDBCQTUxMTQgLyogU1ZHTnVtYmVy
TGlzdC5oICovOyB9OwogCQlBODhBRDRBODA5NTI0OEYwMDAxREQxOTYgLyogU1ZHUGFpbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDMEY4OEEw
ODk3MDFGMzAwQkE1MTE0IC8qIFNWR1BhaW50LmNwcCAqLzsgfTsKQEAgLTIyMDMsNiArMjE5OSwx
MCBAQAogCQlBQTIxRUNDRDBBQkYwRkM2MDAyQjgzNEMgLyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUEwOTc4RUUw
QUJBQTZFMTAwODc0NDgwIC8qIENTU0N1cnNvckltYWdlVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBQTRDM0E3NjBCMkIxNjc5MDAyMzM0
QTIgLyogU3R5bGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEFBNEMzQTc0MEIyQjE2NzkwMDIzMzRBMiAvKiBTdHlsZUVsZW1lbnQuY3Bw
ICovOyB9OwogCQlBQTRDM0E3NzBCMkIxNjc5MDAyMzM0QTIgLyogU3R5bGVFbGVtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQTRDM0E3NTBCMkIx
Njc5MDAyMzM0QTIgLyogU3R5bGVFbGVtZW50LmggKi87IH07CisJCUFBQUJFMzU0MEIyRDVDNEQw
MEU5MTRFMSAvKiBKU1NWR01hdHJpeC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQUFBQkUzNTIwQjJENUM0RDAwRTkxNEUxIC8qIEpTU1ZHTWF0cml4Lmgg
Ki87IH07CisJCUFBQUJFMzU1MEIyRDVDNEQwMEU5MTRFMSAvKiBKU1NWR01hdHJpeC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQUFCRTM1MzBCMkQ1
QzREMDBFOTE0RTEgLyogSlNTVkdNYXRyaXguY3BwICovOyB9OworCQlBQUFCRTM1ODBCMkQ1QzYz
MDBFOTE0RTEgLyogRE9NU1ZHTWF0cml4Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQUFBQkUzNTYwQjJENUM2MzAwRTkxNEUxIC8qIERPTVNWR01hdHJp
eC5tbSAqLzsgfTsKKwkJQUFBQkUzNTkwQjJENUM2MzAwRTkxNEUxIC8qIERPTVNWR01hdHJpeC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUFBQkUzNTcw
QjJENUM2MzAwRTkxNEUxIC8qIERPTVNWR01hdHJpeC5oICovOyB9OwogCQlBQUM4REFCMTBBQTEw
MDIwMDBEQzA5MDcgLyogU1ZHTWV0YWRhdGFFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBQzhEQUFGMEFBMTAwMjAwMERDMDkwNyAvKiBT
VkdNZXRhZGF0YUVsZW1lbnQuY3BwICovOyB9OwogCQlBQUM4REFCMjBBQTEwMDIwMDBEQzA5MDcg
LyogU1ZHTWV0YWRhdGFFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBQUM4REFCMDBBQTEwMDIwMDBEQzA5MDcgLyogU1ZHTWV0YWRhdGFFbGVt
ZW50LmggKi87IH07CiAJCUFCMjNBMzEyMDlCQkE3NzYwMDY3Q0M1MyAvKiBIVE1MVGV4dEZpZWxk
SW5uZXJFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEFCMjNBMzEwMDlCQkE3NzYwMDY3Q0M1MyAvKiBIVE1MVGV4dEZpZWxkSW5uZXJFbGVt
ZW50LmNwcCAqLzsgfTsKQEAgLTI1MzAsOCArMjUzMCw2IEBACiAJCUIyRkEzREE5MEFCNzVBNkYw
MDBFNUFDNCAvKiBKU1NWR01hcmtlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyRkEzQ0MxMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR01h
cmtlckVsZW1lbnQuaCAqLzsgfTsKIAkJQjJGQTNEQUEwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZH
TWFza0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjJGQTNDQzIwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHTWFza0VsZW1lbnQuY3BwICov
OyB9OwogCQlCMkZBM0RBQjBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdNYXNrRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJGQTNDQzMwQUI3
NUE2RTAwMEU1QUM0IC8qIEpTU1ZHTWFza0VsZW1lbnQuaCAqLzsgfTsKLQkJQjJGQTNEQUMwQUI3
NUE2RjAwMEU1QUM0IC8qIEpTU1ZHTWF0cml4LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyRkEzQ0M0MEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR01h
dHJpeC5jcHAgKi87IH07Ci0JCUIyRkEzREFEMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR01hdHJp
eC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJGQTND
QzUwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHTWF0cml4LmggKi87IH07CiAJCUIyRkEzREFFMEFC
NzVBNkYwMDBFNUFDNCAvKiBKU1NWR01ldGFkYXRhRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkZBM0NDNjBBQjc1QTZFMDAwRTVBQzQg
LyogSlNTVkdNZXRhZGF0YUVsZW1lbnQuY3BwICovOyB9OwogCQlCMkZBM0RBRjBBQjc1QTZGMDAw
RTVBQzQgLyogSlNTVkdNZXRhZGF0YUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyRkEzQ0M3MEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR01l
dGFkYXRhRWxlbWVudC5oICovOyB9OwogCQlCMkZBM0RCMDBBQjc1QTZGMDAwRTVBQzQgLyogSlNT
VkdOdW1iZXJMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEIyRkEzQ0M4MEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR051bWJlckxpc3QuY3BwICov
OyB9OwpAQCAtMzc2Myw4ICszNzYxLDYgQEAKIAkJODU0MTYzNUYwQUM3MTgwQjAwMDFFMDFCIC8q
IERPTVNWR1BhdGhTZWdMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
T01TVkdQYXRoU2VnTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NTQxNjM2
MDBBQzcxODBCMDAwMUUwMUIgLyogRE9NU1ZHUGF0aFNlZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01TVkdQYXRoU2VnLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4NTQxNjM2MTBBQzcxODBCMDAwMUUwMUIgLyogRE9NU1ZHUGF0aFNlZy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NU1ZHUGF0aFNlZy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4NTQxNjM2MjBBQzcxODBCMDAwMUUwMUIgLyogRE9N
U1ZHTWF0cml4Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERP
TVNWR01hdHJpeC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODU0MTYzNjMwQUM3
MTgwQjAwMDFFMDFCIC8qIERPTVNWR01hdHJpeC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRE9NU1ZHTWF0cml4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1
NDE2MzY0MEFDNzE4MEIwMDAxRTAxQiAvKiBET01TVkdMZW5ndGhMaXN0Lm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTVNWR0xlbmd0aExpc3QubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1NDE2MzY1MEFDNzE4MEIwMDAxRTAxQiAvKiBET01T
VkdMZW5ndGhMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01TVkdM
ZW5ndGhMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1NDE2MzY2MEFDNzE4
MEIwMDAxRTAxQiAvKiBET01TVkdMZW5ndGgubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gRE9NU1ZHTGVuZ3RoLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNDkwNCw4ICs0OTAwLDYgQEAKIAkJQThDMEY4ODEwODk3MDFGMzAwQkE1MTE0IC8qIFNW
R0xvY2F0YWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNWR0xvY2F0YWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9
IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJQThDMEY4ODIwODk3MDFGMzAwQkE1MTE0IC8qIFNWR01h
cmtlckVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTVkdNYXJrZXJFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUE4QzBGODgzMDg5NzAxRjMwMEJB
NTExNCAvKiBTVkdNYXJrZXJFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHTWFya2VyRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKLQkJQThDMEY4ODQwODk3MDFG
MzAwQkE1MTE0IC8qIFNWR01hdHJpeC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR01hdHJpeC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwotCQlBOEMwRjg4NTA4OTcwMUYz
MDBCQTUxMTQgLyogU1ZHTWF0cml4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU1ZHTWF0cml4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRh
YldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlBOEMwRjg4ODA4OTcwMUYzMDBCQTUxMTQg
LyogU1ZHTnVtYmVyTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNWR051bWJlckxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJQThDMEY4ODkwODk3MDFGMzAw
QkE1MTE0IC8qIFNWR051bWJlckxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTVkdOdW1iZXJMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlBOEMwRjg4QTA4OTcwMUYzMDBC
QTUxMTQgLyogU1ZHUGFpbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTVkdQYWludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwpAQCAtNTE2Miw2ICs1MTU2LDEwIEBACiAJ
CUFBMDk3OEVFMEFCQUE2RTEwMDg3NDQ4MCAvKiBDU1NDdXJzb3JJbWFnZVZhbHVlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NDdXJzb3JJbWFnZVZhbHVlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFBNEMzQTc0MEIyQjE2NzkwMDIzMzRBMiAvKiBTdHls
ZUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0eWxl
RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFBNEMzQTc1MEIyQjE2
NzkwMDIzMzRBMiAvKiBTdHlsZUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFN0eWxlRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBQUFC
RTM1MjBCMkQ1QzREMDBFOTE0RTEgLyogSlNTVkdNYXRyaXguaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTU1ZHTWF0cml4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUFBQUJFMzUzMEIyRDVDNEQwMEU5MTRFMSAvKiBKU1NWR01hdHJpeC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdNYXRyaXguY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBQUFCRTM1NjBCMkQ1QzYzMDBFOTE0RTEgLyogRE9NU1ZHTWF0
cml4Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTVNWR01h
dHJpeC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUFBQkUzNTcwQjJENUM2MzAw
RTkxNEUxIC8qIERPTVNWR01hdHJpeC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRE9NU1ZHTWF0cml4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFBQzhEQUFG
MEFBMTAwMjAwMERDMDkwNyAvKiBTVkdNZXRhZGF0YUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR01ldGFkYXRhRWxlbWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFBQzhEQUIwMEFBMTAwMjAwMERDMDkwNyAvKiBTVkdNZXRh
ZGF0YUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR01ldGFk
YXRhRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQjIzQTMxMDA5QkJB
Nzc2MDA2N0NDNTMgLyogSFRNTFRleHRGaWVsZElubmVyRWxlbWVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTFRleHRGaWVsZElubmVyRWxlbWVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NjA3LDggKzU2MDUsNiBAQAogCQlCMkZB
M0NDMTBBQjc1QTZFMDAwRTVBQzQgLyogSlNTVkdNYXJrZXJFbGVtZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NWR01hcmtlckVsZW1lbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQjJGQTNDQzIwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHTWFza0Vs
ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHTWFz
a0VsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkZBM0NDMzBBQjc1
QTZFMDAwRTVBQzQgLyogSlNTVkdNYXNrRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNTVkdNYXNrRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlCMkZBM0NDNDBBQjc1QTZFMDAwRTVBQzQgLyogSlNTVkdNYXRyaXguY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHTWF0cml4LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjJGQTNDQzUwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHTWF0
cml4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NWR01hdHJpeC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkZBM0NDNjBBQjc1QTZFMDAwRTVBQzQgLyog
SlNTVkdNZXRhZGF0YUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTU1ZHTWV0YWRhdGFFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjJGQTNDQzcwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHTWV0YWRhdGFFbGVtZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NWR01ldGFkYXRhRWxlbWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkZBM0NDODBBQjc1QTZFMDAwRTVBQzQg
LyogSlNTVkdOdW1iZXJMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1NWR051bWJlckxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NjE5MCw4ICs2MTg2LDYgQEAKIAkJCQlCMkZBM0NDMTBBQjc1QTZFMDAwRTVBQzQgLyogSlNTVkdN
YXJrZXJFbGVtZW50LmggKi8sCiAJCQkJQjJGQTNDQzIwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZH
TWFza0VsZW1lbnQuY3BwICovLAogCQkJCUIyRkEzQ0MzMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NW
R01hc2tFbGVtZW50LmggKi8sCi0JCQkJQjJGQTNDQzQwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZH
TWF0cml4LmNwcCAqLywKLQkJCQlCMkZBM0NDNTBBQjc1QTZFMDAwRTVBQzQgLyogSlNTVkdNYXRy
aXguaCAqLywKIAkJCQlCMkZBM0NDNjBBQjc1QTZFMDAwRTVBQzQgLyogSlNTVkdNZXRhZGF0YUVs
ZW1lbnQuY3BwICovLAogCQkJCUIyRkEzQ0M3MEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR01ldGFk
YXRhRWxlbWVudC5oICovLAogCQkJCUIyRkEzQ0M4MEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR051
bWJlckxpc3QuY3BwICovLApAQCAtNjc5OCw2ICs2NzkyLDggQEAKIAkJODU0OTQ5MkQwQUM4NUEw
QTAwOEFCMDM1IC8qIFNWRyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJQUFBQkUzNTYwQjJENUM2MzAwRTkxNEUxIC8qIERPTVNWR01hdHJpeC5tbSAqLywK
KwkJCQlBQUFCRTM1NzBCMkQ1QzYzMDBFOTE0RTEgLyogRE9NU1ZHTWF0cml4LmggKi8sCiAJCQkJ
ODUxNjIwRUUwQUQyRkQ4ODAwNTlBN0RFIC8qIERPTVNWR051bWJlci5tbSAqLywKIAkJCQk4NTE2
MjBGMDBBRDJGRDg4MDA1OUE3REUgLyogRE9NU1ZHUG9pbnQubW0gKi8sCiAJCQkJODUxNjIwRjIw
QUQyRkQ4OTAwNTlBN0RFIC8qIERPTVNWR1JlY3QubW0gKi8sCkBAIC03MDU1LDggKzcwNTEsNiBA
QAogCQkJCTg1QzlBMzAwMEFEN0U5NDIwMEZCRkYxRSAvKiBET01TVkdNYXJrZXJFbGVtZW50Lm1t
ICovLAogCQkJCTg1QzlBMzAxMEFEN0U5NDIwMEZCRkYxRSAvKiBET01TVkdNYXNrRWxlbWVudC5o
ICovLAogCQkJCTg1QzlBMzAyMEFEN0U5NDIwMEZCRkYxRSAvKiBET01TVkdNYXNrRWxlbWVudC5t
bSAqLywKLQkJCQk4NTQxNjM2MzBBQzcxODBCMDAwMUUwMUIgLyogRE9NU1ZHTWF0cml4LmggKi8s
Ci0JCQkJODU0MTYzNjIwQUM3MTgwQjAwMDFFMDFCIC8qIERPTVNWR01hdHJpeC5tbSAqLywKIAkJ
CQk4NTU5RjExMDBBQzlCRTk5MDBBMzQzOUMgLyogRE9NU1ZHTWV0YWRhdGFFbGVtZW50LmggKi8s
CiAJCQkJODU1OUYxMTEwQUM5QkU5OTAwQTM0MzlDIC8qIERPTVNWR01ldGFkYXRhRWxlbWVudC5t
bSAqLywKIAkJCQk4NTQwNzRGOTBBRDZDMjJFMDA2MjBDNTcgLyogRE9NU1ZHTnVtYmVyLmggKi8s
CkBAIC04MjM4LDggKzgyMzIsNiBAQAogCQkJCUE4QzBGODgzMDg5NzAxRjMwMEJBNTExNCAvKiBT
VkdNYXJrZXJFbGVtZW50LmggKi8sCiAJCQkJQTgxNjU1RTIwOTZCQzEzOTAwNjAxMDU4IC8qIFNW
R01hc2tFbGVtZW50LmNwcCAqLywKIAkJCQlBODE2NTVFMzA5NkJDMTM5MDA2MDEwNTggLyogU1ZH
TWFza0VsZW1lbnQuaCAqLywKLQkJCQlBOEMwRjg4NDA4OTcwMUYzMDBCQTUxMTQgLyogU1ZHTWF0
cml4LmNwcCAqLywKLQkJCQlBOEMwRjg4NTA4OTcwMUYzMDBCQTUxMTQgLyogU1ZHTWF0cml4Lmgg
Ki8sCiAJCQkJQTgzM0JFREQwQTJDMzQ0QjAwRDU3NjY0IC8qIFNWR01hdHJpeC5pZGwgKi8sCiAJ
CQkJQTgzM0JFQTIwQTJDMzI5MzAwRDU3NjY0IC8qIFNWR051bWJlci5pZGwgKi8sCiAJCQkJQThD
MEY4ODgwODk3MDFGMzAwQkE1MTE0IC8qIFNWR051bWJlckxpc3QuY3BwICovLApAQCAtODYzMSw2
ICs4NjIzLDggQEAKIAkJQkMxQTM3OTMwOTdDNkZCMTAwMTlGM0Q4IC8qIGpzICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlBQUFCRTM1MjBCMkQ1QzREMDBF
OTE0RTEgLyogSlNTVkdNYXRyaXguaCAqLywKKwkJCQlBQUFCRTM1MzBCMkQ1QzREMDBFOTE0RTEg
LyogSlNTVkdNYXRyaXguY3BwICovLAogCQkJCTE0REZCMzNGMEE3REY3NjMwMDE4Rjc2OSAvKiBE
ZXJpdmVkIFNvdXJjZXMgKi8sCiAJCQkJOTNGOEIzMDYwQTMwMEZFQTAwRjYxQUI4IC8qIENvZGVH
ZW5lcmF0b3JKUy5wbSAqLywKIAkJCQkxQTlFRjQ1NjBBMUI5NTdEMDAzMzJCNjMgLyogSlNDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwICovLApAQCAtOTUxMSw3ICs5NTA1LDYgQEAK
IAkJCQlBODhBRDQ5RDA5NTI0OEYwMDAxREQxOTYgLyogU1ZHTGlzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTg4QUQ0OUYwOTUyNDhGMDAwMUREMTk2IC8qIFNWR0xvY2F0YWJsZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTg4QUQ0QTEwOTUyNDhGMDAwMUREMTk2IC8qIFNWR01hcmtlckVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAotCQkJCUE4OEFENEEzMDk1MjQ4RjAwMDFERDE5NiAvKiBTVkdNYXRy
aXguaCBpbiBIZWFkZXJzICovLAogCQkJCUE4OEFENEE3MDk1MjQ4RjAwMDFERDE5NiAvKiBTVkdO
dW1iZXJMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODhBRDRBOTA5NTI0OEYwMDAxREQxOTYg
LyogU1ZHUGFpbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4OEFENEFCMDk1MjQ4RjAwMDFERDE5
NiAvKiBTVkdQYXRoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDI1MCw3ICsxMDI0Myw2
IEBACiAJCQkJQjJGQTNEQTcwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHTGluZUVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUIyRkEzREE5MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR01hcmtl
ckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREFCMEFCNzVBNkYwMDBFNUFDNCAv
KiBKU1NWR01hc2tFbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlCMkZBM0RBRDBBQjc1QTZG
MDAwRTVBQzQgLyogSlNTVkdNYXRyaXguaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREFGMEFC
NzVBNkYwMDBFNUFDNCAvKiBKU1NWR01ldGFkYXRhRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjJGQTNEQjEwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHTnVtYmVyTGlzdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjJGQTNEQjMwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGFpbnQuaCBpbiBI
ZWFkZXJzICovLApAQCAtMTA0MDAsNyArMTAzOTIsNiBAQAogCQkJCTg1NDE2MzZEMEFDNzE4MEIw
MDAxRTAxQiAvKiBET01TVkdUcmFuc2Zvcm0uaCBpbiBIZWFkZXJzICovLAogCQkJCTg1NDE2MzZG
MEFDNzE4MEIwMDAxRTAxQiAvKiBET01TVkdQYXRoU2VnTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODU0MTYzNzEwQUM3MTgwQjAwMDFFMDFCIC8qIERPTVNWR1BhdGhTZWcuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTg1NDE2MzczMEFDNzE4MEIwMDAxRTAxQiAvKiBET01TVkdNYXRyaXguaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg1NDE2Mzc1MEFDNzE4MEIwMDAxRTAxQiAvKiBET01TVkdMZW5ndGhM
aXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTQxNjM3NzBBQzcxODBCMDAwMUUwMUIgLyogRE9N
U1ZHTGVuZ3RoLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTQxNjM3OTBBQzcxODBCMDAwMUUwMUIg
LyogRE9NU1ZHQW5nbGUuaCBpbiBIZWFkZXJzICovLApAQCAtMTA4MzAsNiArMTA4MjEsOCBAQAog
CQkJCUUxRDhFMzE2MEIyOUUzOUMwMEY0QkFGNiAvKiBIVFRQUGFyc2Vycy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxOEM1RDAwQjJBODg2RjAwMTg0NjFEIC8qIFRleHRCcmVha0l0ZXJhdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBQTRDM0E3NzBCMkIxNjc5MDAyMzM0QTIgLyogU3R5bGVFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlBQUFCRTM1NDBCMkQ1QzREMDBFOTE0RTEgLyogSlNT
VkdNYXRyaXguaCBpbiBIZWFkZXJzICovLAorCQkJCUFBQUJFMzU5MEIyRDVDNjMwMEU5MTRFMSAv
KiBET01TVkdNYXRyaXguaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTEwOTAsNyArMTEwODMsNiBAQAog
CQkJCUE4OEFENDlCMDk1MjQ4RjAwMDFERDE5NiAvKiBTVkdMaW5lRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBODhBRDQ5RTA5NTI0OEYwMDAxREQxOTYgLyogU1ZHTG9jYXRhYmxlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE4OEFENEEwMDk1MjQ4RjAwMDFERDE5NiAvKiBTVkdNYXJr
ZXJFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE4OEFENEEyMDk1MjQ4RjAwMDFERDE5
NiAvKiBTVkdNYXRyaXguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg4QUQ0QTYwOTUyNDhGMDAw
MUREMTk2IC8qIFNWR051bWJlckxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg4QUQ0QTgw
OTUyNDhGMDAwMUREMTk2IC8qIFNWR1BhaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4OEFE
NEFBMDk1MjQ4RjAwMDFERDE5NiAvKiBTVkdQYXRoRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTExNzg0LDcgKzExNzc2LDYgQEAKIAkJCQlCMkZBM0RBNjBBQjc1QTZGMDAwRTVBQzQgLyog
SlNTVkdMaW5lRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkZBM0RBODBBQjc1QTZG
MDAwRTVBQzQgLyogSlNTVkdNYXJrZXJFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIy
RkEzREFBMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR01hc2tFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCUIyRkEzREFDMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR01hdHJpeC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCMkZBM0RBRTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdNZXRhZGF0
YUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNEQjAwQUI3NUE2RjAwMEU1QUM0
IC8qIEpTU1ZHTnVtYmVyTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkZBM0RCMjBBQjc1
QTZGMDAwRTVBQzQgLyogSlNTVkdQYWludC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTExODQ5LDcg
KzExODQwLDYgQEAKIAkJCQk4NTQxNjM2QzBBQzcxODBCMDAwMUUwMUIgLyogRE9NU1ZHVHJhbnNm
b3JtLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODU0MTYzNkUwQUM3MTgwQjAwMDFFMDFCIC8qIERP
TVNWR1BhdGhTZWdMaXN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODU0MTYzNzAwQUM3MTgwQjAw
MDFFMDFCIC8qIERPTVNWR1BhdGhTZWcubW0gaW4gU291cmNlcyAqLywKLQkJCQk4NTQxNjM3MjBB
QzcxODBCMDAwMUUwMUIgLyogRE9NU1ZHTWF0cml4Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODU0
MTYzNzQwQUM3MTgwQjAwMDFFMDFCIC8qIERPTVNWR0xlbmd0aExpc3QubW0gaW4gU291cmNlcyAq
LywKIAkJCQk4NTQxNjM3NjBBQzcxODBCMDAwMUUwMUIgLyogRE9NU1ZHTGVuZ3RoLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJODU0MTYzNzgwQUM3MTgwQjAwMDFFMDFCIC8qIERPTVNWR0FuZ2xlLm1t
IGluIFNvdXJjZXMgKi8sCkBAIC0xMjE0OCw2ICsxMjEzOCw4IEBACiAJCQkJRTFEOEUzMUEwQjI5
RTNCNjAwRjRCQUY2IC8qIEhUVFBQYXJzZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMThD
NUQxMEIyQTg4NkYwMDE4NDYxRCAvKiBUZXh0QnJlYWtJdGVyYXRvcklDVS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBQTRDM0E3NjBCMkIxNjc5MDAyMzM0QTIgLyogU3R5bGVFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUFBQUJFMzU1MEIyRDVDNEQwMEU5MTRFMSAvKiBKU1NWR01hdHJp
eC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBQUFCRTM1ODBCMkQ1QzYzMDBFOTE0RTEgLyogRE9N
U1ZHTWF0cml4Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
U1ZHTWF0cml4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHTWF0
cml4LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdNYXRyaXgu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIwOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWZkZWYgU1ZHX1NVUFBPUlQKKworI2luY2x1ZGUgIkpT
U1ZHTWF0cml4LmgiCisKKyNpbmNsdWRlICJTVkdBbmdsZS5oIgorI2luY2x1ZGUgIkpTU1ZHTWF0
cml4VGFibGUuY3BwIgorCit1c2luZyBuYW1lc3BhY2UgS0pTOworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NvbnN0IENsYXNzSW5mbyBKU1NWR01hdHJpeDo6aW5mbyA9IHsgIlNWR01hdHJpeCIs
IDAsICZKU1NWR01hdHJpeFRhYmxlLCAwIH07CisvKgorQGJlZ2luIEpTU1ZHTWF0cml4VGFibGUg
NgorICBhICAgICAgICAgV2ViQ29yZTo6SlNTVkdNYXRyaXg6Ok1hdHJpeEEgICAgICAgRG9udERl
bGV0ZQorICBiICAgICAgICAgV2ViQ29yZTo6SlNTVkdNYXRyaXg6Ok1hdHJpeEIgICAgICAgRG9u
dERlbGV0ZQorICBjICAgICAgICAgV2ViQ29yZTo6SlNTVkdNYXRyaXg6Ok1hdHJpeEMgICAgICAg
RG9udERlbGV0ZQorICBkICAgICAgICAgV2ViQ29yZTo6SlNTVkdNYXRyaXg6Ok1hdHJpeEQgICAg
ICAgRG9udERlbGV0ZQorICBlICAgICAgICAgV2ViQ29yZTo6SlNTVkdNYXRyaXg6Ok1hdHJpeEUg
ICAgICAgRG9udERlbGV0ZQorICBmICAgICAgICAgV2ViQ29yZTo6SlNTVkdNYXRyaXg6Ok1hdHJp
eEYgICAgICAgRG9udERlbGV0ZQorQGVuZAorQGJlZ2luIEpTU1ZHTWF0cml4UHJvdG9UYWJsZSAx
MgorIG11bHRpcGx5ICAgICAgICAgV2ViQ29yZTo6SlNTVkdNYXRyaXg6Ok1hdHJpeE11bHRpcGx5
ICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKKyBpbnZlcnNlICAgICAgICAgIFdlYkNvcmU6OkpTU1ZH
TWF0cml4OjpNYXRyaXhJbnZlcnNlICAgRG9udERlbGV0ZXxGdW5jdGlvbiAwCisgdHJhbnNsYXRl
ICAgICAgICBXZWJDb3JlOjpKU1NWR01hdHJpeDo6TWF0cml4VHJhbnNsYXRlIERvbnREZWxldGV8
RnVuY3Rpb24gMgorIHNjYWxlICAgICAgICAgICAgV2ViQ29yZTo6SlNTVkdNYXRyaXg6Ok1hdHJp
eFNjYWxlICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKKyBzY2FsZU5vblVuaWZvcm0gIFdlYkNv
cmU6OkpTU1ZHTWF0cml4OjpNYXRyaXhTY2FsZU5vblVuaWZvcm0gIERvbnREZWxldGV8RnVuY3Rp
b24gMgorIHJvdGF0ZSAgICAgICAgICAgV2ViQ29yZTo6SlNTVkdNYXRyaXg6Ok1hdHJpeFJvdGF0
ZSAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCisgcm90YXRlRnJvbVZlY3RvciBXZWJDb3JlOjpKU1NW
R01hdHJpeDo6TWF0cml4Um90YXRlRnJvbVZlY3RvciAgRG9udERlbGV0ZXxGdW5jdGlvbiAyCisg
ZmxpcFggICAgICAgICAgICBXZWJDb3JlOjpKU1NWR01hdHJpeDo6TWF0cml4RmxpcFggICBEb250
RGVsZXRlfEZ1bmN0aW9uIDAKKyBmbGlwWSAgICAgICAgICAgIFdlYkNvcmU6OkpTU1ZHTWF0cml4
OjpNYXRyaXhGbGlwWSAgIERvbnREZWxldGV8RnVuY3Rpb24gMAorIHNrZXdYICAgICAgICAgICAg
V2ViQ29yZTo6SlNTVkdNYXRyaXg6Ok1hdHJpeFNrZXdYICAgRG9udERlbGV0ZXxGdW5jdGlvbiAx
Cisgc2tld1kgICAgICAgICAgICBXZWJDb3JlOjpKU1NWR01hdHJpeDo6TWF0cml4U2tld1kgICBE
b250RGVsZXRlfEZ1bmN0aW9uIDEKK0BlbmQKKyovCisKK0tKU19JTVBMRU1FTlRfUFJPVE9GVU5D
KEpTU1ZHTWF0cml4UHJvdG9GdW5jKQorS0pTX0lNUExFTUVOVF9QUk9UT1RZUEUoIkpTU1ZHTWF0
cml4IiwgSlNTVkdNYXRyaXhQcm90bywgSlNTVkdNYXRyaXhQcm90b0Z1bmMpCisKK0pTU1ZHTWF0
cml4OjpKU1NWR01hdHJpeChLSlM6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiB0KSA6IG1fdHJhbnNmb3JtKHQpCit7CisgICAgc2V0UHJvdG90eXBlKEpTU1ZHTWF0cml4
UHJvdG86OnNlbGYoZXhlYykpOworfQorCitKU1NWR01hdHJpeDo6fkpTU1ZHTWF0cml4KCkKK3sK
K30KKworYm9vbCBKU1NWR01hdHJpeDo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7
CisgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxKU1NWR01hdHJpeCwgRE9NT2JqZWN0Pihl
eGVjLCAgJkpTU1ZHTWF0cml4VGFibGUsIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisK
K0pTVmFsdWUqIEpTU1ZHTWF0cml4OjpnZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywg
aW50IHRva2VuKSBjb25zdAoreworICAgIHN3aXRjaCAodG9rZW4pIHsKKyAgICBjYXNlIE1hdHJp
eEE6CisgICAgICAgIHJldHVybiBqc051bWJlcihtX3RyYW5zZm9ybS5tMTEoKSk7CisgICAgY2Fz
ZSBNYXRyaXhCOgorICAgICAgICByZXR1cm4ganNOdW1iZXIobV90cmFuc2Zvcm0ubTEyKCkpOwor
ICAgIGNhc2UgTWF0cml4QzoKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKG1fdHJhbnNmb3JtLm0y
MSgpKTsKKyAgICBjYXNlIE1hdHJpeEQ6CisgICAgICAgIHJldHVybiBqc051bWJlcihtX3RyYW5z
Zm9ybS5tMjIoKSk7CisgICAgY2FzZSBNYXRyaXhFOgorICAgICAgICByZXR1cm4ganNOdW1iZXIo
bV90cmFuc2Zvcm0uZHgoKSk7CisgICAgY2FzZSBNYXRyaXhGOgorICAgICAgICByZXR1cm4ganNO
dW1iZXIobV90cmFuc2Zvcm0uZHkoKSk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorfQorCit2b2lkIEpTU1ZHTWF0cml4OjpwdXQoS0pTOjpFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IEtKUzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBLSlM6OkpTVmFsdWUqIHZhbHVl
LCBpbnQgYXR0cikKK3sKKyAgICBsb29rdXBQdXQ8SlNTVkdNYXRyaXg+KGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIGF0dHIsICZKU1NWR01hdHJpeFRhYmxlLCB0aGlzKTsKK30KKwordm9pZCBK
U1NWR01hdHJpeDo6cHV0VmFsdWVQcm9wZXJ0eShLSlM6OkV4ZWNTdGF0ZSogZXhlYywgaW50IHRv
a2VuLCBLSlM6OkpTVmFsdWUqIHZhbHVlLCBpbnQgKQoreworICAgIHN3aXRjaCAodG9rZW4pIHsK
KyAgICBjYXNlIE1hdHJpeEE6CisgICAgICAgIG1fdHJhbnNmb3JtLnNldE1hdHJpeCh2YWx1ZS0+
dG9OdW1iZXIoZXhlYyksIG1fdHJhbnNmb3JtLm0xMigpLCBtX3RyYW5zZm9ybS5tMjEoKSwgbV90
cmFuc2Zvcm0ubTIyKCksIG1fdHJhbnNmb3JtLmR4KCksIG1fdHJhbnNmb3JtLmR5KCkpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIE1hdHJpeEI6CisgICAgICAgIG1fdHJhbnNmb3JtLnNldE1h
dHJpeChtX3RyYW5zZm9ybS5tMTEoKSwgdmFsdWUtPnRvTnVtYmVyKGV4ZWMpLCBtX3RyYW5zZm9y
bS5tMjEoKSwgbV90cmFuc2Zvcm0ubTIyKCksIG1fdHJhbnNmb3JtLmR4KCksIG1fdHJhbnNmb3Jt
LmR5KCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE1hdHJpeEM6CisgICAgICAgIG1fdHJh
bnNmb3JtLnNldE1hdHJpeChtX3RyYW5zZm9ybS5tMTEoKSwgbV90cmFuc2Zvcm0ubTEyKCksIHZh
bHVlLT50b051bWJlcihleGVjKSwgbV90cmFuc2Zvcm0ubTIyKCksIG1fdHJhbnNmb3JtLmR4KCks
IG1fdHJhbnNmb3JtLmR5KCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE1hdHJpeEQ6Cisg
ICAgICAgIG1fdHJhbnNmb3JtLnNldE1hdHJpeChtX3RyYW5zZm9ybS5tMTEoKSwgbV90cmFuc2Zv
cm0ubTEyKCksIG1fdHJhbnNmb3JtLm0yMSgpLCB2YWx1ZS0+dG9OdW1iZXIoZXhlYyksIG1fdHJh
bnNmb3JtLmR4KCksIG1fdHJhbnNmb3JtLmR5KCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IE1hdHJpeEU6CisgICAgICAgIG1fdHJhbnNmb3JtLnNldE1hdHJpeChtX3RyYW5zZm9ybS5tMTEo
KSwgbV90cmFuc2Zvcm0ubTEyKCksIG1fdHJhbnNmb3JtLm0yMSgpLCBtX3RyYW5zZm9ybS5tMjIo
KSwgdmFsdWUtPnRvTnVtYmVyKGV4ZWMpLCBtX3RyYW5zZm9ybS5keSgpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBNYXRyaXhGOgorICAgICAgICBtX3RyYW5zZm9ybS5zZXRNYXRyaXgobV90
cmFuc2Zvcm0ubTExKCksIG1fdHJhbnNmb3JtLm0xMigpLCBtX3RyYW5zZm9ybS5tMjEoKSwgbV90
cmFuc2Zvcm0ubTIyKCksIG1fdHJhbnNmb3JtLmR4KCksIHZhbHVlLT50b051bWJlcihleGVjKSk7
CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworSlNWYWx1ZSogSlNTVkdNYXRyaXhQcm90b0Z1
bmM6OmNhbGxBc0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmosIGNv
bnN0IExpc3QmIGFyZ3MpCit7CisgICAgaWYgKCF0aGlzT2JqLT5pbmhlcml0cygmSlNTVkdNYXRy
aXg6OmluZm8pKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOwor
CisgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IHN0YXRpY19jYXN0PEpTU1ZHTWF0cml4
Kj4odGhpc09iaiktPmltcGwoKTsKKyAgICBzd2l0Y2ggKGlkKSB7CisgICAgICAgIGNhc2UgSlNT
VkdNYXRyaXg6Ok1hdHJpeE11bHRpcGx5OiB7CisgICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0g
dDIgPSB0b0FmZmluZVRyYW5zZm9ybShhcmdzWzBdKTsKKyAgICAgICAgICAgIEFmZmluZVRyYW5z
Zm9ybSB0ID0gdHJhbnNmb3JtICogdDI7CisgICAgICAgICAgICByZXR1cm4gZ2V0SlNTVkdNYXRy
aXgoZXhlYywgdCk7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBKU1NWR01hdHJpeDo6TWF0cml4
SW52ZXJzZTogeworICAgICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHQgPSB0cmFuc2Zvcm0uaW52
ZXJ0KCk7CisgICAgICAgICAgICByZXR1cm4gZ2V0SlNTVkdNYXRyaXgoZXhlYywgdCk7CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBKU1NWR01hdHJpeDo6TWF0cml4VHJhbnNsYXRlOiB7CisgICAg
ICAgICAgICBmbG9hdCB4ID0gYXJnc1swXS0+dG9OdW1iZXIoZXhlYyk7CisgICAgICAgICAgICBm
bG9hdCB5ID0gYXJnc1sxXS0+dG9OdW1iZXIoZXhlYyk7CisgICAgICAgICAgICBBZmZpbmVUcmFu
c2Zvcm0gdCA9IHRyYW5zZm9ybS50cmFuc2xhdGUoeCwgeSk7CisgICAgICAgICAgICByZXR1cm4g
Z2V0SlNTVkdNYXRyaXgoZXhlYywgdCk7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBKU1NWR01h
dHJpeDo6TWF0cml4U2NhbGU6IHsKKyAgICAgICAgICAgIGZsb2F0IHMgPSBhcmdzWzBdLT50b051
bWJlcihleGVjKTsKKyAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSB0ID0gdHJhbnNmb3JtLnNj
YWxlKHMsIHMpOworICAgICAgICAgICAgcmV0dXJuIGdldEpTU1ZHTWF0cml4KGV4ZWMsIHQpOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgSlNTVkdNYXRyaXg6Ok1hdHJpeFNjYWxlTm9uVW5pZm9y
bTogeworICAgICAgICAgICAgZmxvYXQgczEgPSBhcmdzWzBdLT50b051bWJlcihleGVjKTsKKyAg
ICAgICAgICAgIGZsb2F0IHMyID0gYXJnc1sxXS0+dG9OdW1iZXIoZXhlYyk7CisgICAgICAgICAg
ICBBZmZpbmVUcmFuc2Zvcm0gdCA9IHRyYW5zZm9ybS5zY2FsZShzMSwgczIpOworICAgICAgICAg
ICAgcmV0dXJuIGdldEpTU1ZHTWF0cml4KGV4ZWMsIHQpOworICAgICAgICB9CisgICAgICAgIGNh
c2UgSlNTVkdNYXRyaXg6Ok1hdHJpeFJvdGF0ZTogeworICAgICAgICAgICAgZmxvYXQgYW5nbGUg
PSBhcmdzWzBdLT50b051bWJlcihleGVjKTsKKyAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSB0
ID0gdHJhbnNmb3JtLnJvdGF0ZShhbmdsZSk7CisgICAgICAgICAgICByZXR1cm4gZ2V0SlNTVkdN
YXRyaXgoZXhlYywgdCk7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBKU1NWR01hdHJpeDo6TWF0
cml4Um90YXRlRnJvbVZlY3RvcjogeworICAgICAgICAgICAgZmxvYXQgeCA9IGFyZ3NbMF0tPnRv
TnVtYmVyKGV4ZWMpOworICAgICAgICAgICAgZmxvYXQgeSA9IGFyZ3NbMV0tPnRvTnVtYmVyKGV4
ZWMpOworICAgICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHQgPSB0cmFuc2Zvcm0ucm90YXRlKFNW
R0FuZ2xlOjp0b2RlZyhhdGFuMih5LCB4KSkpOworICAgICAgICAgICAgcmV0dXJuIGdldEpTU1ZH
TWF0cml4KGV4ZWMsIHQpOworICAgICAgICB9CisgICAgICAgIGNhc2UgSlNTVkdNYXRyaXg6Ok1h
dHJpeEZsaXBYOiB7CisgICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdCA9IHRyYW5zZm9ybS5z
Y2FsZSgtMS4sIDEuKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRKU1NWR01hdHJpeChleGVjLCB0
KTsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEpTU1ZHTWF0cml4OjpNYXRyaXhGbGlwWTogewor
ICAgICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHQgPSB0cmFuc2Zvcm0uc2NhbGUoMS4sIC0xLik7
CisgICAgICAgICAgICByZXR1cm4gZ2V0SlNTVkdNYXRyaXgoZXhlYywgdCk7CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBKU1NWR01hdHJpeDo6TWF0cml4U2tld1g6IHsKKyAgICAgICAgICAgIGZs
b2F0IGFuZ2xlID0gYXJnc1swXS0+dG9OdW1iZXIoZXhlYyk7CisgICAgICAgICAgICBBZmZpbmVU
cmFuc2Zvcm0gdCA9IHRyYW5zZm9ybS5zaGVhcih0YW4oU1ZHQW5nbGU6OnRvcmFkKGFuZ2xlKSks
IDAuKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRKU1NWR01hdHJpeChleGVjLCB0KTsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIEpTU1ZHTWF0cml4OjpNYXRyaXhTa2V3WTogeworICAgICAgICAg
ICAgZmxvYXQgYW5nbGUgPSBhcmdzWzBdLT50b051bWJlcihleGVjKTsKKyAgICAgICAgICAgIEFm
ZmluZVRyYW5zZm9ybSB0ID0gdHJhbnNmb3JtLnNoZWFyKDAuLCB0YW4oU1ZHQW5nbGU6OnRvcmFk
KGFuZ2xlKSkpOworICAgICAgICAgICAgcmV0dXJuIGdldEpTU1ZHTWF0cml4KGV4ZWMsIHQpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK0pTVmFs
dWUqIGdldEpTU1ZHTWF0cml4KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwKQoreworICAgIHJldHVybiBuZXcgSlNTVkdNYXRyaXgoZXhlYywgcCk7Cit9CisKK0FmZmlu
ZVRyYW5zZm9ybSB0b0FmZmluZVRyYW5zZm9ybShKU1ZhbHVlKiB2YWwpCit7CisgICAgcmV0dXJu
IHZhbC0+aXNPYmplY3QoJkpTU1ZHTWF0cml4OjppbmZvKSA/IHN0YXRpY19jYXN0PEpTU1ZHTWF0
cml4Kj4odmFsKS0+aW1wbCgpIDogQWZmaW5lVHJhbnNmb3JtKCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFNWR19TVVBQT1JUCkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTU1ZHTWF0cml4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1NWR01hdHJpeC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR01h
dHJpeC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaWZuZGVmIEpTU1ZHTWF0cml4X2gKKyNkZWZpbmUgSlNTVkdNYXRyaXhfaAorCisjaWZkZWYg
U1ZHX1NVUFBPUlQKKworI2luY2x1ZGUgImtqc19iaW5kaW5nLmgiCisjaW5jbHVkZSAiQWZmaW5l
VHJhbnNmb3JtLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworS0pTX0RFRklORV9QUk9UT1RZ
UEUoSlNTVkdNYXRyaXhQcm90bykKKworY2xhc3MgSlNTVkdNYXRyaXggOiBwdWJsaWMgS0pTOjpE
T01PYmplY3QgeworcHVibGljOgorICAgIEpTU1ZHTWF0cml4KEtKUzo6RXhlY1N0YXRlKiwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJik7CisgICAgfkpTU1ZHTWF0cml4KCk7CisKKyAgICB2aXJ0dWFs
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpJZGVu
dGlmaWVyJiwgS0pTOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU1ZhbHVlKiBnZXRWYWx1ZVByb3Bl
cnR5KEtKUzo6RXhlY1N0YXRlKiwgaW50IHRva2VuKSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9p
ZCBwdXQoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OklkZW50aWZpZXImLCBLSlM6OkpTVmFs
dWUqLCBpbnQgYXR0ciA9IEtKUzo6Tm9uZSk7CisgICAgdm9pZCBwdXRWYWx1ZVByb3BlcnR5KEtK
Uzo6RXhlY1N0YXRlKiwgaW50LCBLSlM6OkpTVmFsdWUqLCBpbnQgYXR0cik7CisKKyAgICB2aXJ0
dWFsIGNvbnN0IEtKUzo6Q2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmaW5m
bzsgfQorICAgIHN0YXRpYyBjb25zdCBLSlM6OkNsYXNzSW5mbyBpbmZvOworCisgICAgZW51bSB7
IE1hdHJpeEEsIE1hdHJpeEIsIE1hdHJpeEMsIE1hdHJpeEQsIE1hdHJpeEUsIE1hdHJpeEYsCisg
ICAgICAgICAgIE1hdHJpeE11bHRpcGx5LCBNYXRyaXhJbnZlcnNlLCBNYXRyaXhUcmFuc2xhdGUs
IE1hdHJpeFNjYWxlLAorICAgICAgICAgICBNYXRyaXhTY2FsZU5vblVuaWZvcm0sIE1hdHJpeFJv
dGF0ZSwgTWF0cml4Um90YXRlRnJvbVZlY3RvciwKKyAgICAgICAgICAgTWF0cml4RmxpcFgsIE1h
dHJpeEZsaXBZLCBNYXRyaXhTa2V3WCwgTWF0cml4U2tld1kgfTsKKworICAgIEFmZmluZVRyYW5z
Zm9ybSBpbXBsKCkgeyByZXR1cm4gbV90cmFuc2Zvcm07IH0KKyAKK3ByaXZhdGU6CisgICAgQWZm
aW5lVHJhbnNmb3JtIG1fdHJhbnNmb3JtOworICAgIGZyaWVuZCBjbGFzcyBKU1NWR01hdHJpeFBy
b3RvOworfTsKKworS0pTOjpKU1ZhbHVlKiBnZXRKU1NWR01hdHJpeChLSlM6OkV4ZWNTdGF0ZSos
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOworQWZmaW5lVHJhbnNmb3JtIHRvQWZmaW5lVHJhbnNm
b3JtKEtKUzo6SlNWYWx1ZSopOworICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIFNWR19TVVBQT1JUCisKKyNlbmRpZiAvLyBKU1NWR01hdHJpeF9oCkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTU1ZHUG9pbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNTVkdQb2ludC5jcHAJKHJldmlzaW9uIDE4MTQ5KQorKysgV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1NWR1BvaW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTksMTggKzk5LDE0IEBAIEpT
VmFsdWUqIEpTU1ZHUG9pbnRQcm90b0Z1bmM6OmNhbGxBc0Z1bmMKICAgICBpZiAoIXRoaXNPYmot
PmluaGVyaXRzKCZKU1NWR1BvaW50OjppbmZvKSkKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3Io
ZXhlYywgVHlwZUVycm9yKTsKIAotI2lmZGVmIFNWR19TVVBQT1JUCiAgICAgRmxvYXRQb2ludCBw
b2ludCA9IHN0YXRpY19jYXN0PEpTU1ZHUG9pbnQqPih0aGlzT2JqKS0+aW1wbCgpOwogICAgIHN3
aXRjaCAoaWQpIHsKICAgICAgICAgY2FzZSBKU1NWR1BvaW50OjpNYXRyaXhUcmFuc2Zvcm06IHsK
LSAgICAgICAgICAgIFNWR01hdHJpeCogbWF0ID0gdG9TVkdNYXRyaXgoYXJnc1swXSk7Ci0gICAg
ICAgICAgICBpZiAoIW1hdCkKLSAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
LSAgICAgICAgICAgIEZsb2F0UG9pbnQgcCA9IHBvaW50Lm1hdHJpeFRyYW5zZm9ybShtYXQtPm1h
dHJpeCgpKTsKKyAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBtYXQgPSB0b0FmZmluZVRyYW5z
Zm9ybShhcmdzWzBdKTsKKyAgICAgICAgICAgIEZsb2F0UG9pbnQgcCA9IHBvaW50Lm1hdHJpeFRy
YW5zZm9ybShtYXQpOwogICAgICAgICAgICAgcmV0dXJuIGdldEpTU1ZHUG9pbnQoZXhlYywgcCk7
CiAgICAgICAgIH0KICAgICB9Ci0jZW5kaWYKIAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
fQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUludGVybmFsLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUludGVybmFsLmgJKHJldmlzaW9uIDE4MTQ5KQor
KysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgIkRPTVJHQkNvbG9yLmgiCiAKICNpZmRlZiBTVkdfU1VQ
UE9SVAorI2ltcG9ydCAiRE9NU1ZHTWF0cml4LmgiCiAjaW1wb3J0ICJET01TVkdOdW1iZXIuaCIK
ICNpbXBvcnQgIkRPTVNWR1BvaW50LmgiCiAjaW1wb3J0ICJET01TVkdSZWN0LmgiCkBAIC0yMTAs
NyArMjExLDYgQEAKICNpbXBvcnQgIkRPTVNWR0xpbmVhckdyYWRpZW50RWxlbWVudEludGVybmFs
LmgiCiAjaW1wb3J0ICJET01TVkdNYXJrZXJFbGVtZW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRP
TVNWR01hc2tFbGVtZW50SW50ZXJuYWwuaCIKLSNpbXBvcnQgIkRPTVNWR01hdHJpeEludGVybmFs
LmgiCiAjaW1wb3J0ICJET01TVkdNZXRhZGF0YUVsZW1lbnRJbnRlcm5hbC5oIgogI2ltcG9ydCAi
RE9NU1ZHTnVtYmVyTGlzdEludGVybmFsLmgiCiAjaW1wb3J0ICJET01TVkdQYWludEludGVybmFs
LmgiCkBAIC0yNzUsNiArMjc1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIE5v
ZGVGaWx0ZXI7CiAKICNpZmRlZiBTVkdfU1VQUE9SVAorICAgIGNsYXNzIEFmZmluZVRyYW5zZm9y
bTsKICAgICBjbGFzcyBGbG9hdFBvaW50OwogICAgIGNsYXNzIEZsb2F0UmVjdDsKICNlbmRpZiAv
LyBTVkdfU1VQUE9SVApAQCAtMzIyLDYgKzMyMywxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAt
IChXZWJDb3JlOjpGbG9hdFJlY3QpX1NWR1JlY3Q7CiBAZW5kCiAKK0BpbnRlcmZhY2UgRE9NU1ZH
TWF0cml4IChXZWJDb3JlSW50ZXJuYWwpCisrIChET01TVkdNYXRyaXggKilfU1ZHTWF0cml4V2l0
aDooV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtKWltcGw7CistIChXZWJDb3JlOjpBZmZpbmVUcmFu
c2Zvcm0pX1NWR01hdHJpeDsKK0BlbmQKKwogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAKIApJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVNWR01hdHJpeC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3Mvb2JqYy9ET01TVkdNYXRyaXguaAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvYmluZGluZ3Mvb2JqYy9ET01TVkdNYXRyaXguaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWlu
aWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0IDxXZWJDb3JlL0RPTU9i
amVjdC5oPgorCitAY2xhc3MgRE9NU1ZHTWF0cml4OworCitAaW50ZXJmYWNlIERPTVNWR01hdHJp
eCA6IERPTU9iamVjdAorLSAoZmxvYXQpYTsKKy0gKHZvaWQpc2V0QTooZmxvYXQpbmV3QTsKKy0g
KGZsb2F0KWI7CistICh2b2lkKXNldEI6KGZsb2F0KW5ld0I7CistIChmbG9hdCljOworLSAodm9p
ZClzZXRDOihmbG9hdCluZXdDOworLSAoZmxvYXQpZDsKKy0gKHZvaWQpc2V0RDooZmxvYXQpbmV3
RDsKKy0gKGZsb2F0KWU7CistICh2b2lkKXNldEU6KGZsb2F0KW5ld0U7CistIChmbG9hdClmOwor
LSAodm9pZClzZXRGOihmbG9hdCluZXdGOworLSAoRE9NU1ZHTWF0cml4ICopbXVsdGlwbHk6KERP
TVNWR01hdHJpeCAqKXNlY29uZE1hdHJpeDsKKy0gKERPTVNWR01hdHJpeCAqKWludmVyc2U7Cist
IChET01TVkdNYXRyaXggKil0cmFuc2xhdGU6KGZsb2F0KXggeTooZmxvYXQpeTsKKy0gKERPTVNW
R01hdHJpeCAqKXNjYWxlOihmbG9hdClzY2FsZUZhY3RvcjsKKy0gKERPTVNWR01hdHJpeCAqKXNj
YWxlTm9uVW5pZm9ybTooZmxvYXQpc2NhbGVGYWN0b3JYIHNjYWxlRmFjdG9yWTooZmxvYXQpc2Nh
bGVGYWN0b3JZOworLSAoRE9NU1ZHTWF0cml4ICopcm90YXRlOihmbG9hdClhbmdsZTsKKy0gKERP
TVNWR01hdHJpeCAqKXJvdGF0ZUZyb21WZWN0b3I6KGZsb2F0KXggeTooZmxvYXQpeTsKKy0gKERP
TVNWR01hdHJpeCAqKWZsaXBYOworLSAoRE9NU1ZHTWF0cml4ICopZmxpcFk7CistIChET01TVkdN
YXRyaXggKilza2V3WDooZmxvYXQpYW5nbGU7CistIChET01TVkdNYXRyaXggKilza2V3WTooZmxv
YXQpYW5nbGU7CitAZW5kCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NU1ZHTWF0cml4
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01TVkdNYXRyaXgubW0J
KHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NU1ZHTWF0cml4Lm1tCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIxMCBAQAorLyoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9m
IHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAqIFRoaXMgZmlsZSBoYXMgYmVlbiBn
ZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorCisjaWZkZWYgU1ZHX1NVUFBPUlQKKworI2ltcG9ydCAiRE9N
U1ZHTWF0cml4LmgiCisKKyNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKworI2ltcG9ydCAiRE9NSW50
ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTVNWR01hdHJpeC5oIgorI2ltcG9ydCAiRXhjZXB0aW9uSGFu
ZGxlcnMuaCIKKyNpbXBvcnQgIlNWR01hdHJpeC5oIgorCisjZGVmaW5lIElNUEwgcmVpbnRlcnBy
ZXRfY2FzdDxXZWJDb3JlOjpTVkdNYXRyaXgqPihfaW50ZXJuYWwpCisKK0BpbXBsZW1lbnRhdGlv
biBET01TVkdNYXRyaXgKKworLSAodm9pZClkZWFsbG9jCit7CisgICAgaWYgKF9pbnRlcm5hbCkK
KyAgICAgICAgSU1QTC0+ZGVyZWYoKTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZv
aWQpZmluYWxpemUKK3sKKyAgICBpZiAoX2ludGVybmFsKQorICAgICAgICBJTVBMLT5kZXJlZigp
OworICAgIFtzdXBlciBmaW5hbGl6ZV07Cit9CisKKy0gKGZsb2F0KWEKK3sKKyAgICByZXR1cm4g
SU1QTC0+YSgpOworfQorCistICh2b2lkKXNldEE6KGZsb2F0KW5ld0EKK3sKKyAgICBJTVBMLT5z
ZXRBKG5ld0EpOworfQorCistIChmbG9hdCliCit7CisgICAgcmV0dXJuIElNUEwtPmIoKTsKK30K
KworLSAodm9pZClzZXRCOihmbG9hdCluZXdCCit7CisgICAgSU1QTC0+c2V0QihuZXdCKTsKK30K
KworLSAoZmxvYXQpYworeworICAgIHJldHVybiBJTVBMLT5jKCk7Cit9CisKKy0gKHZvaWQpc2V0
QzooZmxvYXQpbmV3QworeworICAgIElNUEwtPnNldEMobmV3Qyk7Cit9CisKKy0gKGZsb2F0KWQK
K3sKKyAgICByZXR1cm4gSU1QTC0+ZCgpOworfQorCistICh2b2lkKXNldEQ6KGZsb2F0KW5ld0QK
K3sKKyAgICBJTVBMLT5zZXREKG5ld0QpOworfQorCistIChmbG9hdCllCit7CisgICAgcmV0dXJu
IElNUEwtPmUoKTsKK30KKworLSAodm9pZClzZXRFOihmbG9hdCluZXdFCit7CisgICAgSU1QTC0+
c2V0RShuZXdFKTsKK30KKworLSAoZmxvYXQpZgoreworICAgIHJldHVybiBJTVBMLT5mKCk7Cit9
CisKKy0gKHZvaWQpc2V0RjooZmxvYXQpbmV3RgoreworICAgIElNUEwtPnNldEYobmV3Rik7Cit9
CisKKy0gKERPTVNWR01hdHJpeCAqKW11bHRpcGx5OihET01TVkdNYXRyaXggKilzZWNvbmRNYXRy
aXgKK3sKKyAgICByZXR1cm4gW0RPTVNWR01hdHJpeCBfU1ZHTWF0cml4V2l0aDpXVEY6OmdldFB0
cihJTVBMLT5tdWx0aXBseShbc2Vjb25kTWF0cml4IF9TVkdNYXRyaXhdKSldOworfQorCistIChE
T01TVkdNYXRyaXggKilpbnZlcnNlCit7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9
IDA7CisgICAgRE9NU1ZHTWF0cml4ICpyZXN1bHQgPSBbRE9NU1ZHTWF0cml4IF9TVkdNYXRyaXhX
aXRoOldURjo6Z2V0UHRyKElNUEwtPmludmVyc2UoZWMpKV07CisgICAgV2ViQ29yZTo6cmFpc2VP
bkRPTUVycm9yKGVjKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCistIChET01TVkdNYXRyaXgg
Kil0cmFuc2xhdGU6KGZsb2F0KXggeTooZmxvYXQpeQoreworICAgIHJldHVybiBbRE9NU1ZHTWF0
cml4IF9TVkdNYXRyaXhXaXRoOldURjo6Z2V0UHRyKElNUEwtPnRyYW5zbGF0ZSh4LCB5KSldOwor
fQorCistIChET01TVkdNYXRyaXggKilzY2FsZTooZmxvYXQpc2NhbGVGYWN0b3IKK3sKKyAgICBy
ZXR1cm4gW0RPTVNWR01hdHJpeCBfU1ZHTWF0cml4V2l0aDpXVEY6OmdldFB0cihJTVBMLT5zY2Fs
ZShzY2FsZUZhY3RvcikpXTsKK30KKworLSAoRE9NU1ZHTWF0cml4ICopc2NhbGVOb25Vbmlmb3Jt
OihmbG9hdClzY2FsZUZhY3Rvclggc2NhbGVGYWN0b3JZOihmbG9hdClzY2FsZUZhY3RvclkKK3sK
KyAgICByZXR1cm4gW0RPTVNWR01hdHJpeCBfU1ZHTWF0cml4V2l0aDpXVEY6OmdldFB0cihJTVBM
LT5zY2FsZU5vblVuaWZvcm0oc2NhbGVGYWN0b3JYLCBzY2FsZUZhY3RvclkpKV07Cit9CisKKy0g
KERPTVNWR01hdHJpeCAqKXJvdGF0ZTooZmxvYXQpYW5nbGUKK3sKKyAgICByZXR1cm4gW0RPTVNW
R01hdHJpeCBfU1ZHTWF0cml4V2l0aDpXVEY6OmdldFB0cihJTVBMLT5yb3RhdGUoYW5nbGUpKV07
Cit9CisKKy0gKERPTVNWR01hdHJpeCAqKXJvdGF0ZUZyb21WZWN0b3I6KGZsb2F0KXggeTooZmxv
YXQpeQoreworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIERPTVNWR01h
dHJpeCAqcmVzdWx0ID0gW0RPTVNWR01hdHJpeCBfU1ZHTWF0cml4V2l0aDpXVEY6OmdldFB0cihJ
TVBMLT5yb3RhdGVGcm9tVmVjdG9yKHgsIHksIGVjKSldOworICAgIFdlYkNvcmU6OnJhaXNlT25E
T01FcnJvcihlYyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLSAoRE9NU1ZHTWF0cml4ICop
ZmxpcFgKK3sKKyAgICByZXR1cm4gW0RPTVNWR01hdHJpeCBfU1ZHTWF0cml4V2l0aDpXVEY6Omdl
dFB0cihJTVBMLT5mbGlwWCgpKV07Cit9CisKKy0gKERPTVNWR01hdHJpeCAqKWZsaXBZCit7Cisg
ICAgcmV0dXJuIFtET01TVkdNYXRyaXggX1NWR01hdHJpeFdpdGg6V1RGOjpnZXRQdHIoSU1QTC0+
ZmxpcFkoKSldOworfQorCistIChET01TVkdNYXRyaXggKilza2V3WDooZmxvYXQpYW5nbGUKK3sK
KyAgICByZXR1cm4gW0RPTVNWR01hdHJpeCBfU1ZHTWF0cml4V2l0aDpXVEY6OmdldFB0cihJTVBM
LT5za2V3WChhbmdsZSkpXTsKK30KKworLSAoRE9NU1ZHTWF0cml4ICopc2tld1k6KGZsb2F0KWFu
Z2xlCit7CisgICAgcmV0dXJuIFtET01TVkdNYXRyaXggX1NWR01hdHJpeFdpdGg6V1RGOjpnZXRQ
dHIoSU1QTC0+c2tld1koYW5nbGUpKV07Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIERP
TVNWR01hdHJpeCAoV2ViQ29yZUludGVybmFsKQorCistIChXZWJDb3JlOjpTVkdNYXRyaXggKilf
U1ZHTWF0cml4Cit7CisgICAgcmV0dXJuIElNUEw7Cit9CisKKy0gKGlkKV9pbml0V2l0aFNWR01h
dHJpeDooV2ViQ29yZTo6U1ZHTWF0cml4ICopaW1wbAoreworICAgIFtzdXBlciBfaW5pdF07Cisg
ICAgX2ludGVybmFsID0gcmVpbnRlcnByZXRfY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KGltcGwp
OworICAgIGltcGwtPnJlZigpOworICAgIFdlYkNvcmU6OmFkZERPTVdyYXBwZXIoc2VsZiwgaW1w
bCk7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKysgKERPTVNWR01hdHJpeCAqKV9TVkdNYXRyaXhX
aXRoOihXZWJDb3JlOjpTVkdNYXRyaXggKilpbXBsCit7CisgICAgaWYgKCFpbXBsKQorICAgICAg
ICByZXR1cm4gbmlsOworICAgIGlkIGNhY2hlZEluc3RhbmNlOworICAgIGNhY2hlZEluc3RhbmNl
ID0gV2ViQ29yZTo6Z2V0RE9NV3JhcHBlcihpbXBsKTsKKyAgICBpZiAoY2FjaGVkSW5zdGFuY2Up
CisgICAgICAgIHJldHVybiBbW2NhY2hlZEluc3RhbmNlIHJldGFpbl0gYXV0b3JlbGVhc2VdOwor
ICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhTVkdNYXRyaXg6aW1wbF0gYXV0b3Jl
bGVhc2VdOworfQorCitAZW5kCisKKyNlbmRpZiAvLyBTVkdfU1VQUE9SVApJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTVNWR1BvaW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9ET01TVkdQb2ludC5tbQkocmV2aXNpb24gMTgxNDkpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL29iamMvRE9NU1ZHUG9pbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcg
QEAKIC0gKERPTVNWR1BvaW50ICopbWF0cml4VHJhbnNmb3JtOihET01TVkdNYXRyaXggKiltYXRy
aXgKIHsKICAgICBBU1NFUlQobWF0cml4KTsKLSAgICByZXR1cm4gW0RPTVNWR1BvaW50IF9TVkdQ
b2ludFdpdGg6SU1QTC0+bWF0cml4VHJhbnNmb3JtKFttYXRyaXggX1NWR01hdHJpeF0tPm1hdHJp
eCgpKV07CisgICAgcmV0dXJuIFtET01TVkdQb2ludCBfU1ZHUG9pbnRXaXRoOklNUEwtPm1hdHJp
eFRyYW5zZm9ybShbbWF0cml4IF9TVkdNYXRyaXhdKV07CiB9CiAKIEBlbmQKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMTgxNDkp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDAwLDYgKzEwMDAsNyBAQCBzdWIgR2V0TmF0aXZlVHlwZQogICAgIHJldHVy
biAiRXZlbnRUYXJnZXROb2RlKiIgaWYgJHR5cGUgZXEgIkV2ZW50VGFyZ2V0IjsKICAgICByZXR1
cm4gIkZsb2F0UmVjdCIgaWYgJHR5cGUgZXEgIlNWR1JlY3QiOwogICAgIHJldHVybiAiRmxvYXRQ
b2ludCIgaWYgJHR5cGUgZXEgIlNWR1BvaW50IjsKKyAgICByZXR1cm4gIkFmZmluZVRyYW5zZm9y
bSIgaWYgJHR5cGUgZXEgIlNWR01hdHJpeCI7CiAgICAgcmV0dXJuICJkb3VibGUiIGlmICR0eXBl
IGVxICJTVkdOdW1iZXIiOwogICAgIHJldHVybiAiU1ZHUGFpbnQ6OlNWR1BhaW50VHlwZSIgaWYg
JHR5cGUgZXEgIlNWR1BhaW50VHlwZSI7CiAKQEAgLTExMTgsNiArMTExOSwxMCBAQCBzdWIgSlNW
YWx1ZVRvTmF0aXZlCiAgICAgICAgIHJldHVybiAidG9GbG9hdFBvaW50KCR2YWx1ZSkiOwogICAg
IH0KIAorICAgIGlmICgkdHlwZSBlcSAiU1ZHTWF0cml4IikgeworICAgICAgICAkaW1wbEluY2x1
ZGVzeyJKU1NWR01hdHJpeC5oIn0gPSAxOworICAgICAgICByZXR1cm4gInRvQWZmaW5lVHJhbnNm
b3JtKCR2YWx1ZSkiOworICAgIH0KIAogICAgICMgRGVmYXVsdCwgYXNzdW1lIGF1dG9nZW5lcmF0
ZWQgdHlwZSBjb252ZXJzaW9uIHJvdXRpbmVzCiAgICAgJGltcGxJbmNsdWRlc3siSlMkdHlwZS5o
In0gPSAxOwpAQCAtMTE1MSw3ICsxMTU2LDcgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZQogICAgICAg
ICByZXR1cm4gImdldERPTVJHQkNvbG9yKGV4ZWMsICR2YWx1ZSkiOwogICAgIH0KIAotICAgIGlm
ICgkdHlwZSBlcSAiU1ZHUmVjdCIgb3IgJHR5cGUgZXEgIlNWR1BvaW50IiBvciAkdHlwZSBlcSAi
U1ZHTnVtYmVyIikgeworICAgIGlmICgkdHlwZSBlcSAiU1ZHUmVjdCIgb3IgJHR5cGUgZXEgIlNW
R1BvaW50IiBvciAkdHlwZSBlcSAiU1ZHTnVtYmVyIiBvciAkdHlwZSBlcSAiU1ZHTWF0cml4Iikg
ewogICAgICAgICAkaW1wbEluY2x1ZGVzeyJKUyR0eXBlLmgifSA9IDE7CiAgICAgICAgIHJldHVy
biAiZ2V0SlMkdHlwZShleGVjLCAkdmFsdWUpIjsKICAgICB9CkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCShyZXZpc2lvbiAxODE0OSkKKysr
IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQkod29ya2luZyBj
b3B5KQpAQCAtNTMyLDYgKzUzMiwxMiBAQCBzdWIgQWRkSW5jbHVkZXNGb3JUeXBlCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKKyAgICBpZiAoJHR5cGUgZXEgIlNWR01hdHJpeCIpIHsKKyAgICAg
ICAgJGltcGxJbmNsdWRlc3siQWZmaW5lVHJhbnNmb3JtLmgifSA9IDE7CisgICAgICAgICRpbXBs
SW5jbHVkZXN7IkRPTSR0eXBlLmgifSA9IDE7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAg
ICBpZiAoJHR5cGUgPX4gLyhcdyspKEFic3xSZWwpJC8pIHsKICAgICAgICAgJGltcGxJbmNsdWRl
c3siJDEuaCJ9ID0gMTsKICAgICAgICAgJGltcGxJbmNsdWRlc3siRE9NJHR5cGUuaCJ9ID0gMTsK
QEAgLTk2Nyw3ICs5NzMsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAg
ICAgICAgICRnZXR0ZXJDb250ZW50VGFpbCAuPSAiKV0iOwogICAgICAgICAgICAgfSBlbHNpZiAo
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29udmVydEZyb21T
dHJpbmcifSkgewogICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50VGFpbCAuPSAiLnRvSW50
KCkiOwotICAgICAgICAgICAgfSBlbHNpZiAoJGlkbFR5cGUgZXEgIlJHQkNvbG9yIiBvciAkaWRs
VHlwZSBlcSAiU1ZHUG9pbnQiIG9yICRpZGxUeXBlIGVxICJTVkdSZWN0IiBvciAkaWRsVHlwZSBl
cSAiU1ZHTnVtYmVyIikgeworICAgICAgICAgICAgfSBlbHNpZiAoJGlkbFR5cGUgZXEgIlJHQkNv
bG9yIiBvciAkaWRsVHlwZSBlcSAiU1ZHUG9pbnQiIG9yICRpZGxUeXBlIGVxICJTVkdSZWN0IiBv
ciAkaWRsVHlwZSBlcSAiU1ZHTnVtYmVyIiBvciAkaWRsVHlwZSBlcSAiU1ZHTWF0cml4Iikgewog
ICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50SGVhZCA9ICJbJGF0dHJpYnV0ZVR5cGVTYW5z
UHRyICR0eXBlTWFrZXI6IiAuICRnZXR0ZXJDb250ZW50SGVhZDsKICAgICAgICAgICAgICAgICAk
Z2V0dGVyQ29udGVudFRhaWwgLj0gIl0iOwogICAgICAgICAgICAgfSBlbHNpZiAoJHR5cGVNYWtl
ciBuZSAiIikgewpAQCAtMTE2Miw3ICsxMTY4LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgICMgU3Vycm91
bmQgZ2V0dGVyIHdpdGggVHlwZU1ha2VyCi0gICAgICAgICAgICAgICAgICAgIGlmICgkcmV0dXJu
VHlwZUNsYXNzIGVxICJET01SR0JDb2xvciIgb3IgJHJldHVyblR5cGVDbGFzcyBlcSAiRE9NU1ZH
UG9pbnQiIG9yICRyZXR1cm5UeXBlQ2xhc3MgZXEgIkRPTVNWR1JlY3QiIG9yICRyZXR1cm5UeXBl
Q2xhc3MgZXEgIkRPTVNWR051bWJlciIpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRyZXR1
cm5UeXBlQ2xhc3MgZXEgIkRPTVJHQkNvbG9yIiBvciAkcmV0dXJuVHlwZUNsYXNzIGVxICJET01T
VkdQb2ludCIgb3IgJHJldHVyblR5cGVDbGFzcyBlcSAiRE9NU1ZHUmVjdCIgb3IgJHJldHVyblR5
cGVDbGFzcyBlcSAiRE9NU1ZHTnVtYmVyIiBvciAkcmV0dXJuVHlwZUNsYXNzIGVxICJET01TVkdN
YXRyaXgiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGVudCA9ICJbJHJldHVyblR5
cGVDbGFzcyAkdHlwZU1ha2VyOiIgLiAkY29udGVudCAuICJdIjsKICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICRjb250ZW50ID0gIlskcmV0dXJu
VHlwZUNsYXNzICR0eXBlTWFrZXI6V1RGOjpnZXRQdHIoIiAuICRjb250ZW50IC4gIildIjsKSW5k
ZXg6IFdlYkNvcmUva3N2ZzIvbWlzYy9LU1ZHVGltZVNjaGVkdWxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9rc3ZnMi9taXNjL0tTVkdUaW1lU2NoZWR1bGVyLmNwcAkocmV2aXNpb24gMTgx
NDkpCisrKyBXZWJDb3JlL2tzdmcyL21pc2MvS1NWR1RpbWVTY2hlZHVsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZVRyYW5zZm9ybUVs
ZW1lbnQuaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0LmgiCiAjaW5jbHVkZSAiU1ZHRE9N
SW1wbGVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJTVkdNYXRyaXguaCIKICNpbmNsdWRlICJTVkdO
YW1lcy5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oIgpJbmRleDogV2ViQ29yZS9rc3ZnMi9taXNjL1NWR0lt
YWdlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL21pc2MvU1ZHSW1hZ2VM
b2FkZXIuY3BwCShyZXZpc2lvbiAxODE0OSkKKysrIFdlYkNvcmUva3N2ZzIvbWlzYy9TVkdJbWFn
ZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEwICsyNiw5IEBACiAjaW5jbHVkZSAi
RG9jTG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKIAotI2luY2x1ZGUgIlNWR05hbWVz
LmgiCiAjaW5jbHVkZSAiU1ZHSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoLmgi
Ci0jaW5jbHVkZSAiU1ZHTWF0cml4LmgiCisjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKIAogI2luY2x1
ZGUgIlJlbmRlckltYWdlLmgiCiAKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVU
cmFuc2Zvcm1FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdB
bmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MTQ5KQorKysgV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw3ICsyNiw3IEBACiAKICNpbmNsdWRlICJLU1ZHVGltZVNjaGVkdWxlci5oIgogI2luY2x1
ZGUgIlNWR0FuZ2xlLmgiCi0jaW5jbHVkZSAiU1ZHTWF0cml4LmgiCisjaW5jbHVkZSAiQWZmaW5l
VHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaCIK
ICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtLmgiCkBA
IC0xMzksMTAgKzEzOSwxMCBAQCB2b2lkIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpoYW5k
bGVUCiAgICAgICAgICAgICAgICAgaWYgKCFtX2Zyb21UcmFuc2Zvcm0pCiAgICAgICAgICAgICAg
ICAgICAgIG1fZnJvbVRyYW5zZm9ybSA9IG5ldyBTVkdUcmFuc2Zvcm0oKTsKIAotICAgICAgICAg
ICAgICAgIFNWR01hdHJpeCogYnlNYXRyaXggPSBtX3RvVHJhbnNmb3JtLT5tYXRyaXgoKTsKLSAg
ICAgICAgICAgICAgICBTVkdNYXRyaXgqIGZyb21NYXRyaXggPSBtX2Zyb21UcmFuc2Zvcm0tPm1h
dHJpeCgpOworICAgICAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBieU1hdHJpeCA9IG1fdG9U
cmFuc2Zvcm0tPm1hdHJpeCgpOworICAgICAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBmcm9t
TWF0cml4ID0gbV9mcm9tVHJhbnNmb3JtLT5tYXRyaXgoKTsKIAotICAgICAgICAgICAgICAgIGJ5
TWF0cml4LT5tdWx0aXBseShmcm9tTWF0cml4KTsKKyAgICAgICAgICAgICAgICBieU1hdHJpeCAq
PSBmcm9tTWF0cml4OwogCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBA
IC0xODYsOCArMTg2LDggQEAgdm9pZCBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6aGFuZGxl
VAogICAgICAgICAgICAgaWYgKCF2YWx1ZTEuaXNFbXB0eSgpICYmICF2YWx1ZTIuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICAgICAgYm9vbCBhcHBseSA9IGZhbHNlOwogICAgICAgICAgICAgICAg
IGlmIChtX3RvVHJhbnNmb3JtICYmIG1fZnJvbVRyYW5zZm9ybSkgeyAgICAKLSAgICAgICAgICAg
ICAgICAgICAgcVRvTWF0cml4ID0gbV90b1RyYW5zZm9ybS0+bWF0cml4KCktPm1hdHJpeCgpOwot
ICAgICAgICAgICAgICAgICAgICBxRnJvbU1hdHJpeCA9IG1fZnJvbVRyYW5zZm9ybS0+bWF0cml4
KCktPm1hdHJpeCgpOworICAgICAgICAgICAgICAgICAgICBxVG9NYXRyaXggPSBtX3RvVHJhbnNm
b3JtLT5tYXRyaXgoKTsKKyAgICAgICAgICAgICAgICAgICAgcUZyb21NYXRyaXggPSBtX2Zyb21U
cmFuc2Zvcm0tPm1hdHJpeCgpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAgICAgYXBwbHkgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICB1c2VUaW1lUGVyY2VudGFn
ZSA9IDEuMDsKQEAgLTIwOSwyOCArMjA5LDI4IEBAIHZvaWQgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVs
ZW1lbnQ6OmhhbmRsZVQKICAgICAgICAgICAgIHVzZVRpbWVQZXJjZW50YWdlID0gY2FsY3VsYXRl
UmVsYXRpdmVUaW1lUGVyY2VudGFnZSh0aW1lUGVyY2VudGFnZSwgbV9jdXJyZW50SXRlbSk7CiAg
ICAgfQogCi0gICAgaWYgKG1fdG9UcmFuc2Zvcm0gJiYgbV90b1RyYW5zZm9ybS0+bWF0cml4KCkg
JiYgcVRvTWF0cml4LmlzSWRlbnRpdHkoKSkKLSAgICAgICAgcVRvTWF0cml4ID0gbV90b1RyYW5z
Zm9ybS0+bWF0cml4KCktPm1hdHJpeCgpOworICAgIGlmIChtX3RvVHJhbnNmb3JtICYmIHFUb01h
dHJpeC5pc0lkZW50aXR5KCkpCisgICAgICAgIHFUb01hdHJpeCA9IG1fdG9UcmFuc2Zvcm0tPm1h
dHJpeCgpOwogCi0gICAgaWYgKG1fZnJvbVRyYW5zZm9ybSAmJiBtX2Zyb21UcmFuc2Zvcm0tPm1h
dHJpeCgpICYmIHFGcm9tTWF0cml4LmlzSWRlbnRpdHkoKSkKLSAgICAgICAgcUZyb21NYXRyaXgg
PSBtX2Zyb21UcmFuc2Zvcm0tPm1hdHJpeCgpLT5tYXRyaXgoKTsKLQotICAgIGlmICghbV90cmFu
c2Zvcm1NYXRyaXgpCisgICAgaWYgKG1fZnJvbVRyYW5zZm9ybSAmJiBxRnJvbU1hdHJpeC5pc0lk
ZW50aXR5KCkpCisgICAgICAgIHFGcm9tTWF0cml4ID0gbV9mcm9tVHJhbnNmb3JtLT5tYXRyaXgo
KTsKKy8qCisgICAgaWYgKG1fdHJhbnNmb3JtTWF0cml4KQogICAgICAgICBtX3RyYW5zZm9ybU1h
dHJpeCA9IG5ldyBTVkdNYXRyaXgoKTsKICAgICBlbHNlIHsKLSAgICAgICAgbV90cmFuc2Zvcm1N
YXRyaXgtPnJlc2V0KCk7CisgICAgICAgIG1fdHJhbnNmb3JtTWF0cml4LnJlc2V0KCk7CiAKICAg
ICAgICAgaWYgKGlzQWNjdW11bGF0ZWQoKSAmJiByZXBlYXRpb25zKCkgIT0gMC4wICYmIG1fbGFz
dE1hdHJpeCkKICAgICAgICAgICAgIG1fdHJhbnNmb3JtTWF0cml4LT5tdWx0aXBseShtX2xhc3RN
YXRyaXguZ2V0KCkpOwogICAgIH0KLSAgICAKKyAqLyAgIAogICAgIHN3aXRjaCAobV90eXBlKSB7
CiAgICAgICAgIGNhc2UgU1ZHVHJhbnNmb3JtOjpTVkdfVFJBTlNGT1JNX1RSQU5TTEFURToKICAg
ICAgICAgewogICAgICAgICAgICAgZG91YmxlIGR4ID0gKChxVG9NYXRyaXguZHgoKSAtIHFGcm9t
TWF0cml4LmR4KCkpICogdXNlVGltZVBlcmNlbnRhZ2UpICsgcUZyb21NYXRyaXguZHgoKTsKICAg
ICAgICAgICAgIGRvdWJsZSBkeSA9ICgocVRvTWF0cml4LmR5KCkgLSBxRnJvbU1hdHJpeC5keSgp
KSAqIHVzZVRpbWVQZXJjZW50YWdlKSArIHFGcm9tTWF0cml4LmR5KCk7CiAKLSAgICAgICAgICAg
IG1fdHJhbnNmb3JtTWF0cml4LT50cmFuc2xhdGUoZHgsIGR5KTsKKyAgICAgICAgICAgIG1fdHJh
bnNmb3JtTWF0cml4LnRyYW5zbGF0ZShkeCwgZHkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBTVkdUcmFuc2Zvcm06OlNWR19UUkFOU0ZPUk1fU0NBTEU6CkBA
IC0yMzgsNyArMjM4LDcgQEAgdm9pZCBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6aGFuZGxl
VAogICAgICAgICAgICAgZG91YmxlIHN4ID0gKChxVG9NYXRyaXgubTExKCkgLSBxRnJvbU1hdHJp
eC5tMTEoKSkgKiB1c2VUaW1lUGVyY2VudGFnZSkgKyBxRnJvbU1hdHJpeC5tMTEoKTsKICAgICAg
ICAgICAgIGRvdWJsZSBzeSA9ICgocVRvTWF0cml4Lm0yMigpIC0gcUZyb21NYXRyaXgubTIyKCkp
ICogdXNlVGltZVBlcmNlbnRhZ2UpICsgcUZyb21NYXRyaXgubTIyKCk7CiAKLSAgICAgICAgICAg
IG1fdHJhbnNmb3JtTWF0cml4LT5zY2FsZU5vblVuaWZvcm0oc3gsIHN5KTsKKyAgICAgICAgICAg
IG1fdHJhbnNmb3JtTWF0cml4LnNjYWxlKHN4LCBzeSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIFNWR1RyYW5zZm9ybTo6U1ZHX1RSQU5TRk9STV9ST1RBVEU6
CkBAIC0yNjUsOSArMjY1LDkgQEAgdm9pZCBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6aGFu
ZGxlVAogICAgICAgICAgICAgZG91YmxlIGN4ID0gKHRvQ3ggLSBmcm9tQ3gpICogdXNlVGltZVBl
cmNlbnRhZ2UgKyBmcm9tQ3g7CiAgICAgICAgICAgICBkb3VibGUgY3kgPSAodG9DeSAtIGZyb21D
eSkgKiB1c2VUaW1lUGVyY2VudGFnZSArIGZyb21DeTsKIAotICAgICAgICAgICAgbV90cmFuc2Zv
cm1NYXRyaXgtPnRyYW5zbGF0ZShjeCwgY3kpOwotICAgICAgICAgICAgbV90cmFuc2Zvcm1NYXRy
aXgtPnJvdGF0ZShhbmdsZSk7Ci0gICAgICAgICAgICBtX3RyYW5zZm9ybU1hdHJpeC0+dHJhbnNs
YXRlKC1jeCwgLWN5KTsKKyAgICAgICAgICAgIG1fdHJhbnNmb3JtTWF0cml4LnRyYW5zbGF0ZShj
eCwgY3kpOworICAgICAgICAgICAgbV90cmFuc2Zvcm1NYXRyaXgucm90YXRlKGFuZ2xlKTsKKyAg
ICAgICAgICAgIG1fdHJhbnNmb3JtTWF0cml4LnRyYW5zbGF0ZSgtY3gsIC1jeSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIFNWR1RyYW5zZm9ybTo6U1ZHX1RS
QU5TRk9STV9TS0VXWDoKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIFNWR0FuaW1hdGVUcmFuc2Zv
cm1FbGVtZW50OjpoYW5kbGVUCiAgICAgICAgICAgICBkb3VibGUgc3ggPSAoU1ZHQW5nbGU6OnRv
ZGVnKGF0YW4ocVRvTWF0cml4Lm0yMSgpKSAtIGF0YW4ocUZyb21NYXRyaXgubTIxKCkpKSAqCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgdXNlVGltZVBlcmNlbnRhZ2UpICsgU1ZHQW5nbGU6OnRv
ZGVnKGF0YW4ocUZyb21NYXRyaXgubTIxKCkpKTsKIAotICAgICAgICAgICAgbV90cmFuc2Zvcm1N
YXRyaXgtPnNrZXdYKHN4KTsKKyAgICAgICAgICAgIG1fdHJhbnNmb3JtTWF0cml4LnNoZWFyKHN4
LCAxLik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIFNWR1Ry
YW5zZm9ybTo6U1ZHX1RSQU5TRk9STV9TS0VXWToKQEAgLTI4Myw3ICsyODMsNyBAQCB2b2lkIFNW
R0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpoYW5kbGVUCiAgICAgICAgICAgICBkb3VibGUgc3kg
PSAoU1ZHQW5nbGU6OnRvZGVnKGF0YW4ocVRvTWF0cml4Lm0xMigpKSAtIGF0YW4ocUZyb21NYXRy
aXgubTEyKCkpKSAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlVGltZVBlcmNlbnRhZ2Up
ICsgU1ZHQW5nbGU6OnRvZGVnKGF0YW4ocUZyb21NYXRyaXgubTEyKCkpKTsKIAotICAgICAgICAg
ICAgbV90cmFuc2Zvcm1NYXRyaXgtPnNrZXdZKHN5KTsKKyAgICAgICAgICAgIG1fdHJhbnNmb3Jt
TWF0cml4LnNoZWFyKDEuLCBzeSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBkZWZhdWx0OgpAQCAtMjk1LDEwICsyOTUsMTAgQEAgdm9pZCBTVkdBbmltYXRlVHJhbnNm
b3JtRWxlbWVudDo6aGFuZGxlVAogICAgIHsKICAgICAgICAgaWYgKChtX3JlcGVhdENvdW50ID4g
MCAmJiBtX3JlcGVhdGlvbnMgPCBtX3JlcGVhdENvdW50IC0gMSkgfHwgaXNJbmRlZmluaXRlKG1f
cmVwZWF0Q291bnQpKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2xhc3RNYXRyaXggPSBuZXcg
U1ZHTWF0cml4KCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChtX3RyYW5zZm9ybU1h
dHJpeCkKLSAgICAgICAgICAgICAgICBtX2xhc3RNYXRyaXgtPmNvcHkobV90cmFuc2Zvcm1NYXRy
aXguZ2V0KCkpOworICAgICAgICAgICAgbV9sYXN0TWF0cml4LnJlc2V0KCk7CisKKyAgICAgICAg
ICAgIGlmICghbV90cmFuc2Zvcm1NYXRyaXguaXNJZGVudGl0eSgpKQorICAgICAgICAgICAgICAg
IG1fbGFzdE1hdHJpeCA9IG1fdHJhbnNmb3JtTWF0cml4OwogCiAgICAgICAgICAgICBtX3JlcGVh
dGlvbnMrKzsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTMxNCwxMSArMzE0LDExIEBAIHZvaWQg
U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmhhbmRsZVQKICAgICAgICAgbV9pbml0aWFsVHJh
bnNmb3JtID0gMDsKIAogICAgICAgICBpZiAoIWlzRnJvemVuKCkpIHsKLSAgICAgICAgICAgIFNW
R01hdHJpeCogaW5pdGlhbCA9IGluaXRpYWxNYXRyaXgoKTsKLSAgICAgICAgICAgIGlmIChpbml0
aWFsKQorICAgICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGluaXRpYWwgPSBpbml0aWFsTWF0cml4
KCk7CisgICAgICAgICAgICBpZiAoIWluaXRpYWwuaXNJZGVudGl0eSgpKQogICAgICAgICAgICAg
ICAgIG1fdHJhbnNmb3JtTWF0cml4ID0gaW5pdGlhbDsKICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBtX3RyYW5zZm9ybU1hdHJpeCA9IG5ldyBTVkdNYXRyaXgoKTsKKyAgICAgICAg
ICAgICAgICBtX3RyYW5zZm9ybU1hdHJpeCA9IEFmZmluZVRyYW5zZm9ybSgpOwogICAgICAgICB9
CiAgICAgfQogfQpAQCAtNDM4LDI4ICs0MzgsMjUgQEAgdm9pZCBTVkdBbmltYXRlVHJhbnNmb3Jt
RWxlbWVudDo6Y2FsY3VsYQogICAgIGFuZ2xlID0gMC4wOwogfQogCi1TVkdNYXRyaXgqIFNWR0Fu
aW1hdGVUcmFuc2Zvcm1FbGVtZW50Ojppbml0aWFsTWF0cml4KCkgY29uc3QKK0FmZmluZVRyYW5z
Zm9ybSBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6aW5pdGlhbE1hdHJpeCgpIGNvbnN0CiB7
CiAgICAgaWYgKCF0YXJnZXRFbGVtZW50KCktPmlzU3R5bGVkVHJhbnNmb3JtYWJsZSgpKQotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpOwogICAgIFNW
R1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KiB0cmFuc2Zvcm0gPSBzdGF0aWNfY2FzdDxTVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCo+KHRhcmdldEVsZW1lbnQoKSk7CiAgICAgU1ZHVHJh
bnNmb3JtTGlzdCogdHJhbnNmb3JtTGlzdCA9ICh0cmFuc2Zvcm0gPyB0cmFuc2Zvcm0tPnRyYW5z
Zm9ybUJhc2VWYWx1ZSgpIDogMCk7CiAgICAgaWYgKCF0cmFuc2Zvcm1MaXN0KQotICAgICAgICBy
ZXR1cm4gMDsKLSAgICAKKyAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpOworCiAgICAg
UmVmUHRyPFNWR1RyYW5zZm9ybT4gcmVzdWx0ID0gdHJhbnNmb3JtTGlzdC0+Y29uY2F0ZW5hdGUo
KTsKICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBTVkdNYXRyaXgq
IHJldCA9IHJlc3VsdC0+bWF0cml4KCk7Ci0gICAgcmV0LT5yZWYoKTsKKyAgICAgICAgcmV0dXJu
IEFmZmluZVRyYW5zZm9ybSgpOwogCi0gICAgcmV0dXJuIHJldDsKKyAgICByZXR1cm4gcmVzdWx0
LT5tYXRyaXgoKTsKIH0KIAotU1ZHTWF0cml4KiBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6
dHJhbnNmb3JtTWF0cml4KCkgY29uc3QKK0FmZmluZVRyYW5zZm9ybSBTVkdBbmltYXRlVHJhbnNm
b3JtRWxlbWVudDo6dHJhbnNmb3JtTWF0cml4KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV90cmFu
c2Zvcm1NYXRyaXguZ2V0KCk7CisgICAgcmV0dXJuIG1fdHJhbnNmb3JtTWF0cml4OwogfQogCiB9
CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50
LmgJKHJldmlzaW9uIDE4MTQ5KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZVRyYW5z
Zm9ybUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsOCArNDQsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIFJlZlB0cjxTVkdUcmFuc2Zvcm0+IHBhcnNlVHJhbnNmb3JtVmFs
dWUoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgICAgIHZvaWQgY2FsY3VsYXRlUm90YXRpb25G
cm9tTWF0cml4KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGRvdWJsZSYgYW5nbGUsIGRvdWJsZSYg
Y3gsIGRvdWJsZSYgY3kpIGNvbnN0OwogCi0gICAgICAgIFNWR01hdHJpeCogaW5pdGlhbE1hdHJp
eCgpIGNvbnN0OwotICAgICAgICBTVkdNYXRyaXgqIHRyYW5zZm9ybU1hdHJpeCgpIGNvbnN0Owor
ICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gaW5pdGlhbE1hdHJpeCgpIGNvbnN0OworICAgICAgICBB
ZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtTWF0cml4KCkgY29uc3Q7CiAKICAgICBwcm90ZWN0ZWQ6
CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25z
dCB7IHJldHVybiB0aGlzOyB9CkBAIC01OCw4ICs1OCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgUmVmUHRyPFNWR1RyYW5zZm9ybT4gbV9mcm9tVHJhbnNmb3JtOwogICAgICAgICBS
ZWZQdHI8U1ZHVHJhbnNmb3JtPiBtX2luaXRpYWxUcmFuc2Zvcm07CiAKLSAgICAgICAgUmVmUHRy
PFNWR01hdHJpeD4gbV9sYXN0TWF0cml4OwotICAgICAgICBSZWZQdHI8U1ZHTWF0cml4PiBtX3Ry
YW5zZm9ybU1hdHJpeDsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIG1fbGFzdE1hdHJpeDsKKyAg
ICAgICAgQWZmaW5lVHJhbnNmb3JtIG1fdHJhbnNmb3JtTWF0cml4OwogCiAgICAgICAgIG11dGFi
bGUgYm9vbCBtX3JvdGF0ZVNwZWNpYWxDYXNlIDogMTsKICAgICAgICAgYm9vbCBtX3RvUm90YXRl
U3BlY2lhbENhc2UgOiAxOwpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ2xpcFBhdGhFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDbGlwUGF0aEVsZW1l
bnQuY3BwCShyZXZpc2lvbiAxODE0OSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NsaXBQYXRo
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTVkdIZWxwZXIu
aCIKLSNpbmNsdWRlICJTVkdNYXRyaXguaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1
ZGUgIlNWR1VuaXRUeXBlcy5oIgogI2luY2x1ZGUgImNzc3N0eWxlc2VsZWN0b3IuaCIKQEAgLTg4
LDcgKzg3LDcgQEAgU1ZHUmVzb3VyY2UqIFNWR0NsaXBQYXRoRWxlbWVudDo6Y2FudmFzUgogICAg
ICAgICAgICAgUmVuZGVyU3R5bGUqIHBhdGhTdHlsZSA9IGRvY3VtZW50KCktPnN0eWxlU2VsZWN0
b3IoKS0+c3R5bGVGb3JFbGVtZW50KHN0eWxlZCwgY2xpcFBhdGhTdHlsZSk7CiAgICAgICAgICAg
ICBQYXRoIHBhdGhEYXRhID0gc3R5bGVkLT50b1BhdGhEYXRhKCk7CiAgICAgICAgICAgICBpZiAo
ZS0+aXNTdHlsZWRUcmFuc2Zvcm1hYmxlKCkpCi0gICAgICAgICAgICAgICAgcGF0aERhdGEudHJh
bnNmb3JtKHN0YXRpY19jYXN0PFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Kj4oZSktPmxv
Y2FsTWF0cml4KCktPm1hdHJpeCgpKTsKKyAgICAgICAgICAgICAgICBwYXRoRGF0YS50cmFuc2Zv
cm0oc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQqPihlKS0+bG9jYWxN
YXRyaXgoKSk7CiAgICAgICAgICAgICBpZiAoIXBhdGhEYXRhLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgICAgICBtX2NsaXBwZXItPmFkZENsaXBEYXRhKHBhdGhEYXRhLCBwYXRoU3R5bGUtPnN2Z1N0
eWxlKCktPmNsaXBSdWxlKCksIGJib3gpOwogICAgICAgICAgICAgcGF0aFN0eWxlLT5kZXJlZih2
aWV3KCktPnJlbmRlckFyZW5hKCkpOwpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRml0VG9W
aWV3Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaXRUb1ZpZXdC
b3guY3BwCShyZXZpc2lvbiAxODE0OSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZpdFRvVmll
d0JveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDExICs4MiwxMSBAQCBiYWlsX291dDo7CiAg
ICAgLy8gRklYTUU6IFBlciB0aGUgc3BlYyB3ZSBhcmUgc3VwcG9zZWQgdG8gc2V0IHRoZSBkb2N1
bWVudCBpbnRvIGFuICJlcnJvciBzdGF0ZSIgaGVyZS4KIH0KIAotU1ZHTWF0cml4KiBTVkdGaXRU
b1ZpZXdCb3g6OnZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0oZmxvYXQgdmlld1dpZHRoLCBmbG9hdCB2
aWV3SGVpZ2h0KSBjb25zdAorQWZmaW5lVHJhbnNmb3JtIFNWR0ZpdFRvVmlld0JveDo6dmlld0Jv
eFRvVmlld1RyYW5zZm9ybShmbG9hdCB2aWV3V2lkdGgsIGZsb2F0IHZpZXdIZWlnaHQpIGNvbnN0
CiB7CiAgICAgRmxvYXRSZWN0IHZpZXdCb3hSZWN0ID0gdmlld0JveCgpOwogICAgIGlmICghdmll
d0JveFJlY3Qud2lkdGgoKSB8fCAhdmlld0JveFJlY3QuaGVpZ2h0KCkpCi0gICAgICAgIHJldHVy
biBTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdNYXRyaXgoKTsKKyAgICAgICAgcmV0dXJuIEFmZmlu
ZVRyYW5zZm9ybSgpOwogCiAgICAgcmV0dXJuIHByZXNlcnZlQXNwZWN0UmF0aW8oKS0+Z2V0Q1RN
KHZpZXdCb3hSZWN0LngoKSwKICAgICAgICAgICAgIHZpZXdCb3hSZWN0LnkoKSwgdmlld0JveFJl
Y3Qud2lkdGgoKSwgdmlld0JveFJlY3QuaGVpZ2h0KCksCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdGaXRUb1ZpZXdCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdG
aXRUb1ZpZXdCb3guaAkocmV2aXNpb24gMTgxNDkpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdG
aXRUb1ZpZXdCb3guaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQXR0cmlidXRlOwotICAgIGNsYXNzIFNWR01hdHJpeDsK
KyAgICBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiAgICAgY2xhc3MgU1ZHUHJlc2VydmVBc3BlY3RS
YXRpbzsKICAgICBjbGFzcyBTdHJpbmdJbXBsOwogCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgICAgICAvLyAnU1ZHRml0VG9WaWV3Qm94JyBmdW5jdGlvbnMKICAg
ICAgICAgdm9pZCBwYXJzZVZpZXdCb3goY29uc3QgU3RyaW5nJik7Ci0gICAgICAgIFNWR01hdHJp
eCogdmlld0JveFRvVmlld1RyYW5zZm9ybShmbG9hdCB2aWV3V2lkdGgsIGZsb2F0IHZpZXdIZWln
aHQpIGNvbnN0OworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdmlld0JveFRvVmlld1RyYW5zZm9y
bShmbG9hdCB2aWV3V2lkdGgsIGZsb2F0IHZpZXdIZWlnaHQpIGNvbnN0OwogCiAgICAgICAgIGJv
b2wgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CiAKSW5kZXg6IFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR0xlbmd0aExpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR0xlbmd0aExpc3QuY3BwCShyZXZpc2lvbiAxODE0OSkKKysrIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR0xlbmd0aExpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw2IEBA
CiAKICNpZmRlZiBTVkdfU1VQUE9SVAogI2luY2x1ZGUgIlNWR0xlbmd0aExpc3QuaCIKLSNpbmNs
dWRlICJTVkdNYXRyaXguaCIKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGluZWFyR3JhZGll
bnRFbGVtZW50LmNwcAkocmV2aXNpb24gMTgxNDkpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdM
aW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBA
CiAjaW5jbHVkZSAiU1ZHUGFpbnRTZXJ2ZXJMaW5lYXJHcmFkaWVudC5oIgogI2luY2x1ZGUgIlNW
R0hlbHBlci5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgotI2luY2x1ZGUgIlNWR01hdHJpeC5o
IgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtLmgiCiAjaW5j
bHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgpAQCAtODgsNyArODcsNyBAQCB2b2lkIFNWR0xpbmVh
ckdyYWRpZW50RWxlbWVudDo6YnVpbGRHcmFkCiAgICAgUmVmUHRyPFNWR1BhaW50U2VydmVyTGlu
ZWFyR3JhZGllbnQ+IGdyYWQgPSBXVEY6OnN0YXRpY19wb2ludGVyX2Nhc3Q8U1ZHUGFpbnRTZXJ2
ZXJMaW5lYXJHcmFkaWVudD4oX2dyYWQpOwogICAgIEFmZmluZVRyYW5zZm9ybSBtYXQ7CiAgICAg
aWYgKGdyYWRpZW50VHJhbnNmb3JtKCktPm51bWJlck9mSXRlbXMoKSA+IDApCi0gICAgICAgIG1h
dCA9IGdyYWRpZW50VHJhbnNmb3JtKCktPmNvbnNvbGlkYXRlKCktPm1hdHJpeCgpLT5tYXRyaXgo
KTsKKyAgICAgICAgbWF0ID0gZ3JhZGllbnRUcmFuc2Zvcm0oKS0+Y29uc29saWRhdGUoKS0+bWF0
cml4KCk7CiAKICAgICBEZXByZWNhdGVkU3RyaW5nIHJlZiA9IGhyZWYoKS5kZXByZWNhdGVkU3Ry
aW5nKCk7CiAgICAgUmVmUHRyPFNWR1BhaW50U2VydmVyPiBwc2VydmVyID0gZ2V0UGFpbnRTZXJ2
ZXJCeUlkKGRvY3VtZW50KCksIHJlZi5taWQoMSkpOwpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHTG9jYXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMb2Nh
dGFibGUuY3BwCShyZXZpc2lvbiAxODE0OSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xvY2F0
YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDggKzI0LDkgQEAKICNpZmRlZiBTVkdfU1VQ
UE9SVAogI2luY2x1ZGUgIlNWR0xvY2F0YWJsZS5oIgogCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNm
b3JtLmgiCiAjaW5jbHVkZSAiUmVuZGVyUGF0aC5oIgotI2luY2x1ZGUgIlNWR01hdHJpeC5oIgor
I2luY2x1ZGUgIlNWR0V4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODgsNTcgKzg5LDU2IEBAIEZsb2F0UmVjdCBTVkdMb2Nh
dGFibGU6OmdldEJCb3goY29uc3QgU1YKICAgICByZXR1cm4gYmJveFJlY3Q7CiB9CiAKLVNWR01h
dHJpeCogU1ZHTG9jYXRhYmxlOjpnZXRDVE0oY29uc3QgU1ZHRWxlbWVudCogZWxlbWVudCkKK0Fm
ZmluZVRyYW5zZm9ybSBTVkdMb2NhdGFibGU6OmdldENUTShjb25zdCBTVkdFbGVtZW50KiBlbGVt
ZW50KQogewogICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJl
dHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsKIAotICAgIFNWR01hdHJpeCogY3RtID0gU1ZHU1ZHRWxl
bWVudDo6Y3JlYXRlU1ZHTWF0cml4KCk7CisgICAgQWZmaW5lVHJhbnNmb3JtIGN0bTsKIAogICAg
IE5vZGUqIHBhcmVudCA9IGVsZW1lbnQtPnBhcmVudE5vZGUoKTsKICAgICBpZiAocGFyZW50ICYm
IHBhcmVudC0+aXNFbGVtZW50Tm9kZSgpKSB7CiAgICAgICAgIFNWR0VsZW1lbnQqIHBhcmVudEVs
ZW1lbnQgPSBzdmdfZHluYW1pY19jYXN0KHBhcmVudCk7CiAgICAgICAgIGlmIChwYXJlbnRFbGVt
ZW50ICYmIHBhcmVudEVsZW1lbnQtPmlzU3R5bGVkTG9jYXRhYmxlKCkpIHsKLSAgICAgICAgICAg
IFJlZlB0cjxTVkdNYXRyaXg+IHBhcmVudENUTSA9IHN0YXRpY19jYXN0PFNWR1N0eWxlZExvY2F0
YWJsZUVsZW1lbnQqPihwYXJlbnRFbGVtZW50KS0+Z2V0Q1RNKCk7Ci0gICAgICAgICAgICBjdG0t
Pm11bHRpcGx5KHBhcmVudENUTS5nZXQoKSk7CisgICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0g
cGFyZW50Q1RNID0gc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudCo+KHBhcmVu
dEVsZW1lbnQpLT5nZXRDVE0oKTsKKyAgICAgICAgICAgIGN0bSA9IHBhcmVudENUTSAqIGN0bTsK
ICAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBjdG07CiB9CiAKLVNWR01hdHJpeCogU1ZH
TG9jYXRhYmxlOjpnZXRTY3JlZW5DVE0oY29uc3QgU1ZHRWxlbWVudCogZWxlbWVudCkKK0FmZmlu
ZVRyYW5zZm9ybSBTVkdMb2NhdGFibGU6OmdldFNjcmVlbkNUTShjb25zdCBTVkdFbGVtZW50KiBl
bGVtZW50KQogewogICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsKIAotICAgIFNWR01hdHJpeCogY3RtID0gU1ZHU1ZH
RWxlbWVudDo6Y3JlYXRlU1ZHTWF0cml4KCk7CisgICAgQWZmaW5lVHJhbnNmb3JtIGN0bTsKIAog
ICAgIE5vZGUqIHBhcmVudCA9IGVsZW1lbnQtPnBhcmVudE5vZGUoKTsKICAgICBpZiAocGFyZW50
ICYmIHBhcmVudC0+aXNFbGVtZW50Tm9kZSgpKSB7CiAgICAgICAgIFNWR0VsZW1lbnQqIHBhcmVu
dEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4ocGFyZW50KTsKICAgICAgICAgaWYg
KHBhcmVudEVsZW1lbnQtPmlzU3R5bGVkTG9jYXRhYmxlKCkpIHsKLSAgICAgICAgICAgIFJlZlB0
cjxTVkdNYXRyaXg+IHBhcmVudENUTSA9IHN0YXRpY19jYXN0PFNWR1N0eWxlZExvY2F0YWJsZUVs
ZW1lbnQqPihwYXJlbnRFbGVtZW50KS0+Z2V0U2NyZWVuQ1RNKCk7Ci0gICAgICAgICAgICBjdG0t
Pm11bHRpcGx5KHBhcmVudENUTS5nZXQoKSk7CisgICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0g
cGFyZW50Q1RNID0gc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudCo+KHBhcmVu
dEVsZW1lbnQpLT5nZXRTY3JlZW5DVE0oKTsKKyAgICAgICAgICAgIGN0bSA9IHBhcmVudENUTSAq
IGN0bTsKICAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBjdG07CiB9CiAKLVNWR01hdHJp
eCogU1ZHTG9jYXRhYmxlOjpnZXRUcmFuc2Zvcm1Ub0VsZW1lbnQoU1ZHRWxlbWVudCogdGFyZ2V0
LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKK0FmZmluZVRyYW5zZm9ybSBTVkdMb2NhdGFibGU6
OmdldFRyYW5zZm9ybVRvRWxlbWVudChTVkdFbGVtZW50KiB0YXJnZXQsIEV4Y2VwdGlvbkNvZGUm
IGVjKSBjb25zdAogewotICAgIFJlZlB0cjxTVkdNYXRyaXg+IHN0YXJ0Y3RtKGdldENUTSgpKTsK
LSAgICBTVkdNYXRyaXgqIGN0bSA9IFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR01hdHJpeCgpOwot
ICAgIGN0bS0+bXVsdGlwbHkoc3RhcnRjdG0uZ2V0KCkpOworICAgIEFmZmluZVRyYW5zZm9ybSBj
dG0gPSBnZXRDVE0oKTsKIAogICAgIFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSBzdmdfZHlu
YW1pY19jYXN0KHRhcmdldCk7CiAgICAgaWYgKHRhcmdldEVsZW1lbnQgJiYgdGFyZ2V0RWxlbWVu
dC0+aXNTdHlsZWRMb2NhdGFibGUoKSkgewotICAgICAgICBSZWZQdHI8U1ZHTWF0cml4PiB0YXJn
ZXRDVE0gPSBzdGF0aWNfY2FzdDxTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50Kj4odGFyZ2V0RWxl
bWVudCktPmdldENUTSgpOwotICAgICAgICB0YXJnZXRDVE0uZ2V0KCktPmludmVyc2UoZWMpOwot
ICAgICAgICBpZiAoZWMpCisgICAgICAgIEFmZmluZVRyYW5zZm9ybSB0YXJnZXRDVE0gPSBzdGF0
aWNfY2FzdDxTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50Kj4odGFyZ2V0RWxlbWVudCktPmdldENU
TSgpOworICAgICAgICBpZiAoIXRhcmdldENUTS5pc0ludmVydGlibGUoKSkgeworICAgICAgICAg
ICAgZWMgPSBTVkdfTUFUUklYX05PVF9JTlZFUlRBQkxFOwogICAgICAgICAgICAgcmV0dXJuIGN0
bTsKLSAgICAgICAgY3RtLT5wb3N0TXVsdGlwbHkodGFyZ2V0Q1RNLmdldCgpKTsKKyAgICAgICAg
fQorICAgICAgICBjdG0gKj0gdGFyZ2V0Q1RNLmludmVydCgpOwogICAgIH0KIAogICAgIHJldHVy
biBjdG07CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMb2NhdGFibGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMb2NhdGFibGUuaAkocmV2aXNpb24gMTgxNDkpCisr
KyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMb2NhdGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjks
OSArMjksOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyAgICBjbGFzcyBBZmZpbmVUcmFu
c2Zvcm07CiAgICAgY2xhc3MgRmxvYXRSZWN0OwogICAgIGNsYXNzIFNWR0VsZW1lbnQ7Ci0gICAg
Y2xhc3MgU1ZHTWF0cml4OwogICAgIGNsYXNzIFNWR1N0eWxlZEVsZW1lbnQ7CiAKICAgICBjbGFz
cyBTVkdMb2NhdGFibGUgewpAQCAtNDQsMTYgKzQ0LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCBTVkdFbGVtZW50KiBmYXJ0aGVzdFZpZXdwb3J0RWxlbWVudCgpIGNv
bnN0ID0gMDsKIAogICAgICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBnZXRCQm94KCkgY29uc3QgPSAw
OwotICAgICAgICB2aXJ0dWFsIFNWR01hdHJpeCogZ2V0Q1RNKCkgY29uc3QgPSAwOwotICAgICAg
ICB2aXJ0dWFsIFNWR01hdHJpeCogZ2V0U2NyZWVuQ1RNKCkgY29uc3QgPSAwOwotICAgICAgICBT
VkdNYXRyaXgqIGdldFRyYW5zZm9ybVRvRWxlbWVudChTVkdFbGVtZW50KiwgRXhjZXB0aW9uQ29k
ZSYpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBnZXRDVE0oKSBjb25z
dCA9IDA7CisgICAgICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGdldFNjcmVlbkNUTSgpIGNv
bnN0ID0gMDsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGdldFRyYW5zZm9ybVRvRWxlbWVudChT
VkdFbGVtZW50KiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogCiAgICAgcHJvdGVjdGVkOgogICAg
ICAgICBzdGF0aWMgU1ZHRWxlbWVudCogbmVhcmVzdFZpZXdwb3J0RWxlbWVudChjb25zdCBTVkdT
dHlsZWRFbGVtZW50Kik7CiAgICAgICAgIHN0YXRpYyBTVkdFbGVtZW50KiBmYXJ0aGVzdFZpZXdw
b3J0RWxlbWVudChjb25zdCBTVkdTdHlsZWRFbGVtZW50Kik7CiAgICAgICAgIHN0YXRpYyBGbG9h
dFJlY3QgZ2V0QkJveChjb25zdCBTVkdTdHlsZWRFbGVtZW50Kik7Ci0gICAgICAgIHN0YXRpYyBT
VkdNYXRyaXgqIGdldENUTShjb25zdCBTVkdFbGVtZW50Kik7Ci0gICAgICAgIHN0YXRpYyBTVkdN
YXRyaXgqIGdldFNjcmVlbkNUTShjb25zdCBTVkdFbGVtZW50Kik7CisgICAgICAgIHN0YXRpYyBB
ZmZpbmVUcmFuc2Zvcm0gZ2V0Q1RNKGNvbnN0IFNWR0VsZW1lbnQqKTsKKyAgICAgICAgc3RhdGlj
IEFmZmluZVRyYW5zZm9ybSBnZXRTY3JlZW5DVE0oY29uc3QgU1ZHRWxlbWVudCopOwogICAgIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01h
cmtlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hcmtl
ckVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODE0OSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01h
cmtlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVk
ZSAiU1ZHRml0VG9WaWV3Qm94LmgiCiAjaW5jbHVkZSAiU1ZHSGVscGVyLmgiCiAjaW5jbHVkZSAi
U1ZHTGVuZ3RoLmgiCi0jaW5jbHVkZSAiU1ZHTWF0cml4LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMu
aCIKICNpbmNsdWRlICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCiAjaW5jbHVkZSAiU1ZHU1ZH
RWxlbWVudC5oIgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWF0cml4LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXRyaXguY3BwCShyZXZpc2lvbiAxODE0OSkK
KysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hdHJpeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
MzA1ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmlt
bWVybWFubiA8d2lsZGZveEBrZGUub3JnPgotICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSBS
b2IgQnVpcyA8YnVpc0BrZGUub3JnPgotCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtE
RSBwcm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAg
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0g
ICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCi0gICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBV
U0EuCi0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaWZkZWYgU1ZHX1NVUFBPUlQKLSNpbmNs
dWRlICJTVkdNYXRyaXguaCIKLQotI2luY2x1ZGUgIlNWR0FuZ2xlLmgiCi0jaW5jbHVkZSAiU1ZH
RXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiU1ZHSGVscGVyLmgiCi0jaW5jbHVkZSA8bWF0aC5oPgot
Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotU1ZHTWF0cml4OjpTVkdNYXRyaXgoKSA6IFNo
YXJlZDxTVkdNYXRyaXg+KCkKLXsKLX0KLQotU1ZHTWF0cml4OjpTVkdNYXRyaXgoY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBtYXQpCi0gICAgOiBTaGFyZWQ8U1ZHTWF0cml4PigpCi0gICAgLCBtX21h
dChtYXQpCi17Ci19Ci0KLVNWR01hdHJpeDo6U1ZHTWF0cml4KGRvdWJsZSBhLCBkb3VibGUgYiwg
ZG91YmxlIGMsIGRvdWJsZSBkLCBkb3VibGUgZSwgZG91YmxlIGYpIDogU2hhcmVkPFNWR01hdHJp
eD4oKQotewotICAgIG1fbWF0LnNldE1hdHJpeChhLCBiLCBjLCBkLCBlLCBmKTsKLX0KLQotU1ZH
TWF0cml4Ojp+U1ZHTWF0cml4KCkKLXsKLX0KLQotdm9pZCBTVkdNYXRyaXg6OnNldEEoZG91Ymxl
IGEpCi17Ci0gICAgbV9tYXQuc2V0TWF0cml4KGEsIG1fbWF0Lm0xMigpLCBtX21hdC5tMjEoKSwg
bV9tYXQubTIyKCksIG1fbWF0LmR4KCksIG1fbWF0LmR5KCkpOwotfQotCi1kb3VibGUgU1ZHTWF0
cml4OjphKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9tYXQubTExKCk7Ci19Ci0KLXZvaWQgU1ZH
TWF0cml4OjpzZXRCKGRvdWJsZSBiKQotewotICAgIG1fbWF0LnNldE1hdHJpeChtX21hdC5tMTEo
KSwgYiwgbV9tYXQubTIxKCksIG1fbWF0Lm0yMigpLCBtX21hdC5keCgpLCBtX21hdC5keSgpKTsK
LX0KLQotZG91YmxlIFNWR01hdHJpeDo6YigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbWF0Lm0x
MigpOwotfQotCi12b2lkIFNWR01hdHJpeDo6c2V0Qyhkb3VibGUgYykKLXsKLSAgICBtX21hdC5z
ZXRNYXRyaXgobV9tYXQubTExKCksIG1fbWF0Lm0xMigpLCBjLCBtX21hdC5tMjIoKSwgbV9tYXQu
ZHgoKSwgbV9tYXQuZHkoKSk7Ci19Ci0KLWRvdWJsZSBTVkdNYXRyaXg6OmMoKSBjb25zdAotewot
ICAgIHJldHVybiBtX21hdC5tMjEoKTsKLX0KLQotdm9pZCBTVkdNYXRyaXg6OnNldEQoZG91Ymxl
IGQpCi17Ci0gICAgbV9tYXQuc2V0TWF0cml4KG1fbWF0Lm0xMSgpLCBtX21hdC5tMTIoKSwgbV9t
YXQubTIxKCksIGQsIG1fbWF0LmR4KCksIG1fbWF0LmR5KCkpOwotfQotCi1kb3VibGUgU1ZHTWF0
cml4OjpkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9tYXQubTIyKCk7Ci19Ci0KLXZvaWQgU1ZH
TWF0cml4OjpzZXRFKGRvdWJsZSBlKQotewotICAgIG1fbWF0LnNldE1hdHJpeChtX21hdC5tMTEo
KSwgbV9tYXQubTEyKCksIG1fbWF0Lm0yMSgpLCBtX21hdC5tMjIoKSwgZSwgbV9tYXQuZHkoKSk7
Ci19Ci0KLWRvdWJsZSBTVkdNYXRyaXg6OmUoKSBjb25zdAotewotICAgIHJldHVybiBtX21hdC5k
eCgpOwotfQotCi12b2lkIFNWR01hdHJpeDo6c2V0Rihkb3VibGUgZikKLXsKLSAgICBtX21hdC5z
ZXRNYXRyaXgobV9tYXQubTExKCksIG1fbWF0Lm0xMigpLCBtX21hdC5tMjEoKSwgbV9tYXQubTIy
KCksIG1fbWF0LmR4KCksIGYpOwotfQotCi1kb3VibGUgU1ZHTWF0cml4OjpmKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9tYXQuZHkoKTsKLX0KLQotdm9pZCBTVkdNYXRyaXg6OmNvcHkoY29uc3Qg
U1ZHTWF0cml4KiBvdGhlcikKLXsKLSAgICBtX21hdC5zZXRNYXRyaXgob3RoZXItPm1fbWF0Lm0x
MSgpLCBvdGhlci0+bV9tYXQubTEyKCksIG90aGVyLT5tX21hdC5tMjEoKSwgb3RoZXItPm1fbWF0
Lm0yMigpLCBvdGhlci0+bV9tYXQuZHgoKSwgb3RoZXItPm1fbWF0LmR5KCkpOwotfQotCi1TVkdN
YXRyaXgqIFNWR01hdHJpeDo6cG9zdE11bHRpcGx5KGNvbnN0IFNWR01hdHJpeCogc2Vjb25kTWF0
cml4KQotewotICAgIEFmZmluZVRyYW5zZm9ybSB0ZW1wKHNlY29uZE1hdHJpeC0+YSgpLCBzZWNv
bmRNYXRyaXgtPmIoKSwgc2Vjb25kTWF0cml4LT5jKCksIHNlY29uZE1hdHJpeC0+ZCgpLCBzZWNv
bmRNYXRyaXgtPmUoKSwgc2Vjb25kTWF0cml4LT5mKCkpOwotICAgIG1fbWF0ICo9IHRlbXA7Ci0g
ICAgcmV0dXJuIHRoaXM7Ci19Ci0KLVNWR01hdHJpeCogU1ZHTWF0cml4OjppbnZlcnNlKEV4Y2Vw
dGlvbkNvZGUmIGVjKQotewotICAgIGlmICghbV9tYXQuaXNJbnZlcnRpYmxlKCkpCi0gICAgICAg
IGVjID0gU1ZHX01BVFJJWF9OT1RfSU5WRVJUQUJMRTsKLSAgICBtX21hdCA9IG1fbWF0LmludmVy
dCgpOwotICAgIHJldHVybiB0aGlzOwotfQotCi1TVkdNYXRyaXgqIFNWR01hdHJpeDo6cG9zdFRy
YW5zbGF0ZShkb3VibGUgeCwgIGRvdWJsZSB5KQotewotICAgIC8vIENvdWxkIG9wdGltaXNlIHRo
ZXNlLgotICAgIEFmZmluZVRyYW5zZm9ybSB0ZW1wOwotICAgIHRlbXAudHJhbnNsYXRlKHgsIHkp
OwotICAgIG1fbWF0ICo9IHRlbXA7Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0KLVNWR01hdHJpeCog
U1ZHTWF0cml4Ojpwb3N0U2NhbGUoZG91YmxlIHNjYWxlRmFjdG9yKQotewotICAgIEFmZmluZVRy
YW5zZm9ybSB0ZW1wOwotICAgIHRlbXAuc2NhbGUoc2NhbGVGYWN0b3IsIHNjYWxlRmFjdG9yKTsK
LSAgICBtX21hdCAqPSB0ZW1wOwotICAgIHJldHVybiB0aGlzOwotfQotCi1TVkdNYXRyaXgqIFNW
R01hdHJpeDo6cG9zdFNjYWxlTm9uVW5pZm9ybShkb3VibGUgc2NhbGVGYWN0b3JYLCBkb3VibGUg
c2NhbGVGYWN0b3JZKQotewotICAgIEFmZmluZVRyYW5zZm9ybSB0ZW1wOwotICAgIHRlbXAuc2Nh
bGUoc2NhbGVGYWN0b3JYLCBzY2FsZUZhY3RvclkpOwotICAgIG1fbWF0ICo9IHRlbXA7Ci0gICAg
cmV0dXJuIHRoaXM7Ci19Ci0KLVNWR01hdHJpeCogU1ZHTWF0cml4Ojpwb3N0Um90YXRlKGRvdWJs
ZSBhbmdsZSkKLXsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gdGVtcDsKLSAgICB0ZW1wLnJvdGF0ZShh
bmdsZSk7Ci0gICAgbV9tYXQgKj0gdGVtcDsKLSAgICByZXR1cm4gdGhpczsKLX0KLQotU1ZHTWF0
cml4KiBTVkdNYXRyaXg6OnBvc3RSb3RhdGVGcm9tVmVjdG9yKGRvdWJsZSB4LCBkb3VibGUgeSkK
LXsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gdGVtcDsKLSAgICB0ZW1wLnJvdGF0ZShTVkdBbmdsZTo6
dG9kZWcoYXRhbjIoeSwgeCkpKTsKLSAgICBtX21hdCAqPSB0ZW1wOwotICAgIHJldHVybiB0aGlz
OwotfQotCi1TVkdNYXRyaXgqIFNWR01hdHJpeDo6cG9zdEZsaXBYKCkKLXsKLSAgICBBZmZpbmVU
cmFuc2Zvcm0gdGVtcCgtMS4wRiwgMC4wRiwgMC4wRiwgMS4wRiwgMC4wRiwgMC4wRik7Ci0gICAg
bV9tYXQgKj0gdGVtcDsKLSAgICByZXR1cm4gdGhpczsKLX0KLQotU1ZHTWF0cml4KiBTVkdNYXRy
aXg6OnBvc3RGbGlwWSgpCi17Ci0gICAgQWZmaW5lVHJhbnNmb3JtIHRlbXAoMS4wRiwgMC4wRiwg
MC4wRiwgLTEuMEYsIDAuMEYsIDAuMEYpOwotICAgIG1fbWF0ICo9IHRlbXA7Ci0gICAgcmV0dXJu
IHRoaXM7Ci19Ci0KLVNWR01hdHJpeCogU1ZHTWF0cml4Ojpwb3N0U2tld1goZG91YmxlIGFuZ2xl
KQotewotICAgIEFmZmluZVRyYW5zZm9ybSB0ZW1wOwotICAgIHRlbXAuc2hlYXIodGFuKFNWR0Fu
Z2xlOjp0b3JhZChhbmdsZSkpLCAwLjBGKTsKLSAgICBtX21hdCAqPSB0ZW1wOwotICAgIHJldHVy
biB0aGlzOwotfQotCi1TVkdNYXRyaXgqIFNWR01hdHJpeDo6cG9zdFNrZXdZKGRvdWJsZSBhbmds
ZSkKLXsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gdGVtcDsKLSAgICB0ZW1wLnNoZWFyKDAuMEYsIHRh
bihTVkdBbmdsZTo6dG9yYWQoYW5nbGUpKSk7Ci0gICAgbV9tYXQgKj0gdGVtcDsKLSAgICByZXR1
cm4gdGhpczsKLX0KLQotU1ZHTWF0cml4KiBTVkdNYXRyaXg6Om11bHRpcGx5KGNvbnN0IFNWR01h
dHJpeCogc2Vjb25kTWF0cml4KQotewotICAgIEFmZmluZVRyYW5zZm9ybSB0ZW1wKHNlY29uZE1h
dHJpeC0+YSgpLCBzZWNvbmRNYXRyaXgtPmIoKSwgc2Vjb25kTWF0cml4LT5jKCksIHNlY29uZE1h
dHJpeC0+ZCgpLCBzZWNvbmRNYXRyaXgtPmUoKSwgc2Vjb25kTWF0cml4LT5mKCkpOwotICAgIHRl
bXAgKj0gbV9tYXQ7Ci0gICAgbV9tYXQgPSB0ZW1wOwotICAgIHJldHVybiB0aGlzOwotfQotCi1T
VkdNYXRyaXgqIFNWR01hdHJpeDo6dHJhbnNsYXRlKGRvdWJsZSB4LCAgZG91YmxlIHkpCi17Ci0g
ICAgbV9tYXQudHJhbnNsYXRlKHgsIHkpOwotICAgIHJldHVybiB0aGlzOwotfQotCi1TVkdNYXRy
aXgqIFNWR01hdHJpeDo6c2NhbGUoZG91YmxlIHNjYWxlRmFjdG9yKQotewotICAgIG1fbWF0LnNj
YWxlKHNjYWxlRmFjdG9yLCBzY2FsZUZhY3Rvcik7Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0KLVNW
R01hdHJpeCogU1ZHTWF0cml4OjpzY2FsZU5vblVuaWZvcm0oZG91YmxlIHNjYWxlRmFjdG9yWCwg
ZG91YmxlIHNjYWxlRmFjdG9yWSkKLXsKLSAgICBtX21hdC5zY2FsZShzY2FsZUZhY3RvclgsIHNj
YWxlRmFjdG9yWSk7Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0KLVNWR01hdHJpeCogU1ZHTWF0cml4
Ojpyb3RhdGUoZG91YmxlIGFuZ2xlKQotewotICAgIG1fbWF0LnJvdGF0ZShhbmdsZSk7Ci0gICAg
cmV0dXJuIHRoaXM7Ci19Ci0KLVNWR01hdHJpeCogU1ZHTWF0cml4Ojpyb3RhdGVGcm9tVmVjdG9y
KGRvdWJsZSB4LCBkb3VibGUgeSwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKHggPT0g
MCB8fCB5ID09IDApIHsKLSAgICAgICAgZWMgPSBTVkdfSU5WQUxJRF9WQUxVRV9FUlI7Ci0gICAg
ICAgIHJldHVybiB0aGlzOwotICAgIH0KLSAgICBtX21hdC5yb3RhdGUoU1ZHQW5nbGU6OnRvZGVn
KGF0YW4yKHksIHgpKSk7Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0KLVNWR01hdHJpeCogU1ZHTWF0
cml4OjpmbGlwWCgpCi17Ci0gICAgbV9tYXQuc2NhbGUoLTEuMGYsIDEuMGYpOwotICAgIHJldHVy
biB0aGlzOwotfQotCi1TVkdNYXRyaXgqIFNWR01hdHJpeDo6ZmxpcFkoKQotewotICAgIG1fbWF0
LnNjYWxlKDEuMGYsIC0xLjBmKTsKLSAgICByZXR1cm4gdGhpczsKLX0KLQotU1ZHTWF0cml4KiBT
VkdNYXRyaXg6OnNrZXdYKGRvdWJsZSBhbmdsZSkKLXsKLSAgICBtX21hdC5zaGVhcih0YW4oU1ZH
QW5nbGU6OnRvcmFkKGFuZ2xlKSksIDAuMEYpOwotICAgIHJldHVybiB0aGlzOwotfQotCi1TVkdN
YXRyaXgqIFNWR01hdHJpeDo6c2tld1koZG91YmxlIGFuZ2xlKQotewotICAgIG1fbWF0LnNoZWFy
KDAuMEYsIHRhbihTVkdBbmdsZTo6dG9yYWQoYW5nbGUpKSk7Ci0gICAgcmV0dXJuIHRoaXM7Ci19
Ci0KLXZvaWQgU1ZHTWF0cml4OjpzZXRNYXRyaXgoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBtYXQp
Ci17Ci0gICAgbV9tYXQgPSBtYXQ7Ci19Ci0KLUFmZmluZVRyYW5zZm9ybSYgU1ZHTWF0cml4Ojpt
YXRyaXgoKQotewotICAgIHJldHVybiBtX21hdDsKLX0KLQotY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBTVkdNYXRyaXg6Om1hdHJpeCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbWF0OwotfQotCi12
b2lkIFNWR01hdHJpeDo6cmVzZXQoKQotewotICAgIG1fbWF0LnJlc2V0KCk7Ci19Ci0KLXZvaWQg
U1ZHTWF0cml4OjpyZW1vdmVTY2FsZShkb3VibGUqIHhTY2FsZSwgZG91YmxlKiB5U2NhbGUpCi17
Ci0gICAgZG91YmxlIHN4ID0gc3FydChhKCkgKiBhKCkgKyBiKCkgKiBiKCkpOwotICAgIGRvdWJs
ZSBzeSA9IHNxcnQoYygpICogYygpICsgZCgpICogZCgpKTsKLQotICAgIC8vIFJlbW92ZSB0aGUg
c2NhbGluZyBmcm9tIHRoZSBtYXRyaXguCi0gICAgc2V0QShhKCkgLyBzeCk7IHNldEIoYigpIC8g
c3gpOwotICAgIHNldEMoYygpIC8gc3kpOyBzZXREKGQoKSAvIHN5KTsKLQotICAgICp4U2NhbGUg
PSBzeDsKLSAgICAqeVNjYWxlID0gc3k7Ci19Ci0KLS8vIHZpbTp0cz00Om5vZXQKLSNlbmRpZiAv
LyBTVkdfU1VQUE9SVAotCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXRyaXguaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXRyaXguaAkocmV2aXNpb24gMTgxNDkp
CisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXRyaXguaAkod29ya2luZyBjb3B5KQpAQCAtMSwx
MDcgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1t
ZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+Ci0gICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1IFJv
YiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RF
IHByb2plY3QKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAg
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAg
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5
IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVT
QS4KLSovCi0KLSNpZm5kZWYgS1NWR19TVkdNYXRyaXhJbXBsX0gKLSNkZWZpbmUgS1NWR19TVkdN
YXRyaXhJbXBsX0gKLSNpZmRlZiBTVkdfU1VQUE9SVAotCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNm
b3JtLmgiCi0jaW5jbHVkZSAiU2hhcmVkLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotICAg
IHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0KLSAgICBjbGFzcyBTVkdNYXRyaXggOiBwdWJs
aWMgU2hhcmVkPFNWR01hdHJpeD4geyAKLSAgICBwdWJsaWM6Ci0gICAgICAgIFNWR01hdHJpeCgp
OwotICAgICAgICBTVkdNYXRyaXgoZG91YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUgYywgZG91Ymxl
IGQsIGRvdWJsZSBlLCBkb3VibGUgZik7Ci0gICAgICAgIFNWR01hdHJpeChjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIG1hdCk7Ci0gICAgICAgIHZpcnR1YWwgflNWR01hdHJpeCgpOwotCi0gICAgICAg
IHZvaWQgc2V0QShkb3VibGUpOwotICAgICAgICBkb3VibGUgYSgpIGNvbnN0OwotCi0gICAgICAg
IHZvaWQgc2V0Qihkb3VibGUpOwotICAgICAgICBkb3VibGUgYigpIGNvbnN0OwotCi0gICAgICAg
IHZvaWQgc2V0Qyhkb3VibGUpOwotICAgICAgICBkb3VibGUgYygpIGNvbnN0OwotCi0gICAgICAg
IHZvaWQgc2V0RChkb3VibGUpOwotICAgICAgICBkb3VibGUgZCgpIGNvbnN0OwotCi0gICAgICAg
IHZvaWQgc2V0RShkb3VibGUpOwotICAgICAgICBkb3VibGUgZSgpIGNvbnN0OwotCi0gICAgICAg
IHZvaWQgc2V0Rihkb3VibGUpOwotICAgICAgICBkb3VibGUgZigpIGNvbnN0OwotCi0gICAgICAg
IHZvaWQgY29weShjb25zdCBTVkdNYXRyaXgqKTsKLQotICAgICAgICBTVkdNYXRyaXgqIGludmVy
c2UoRXhjZXB0aW9uQ29kZSYpOwotCi0gICAgICAgIC8vIFByZS1tdWx0aXBsaWVkIG9wZXJhdGlv
bnMsIGFzIHBlciB0aGUgc3BlY3MuCi0gICAgICAgIFNWR01hdHJpeCogbXVsdGlwbHkoY29uc3Qg
U1ZHTWF0cml4Kik7Ci0gICAgICAgIFNWR01hdHJpeCogdHJhbnNsYXRlKGRvdWJsZSB4LCBkb3Vi
bGUgeSk7Ci0gICAgICAgIFNWR01hdHJpeCogc2NhbGUoZG91YmxlIHNjYWxlRmFjdG9yKTsKLSAg
ICAgICAgU1ZHTWF0cml4KiBzY2FsZU5vblVuaWZvcm0oZG91YmxlIHNjYWxlRmFjdG9yWCwgZG91
YmxlIHNjYWxlRmFjdG9yWSk7Ci0gICAgICAgIFNWR01hdHJpeCogcm90YXRlKGRvdWJsZSBhbmds
ZSk7Ci0gICAgICAgIFNWR01hdHJpeCogcm90YXRlRnJvbVZlY3Rvcihkb3VibGUgeCwgZG91Ymxl
IHksIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgU1ZHTWF0cml4KiBmbGlwWCgpOwotICAgICAg
ICBTVkdNYXRyaXgqIGZsaXBZKCk7Ci0gICAgICAgIFNWR01hdHJpeCogc2tld1goZG91YmxlIGFu
Z2xlKTsKLSAgICAgICAgU1ZHTWF0cml4KiBza2V3WShkb3VibGUgYW5nbGUpOwotCi0gICAgICAg
IC8vIFBvc3QtbXVsdGlwbGllZCBvcGVyYXRpb25zCi0gICAgICAgIFNWR01hdHJpeCogcG9zdE11
bHRpcGx5KGNvbnN0IFNWR01hdHJpeCopOwotICAgICAgICBTVkdNYXRyaXgqIHBvc3RUcmFuc2xh
dGUoZG91YmxlIHgsIGRvdWJsZSB5KTsKLSAgICAgICAgU1ZHTWF0cml4KiBwb3N0U2NhbGUoZG91
YmxlIHNjYWxlRmFjdG9yKTsKLSAgICAgICAgU1ZHTWF0cml4KiBwb3N0U2NhbGVOb25Vbmlmb3Jt
KGRvdWJsZSBzY2FsZUZhY3RvclgsIGRvdWJsZSBzY2FsZUZhY3RvclkpOwotICAgICAgICBTVkdN
YXRyaXgqIHBvc3RSb3RhdGUoZG91YmxlIGFuZ2xlKTsKLSAgICAgICAgU1ZHTWF0cml4KiBwb3N0
Um90YXRlRnJvbVZlY3Rvcihkb3VibGUgeCwgZG91YmxlIHkpOwotICAgICAgICBTVkdNYXRyaXgq
IHBvc3RGbGlwWCgpOwotICAgICAgICBTVkdNYXRyaXgqIHBvc3RGbGlwWSgpOwotICAgICAgICBT
VkdNYXRyaXgqIHBvc3RTa2V3WChkb3VibGUgYW5nbGUpOwotICAgICAgICBTVkdNYXRyaXgqIHBv
c3RTa2V3WShkb3VibGUgYW5nbGUpOwotCi0gICAgICAgIHZvaWQgcmVzZXQoKTsKLQotICAgICAg
ICAvLyBLU1ZHIGhlbHBlciBtZXRob2QKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtJiBtYXRyaXgo
KTsKLSAgICAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBtYXRyaXgoKSBjb25zdDsKLQotICAg
ICAgICAvLyBEZXRlcm1pbmUgdGhlIHNjYWxpbmcgY29tcG9uZW50IG9mIHRoZSBtYXRyaXggYW5k
IGZhY3RvciBpdCBvdXQuIEFmdGVyCi0gICAgICAgIC8vIHRoaXMgb3BlcmF0aW9uLCB0aGUgbWF0
cml4IGhhcyB4IGFuZCB5IHNjYWxlIG9mIG9uZS4KLSAgICAgICAgdm9pZCByZW1vdmVTY2FsZShk
b3VibGUqIHhTY2FsZSwgZG91YmxlKiB5U2NhbGUpOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAg
dm9pZCBzZXRNYXRyaXgoY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7Ci0gICAgICAgIEFmZmluZVRy
YW5zZm9ybSBtX21hdDsKLSAgICB9OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBTVkdfU1VQUE9SVAotI2VuZGlmIC8vIEtTVkdfU1ZHTWF0cml4SW1wbF9ICi0KLS8vIHZp
bTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hdHJpeC5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWF0cml4LmlkbAkocmV2aXNpb24gMTgxNDkp
CisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXRyaXguaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
NCw3ICsyNCw3IEBACiAKIG1vZHVsZSBzdmcgewogCi0gICAgaW50ZXJmYWNlIFtDb25kaXRpb25h
bD1TVkddIFNWR01hdHJpeCB7IAorICAgIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9U1ZHLCBPYmpD
Q3VzdG9tSW1wbGVtZW50YXRpb25dIFNWR01hdHJpeCB7IAogICAgICAgICBhdHRyaWJ1dGUgZmxv
YXQgYTsKICAgICAgICAgYXR0cmlidXRlIGZsb2F0IGI7CiAgICAgICAgIGF0dHJpYnV0ZSBmbG9h
dCBjOwpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTnVtYmVyTGlzdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTnVtYmVyTGlzdC5jcHAJKHJldmlzaW9uIDE4MTQ5
KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTnVtYmVyTGlzdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI1LDcgKzI1LDYgQEAKICNpZmRlZiBTVkdfU1VQUE9SVAogI2luY2x1ZGUgIlNWR051bWJl
ckxpc3QuaCIKIAotI2luY2x1ZGUgIlNWR01hdHJpeC5oIgogI2luY2x1ZGUgIlNWR1NWR0VsZW1l
bnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
UGF0dGVybkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1Bh
dHRlcm5FbGVtZW50LmNwcAkocmV2aXNpb24gMTgxNDkpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdQYXR0ZXJuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNp
bmNsdWRlICJSZW5kZXJTVkdDb250YWluZXIuaCIKICNpbmNsdWRlICJTVkdIZWxwZXIuaCIKICNp
bmNsdWRlICJTVkdMZW5ndGguaCIKLSNpbmNsdWRlICJTVkdNYXRyaXguaCIKKyNpbmNsdWRlICJB
ZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1NW
R0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0LmgiCkBAIC0yOTcsNyArMjk3
LDcgQEAgdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6bm90aWZ5QXR0cmlidXRlQwogCiAgICAgQWZm
aW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm1NYXRyaXg7CiAgICAgaWYgKHBhdHRlcm5UcmFu
c2Zvcm0oKS0+bnVtYmVyT2ZJdGVtcygpID4gMCkKLSAgICAgICAgcGF0dGVyblRyYW5zZm9ybU1h
dHJpeCA9IHBhdHRlcm5UcmFuc2Zvcm0oKS0+Y29uc29saWRhdGUoKS0+bWF0cml4KCktPm1hdHJp
eCgpOworICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtTWF0cml4ID0gcGF0dGVyblRyYW5zZm9ybSgp
LT5jb25zb2xpZGF0ZSgpLT5tYXRyaXgoKTsKIAogCiAgICAgU1ZHUGF0dGVybkVsZW1lbnQqIG5v
bkNvbnN0VGhpcyA9IGNvbnN0X2Nhc3Q8U1ZHUGF0dGVybkVsZW1lbnQqPih0aGlzKTsKQEAgLTMy
OCwxNCArMzI4LDExIEBAIFNWR1Jlc291cmNlKiBTVkdQYXR0ZXJuRWxlbWVudDo6Y2FudmFzUmUK
ICAgICByZXR1cm4gbV9wYWludFNlcnZlci5nZXQoKTsKIH0KIAotU1ZHTWF0cml4KiBTVkdQYXR0
ZXJuRWxlbWVudDo6Z2V0Q1RNKCkgY29uc3QKK0FmZmluZVRyYW5zZm9ybSBTVkdQYXR0ZXJuRWxl
bWVudDo6Z2V0Q1RNKCkgY29uc3QKIHsKLSAgICBTVkdNYXRyaXgqIG1hdCA9IFNWR1NWR0VsZW1l
bnQ6OmNyZWF0ZVNWR01hdHJpeCgpOwotICAgIGlmIChtYXQpIHsKLSAgICAgICAgUmVmUHRyPFNW
R01hdHJpeD4gdmlld0JveCA9IHZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0od2lkdGgoKS0+dmFsdWUo
KSwgaGVpZ2h0KCktPnZhbHVlKCkpOwotICAgICAgICBtYXQtPm11bHRpcGx5KHZpZXdCb3guZ2V0
KCkpOwotICAgIH0KLQorICAgIEFmZmluZVRyYW5zZm9ybSBtYXQ7CisgICAgQWZmaW5lVHJhbnNm
b3JtIHZpZXdCb3ggPSB2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKHdpZHRoKCktPnZhbHVlKCksIGhl
aWdodCgpLT52YWx1ZSgpKTsKKyAgICBtYXQgKj0gdmlld0JveDsKICAgICByZXR1cm4gbWF0Owog
fQogCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgJKHJldmlzaW9uIDE4
MTQ5KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNjYsNyArNjYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFs
IFNWR1Jlc291cmNlKiBjYW52YXNSZXNvdXJjZSgpOwogCiAgICAgICAgIC8vICd2aXJ0dWFsIFNW
R0xvY2F0YWJsZScgZnVuY3Rpb25zCi0gICAgICAgIHZpcnR1YWwgU1ZHTWF0cml4KiBnZXRDVE0o
KSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gZ2V0Q1RNKCkgY29uc3Q7
CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVD
TEFSQVRJT05TKFNWR1VSSVJlZmVyZW5jZSwgU3RyaW5nLCBIcmVmLCBocmVmKQpJbmRleDogV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHAJKHJldmlzaW9uIDE4
MTQ5KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDYgQEAKICNpZmRlZiBTVkdfU1VQUE9SVAogI2luY2x1
ZGUgIlNWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaCIKIAotI2luY2x1ZGUgIlNWR01hdHJpeC5oIgog
I2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTAx
LDEyICsxMDAsMTIgQEAgdm9pZCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpwYXJzZVByZXNlcgog
ICAgICAgICBtX2NvbnRleHQtPm5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpOwogfQogCi1TVkdNYXRy
aXgqIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OmdldENUTShmbG9hdCBsb2dpY1gsIGZsb2F0IGxv
Z2ljWSwKK0FmZmluZVRyYW5zZm9ybSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpnZXRDVE0oZmxv
YXQgbG9naWNYLCBmbG9hdCBsb2dpY1ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmbG9hdCBsb2dpY1dpZHRoLCBmbG9hdCBsb2dpY0hlaWdodCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IC8qcGh5c1gqLywgZmxvYXQg
LypwaHlzWSovLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxv
YXQgcGh5c1dpZHRoLCBmbG9hdCBwaHlzSGVpZ2h0KQogewotICAgIFNWR01hdHJpeCogdGVtcCA9
IFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR01hdHJpeCgpOworICAgIEFmZmluZVRyYW5zZm9ybSB0
ZW1wOwogCiAgICAgaWYgKGFsaWduKCkgPT0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fVU5LTk9X
TikKICAgICAgICAgcmV0dXJuIHRlbXA7CkBAIC0xMTUsMjYgKzExNCwyNiBAQCBTVkdNYXRyaXgq
IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OmdldENUCiAgICAgZmxvYXQgc3ZnYXIgPSBwaHlzV2lk
dGggLyBwaHlzSGVpZ2h0OwogCiAgICAgaWYgKGFsaWduKCkgPT0gU1ZHX1BSRVNFUlZFQVNQRUNU
UkFUSU9fTk9ORSkgewotICAgICAgICB0ZW1wLT5zY2FsZU5vblVuaWZvcm0ocGh5c1dpZHRoIC8g
bG9naWNXaWR0aCwgcGh5c0hlaWdodCAvIGxvZ2ljSGVpZ2h0KTsKLSAgICAgICAgdGVtcC0+dHJh
bnNsYXRlKC1sb2dpY1gsIC1sb2dpY1kpOworICAgICAgICB0ZW1wLnNjYWxlKHBoeXNXaWR0aCAv
IGxvZ2ljV2lkdGgsIHBoeXNIZWlnaHQgLyBsb2dpY0hlaWdodCk7CisgICAgICAgIHRlbXAudHJh
bnNsYXRlKC1sb2dpY1gsIC1sb2dpY1kpOwogICAgIH0gZWxzZSBpZiAodnBhciA8IHN2Z2FyICYm
IChtZWV0T3JTbGljZSgpID09IFNWR19NRUVUT1JTTElDRV9NRUVUKSB8fCB2cGFyID49IHN2Z2Fy
ICYmIChtZWV0T3JTbGljZSgpID09IFNWR19NRUVUT1JTTElDRV9TTElDRSkpIHsKLSAgICAgICAg
dGVtcC0+c2NhbGUocGh5c0hlaWdodCAvIGxvZ2ljSGVpZ2h0KTsKKyAgICAgICAgdGVtcC5zY2Fs
ZShwaHlzSGVpZ2h0IC8gbG9naWNIZWlnaHQsIHBoeXNIZWlnaHQgLyBsb2dpY0hlaWdodCk7CiAK
ICAgICAgICAgaWYgKGFsaWduKCkgPT0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNSU4g
fHwgYWxpZ24oKSA9PSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1JRCB8fCBhbGlnbigp
ID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUFYKQotICAgICAgICAgICAgdGVtcC0+
dHJhbnNsYXRlKC1sb2dpY1gsIC1sb2dpY1kpOworICAgICAgICAgICAgdGVtcC50cmFuc2xhdGUo
LWxvZ2ljWCwgLWxvZ2ljWSk7CiAgICAgICAgIGVsc2UgaWYgKGFsaWduKCkgPT0gU1ZHX1BSRVNF
UlZFQVNQRUNUUkFUSU9fWE1JRFlNSU4gfHwgYWxpZ24oKSA9PSBTVkdfUFJFU0VSVkVBU1BFQ1RS
QVRJT19YTUlEWU1JRCB8fCBhbGlnbigpID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZ
TUFYKQotICAgICAgICAgICAgdGVtcC0+dHJhbnNsYXRlKC1sb2dpY1ggLSAobG9naWNXaWR0aCAt
IHBoeXNXaWR0aCAqIGxvZ2ljSGVpZ2h0IC8gcGh5c0hlaWdodCkgLyAyLCAtbG9naWNZKTsKKyAg
ICAgICAgICAgIHRlbXAudHJhbnNsYXRlKC1sb2dpY1ggLSAobG9naWNXaWR0aCAtIHBoeXNXaWR0
aCAqIGxvZ2ljSGVpZ2h0IC8gcGh5c0hlaWdodCkgLyAyLCAtbG9naWNZKTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgdGVtcC0+dHJhbnNsYXRlKC1sb2dpY1ggLSAobG9naWNXaWR0aCAtIHBo
eXNXaWR0aCAqIGxvZ2ljSGVpZ2h0IC8gcGh5c0hlaWdodCksIC1sb2dpY1kpOworICAgICAgICAg
ICAgdGVtcC50cmFuc2xhdGUoLWxvZ2ljWCAtIChsb2dpY1dpZHRoIC0gcGh5c1dpZHRoICogbG9n
aWNIZWlnaHQgLyBwaHlzSGVpZ2h0KSwgLWxvZ2ljWSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
dGVtcC0+c2NhbGUocGh5c1dpZHRoIC8gbG9naWNXaWR0aCk7CisgICAgICAgIHRlbXAuc2NhbGUo
cGh5c1dpZHRoIC8gbG9naWNXaWR0aCwgcGh5c1dpZHRoIC8gbG9naWNXaWR0aCk7CiAKICAgICAg
ICAgaWYgKGFsaWduKCkgPT0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNSU4gfHwgYWxp
Z24oKSA9PSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JTiB8fCBhbGlnbigpID09IFNW
R19QUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUlOKQotICAgICAgICAgICAgdGVtcC0+dHJhbnNs
YXRlKC1sb2dpY1gsIC1sb2dpY1kpOworICAgICAgICAgICAgdGVtcC50cmFuc2xhdGUoLWxvZ2lj
WCwgLWxvZ2ljWSk7CiAgICAgICAgIGVsc2UgaWYgKGFsaWduKCkgPT0gU1ZHX1BSRVNFUlZFQVNQ
RUNUUkFUSU9fWE1JTllNSUQgfHwgYWxpZ24oKSA9PSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19Y
TUlEWU1JRCB8fCBhbGlnbigpID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUlEKQot
ICAgICAgICAgICAgdGVtcC0+dHJhbnNsYXRlKC1sb2dpY1gsIC1sb2dpY1kgLSAobG9naWNIZWln
aHQgLSBwaHlzSGVpZ2h0ICogbG9naWNXaWR0aCAvIHBoeXNXaWR0aCkgLyAyKTsKKyAgICAgICAg
ICAgIHRlbXAudHJhbnNsYXRlKC1sb2dpY1gsIC1sb2dpY1kgLSAobG9naWNIZWlnaHQgLSBwaHlz
SGVpZ2h0ICogbG9naWNXaWR0aCAvIHBoeXNXaWR0aCkgLyAyKTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgdGVtcC0+dHJhbnNsYXRlKC1sb2dpY1gsIC1sb2dpY1kgLSAobG9naWNIZWlnaHQg
LSBwaHlzSGVpZ2h0ICogbG9naWNXaWR0aCAvIHBoeXNXaWR0aCkpOworICAgICAgICAgICAgdGVt
cC50cmFuc2xhdGUoLWxvZ2ljWCwgLWxvZ2ljWSAtIChsb2dpY0hlaWdodCAtIHBoeXNIZWlnaHQg
KiBsb2dpY1dpZHRoIC8gcGh5c1dpZHRoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRlbXA7Cklu
ZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oCShyZXZpc2lv
biAxODE0OSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaAko
d29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgY2xhc3MgU3RyaW5nOwotICAgIGNsYXNzIFNWR01hdHJpeDsKKyAgICBjbGFzcyBBZmZpbmVU
cmFuc2Zvcm07CiAgICAgY2xhc3MgU1ZHU3R5bGVkRWxlbWVudDsKIAogICAgIGNsYXNzIFNWR1By
ZXNlcnZlQXNwZWN0UmF0aW8gOiBwdWJsaWMgU2hhcmVkPFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8+
IHsgCkBAIC02NCwxMCArNjQsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lk
IHNldE1lZXRPclNsaWNlKHVuc2lnbmVkIHNob3J0KTsKICAgICAgICAgdW5zaWduZWQgc2hvcnQg
bWVldE9yU2xpY2UoKSBjb25zdDsKICAgICAgICAgCi0gICAgICAgIFNWR01hdHJpeCogZ2V0Q1RN
KGZsb2F0IGxvZ2ljWCwgZmxvYXQgbG9naWNZLAotICAgICAgICAgICAgICAgICAgICAgICAgICBm
bG9hdCBsb2dpY1dpZHRoLCBmbG9hdCBsb2dpY0hlaWdodCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmxvYXQgcGh5c1gsIGZsb2F0IHBoeXNZLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbG9hdCBwaHlzV2lkdGgsIGZsb2F0IHBoeXNIZWlnaHQpOworICAgICAgICBBZmZpbmVUcmFu
c2Zvcm0gZ2V0Q1RNKGZsb2F0IGxvZ2ljWCwgZmxvYXQgbG9naWNZLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsb2F0IGxvZ2ljV2lkdGgsIGZsb2F0IGxvZ2ljSGVpZ2h0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHBoeXNYLCBmbG9hdCBwaHlzWSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBwaHlzV2lkdGgsIGZsb2F0IHBoeXNI
ZWlnaHQpOwogCiAgICAgICAgIC8vIEhlbHBlcgogICAgICAgICB2b2lkIHBhcnNlUHJlc2VydmVB
c3BlY3RSYXRpbyhjb25zdCBTdHJpbmcmKTsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1Jh
ZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNpb24gMTgxNDkpCisrKyBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiU1ZHUGFpbnRTZXJ2ZXJSYWRpYWxHcmFkaWVudC5o
IgogI2luY2x1ZGUgIlNWR0hlbHBlci5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgotI2luY2x1
ZGUgIlNWR01hdHJpeC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHU3Rv
cEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm0uaCIKQEAgLTk3LDcgKzk2LDcgQEAg
dm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmJ1aWxkR3JhZAogICAgIFJlZlB0cjxTVkdQ
YWludFNlcnZlclJhZGlhbEdyYWRpZW50PiBncmFkID0gV1RGOjpzdGF0aWNfcG9pbnRlcl9jYXN0
PFNWR1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnQ+KF9ncmFkKTsKICAgICBBZmZpbmVUcmFuc2Zv
cm0gbWF0OwogICAgIGlmIChncmFkaWVudFRyYW5zZm9ybSgpLT5udW1iZXJPZkl0ZW1zKCkgPiAw
KQotICAgICAgICBtYXQgPSBncmFkaWVudFRyYW5zZm9ybSgpLT5jb25zb2xpZGF0ZSgpLT5tYXRy
aXgoKS0+bWF0cml4KCk7CisgICAgICAgIG1hdCA9IGdyYWRpZW50VHJhbnNmb3JtKCktPmNvbnNv
bGlkYXRlKCktPm1hdHJpeCgpOwogCiAgICAgRGVwcmVjYXRlZFN0cmluZyByZWYgPSBocmVmKCku
ZGVwcmVjYXRlZFN0cmluZygpOwogICAgIFJlZlB0cjxTVkdQYWludFNlcnZlcj4gcHNlcnZlciA9
IGdldFBhaW50U2VydmVyQnlJZChkb2N1bWVudCgpLCByZWYubWlkKDEpKTsKSW5kZXg6IFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxODE0OSkKKysrIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBA
CiAjaW5jbHVkZSAiUmVuZGVyU1ZHQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiU1ZHQW5nbGUuaCIK
ICNpbmNsdWRlICJTVkdMZW5ndGguaCIKLSNpbmNsdWRlICJTVkdNYXRyaXguaCIKKyNpbmNsdWRl
ICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNW
R1ByZXNlcnZlQXNwZWN0UmF0aW8uaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm0uaCIKQEAgLTEw
OCw5ICsxMDgsOSBAQCBGbG9hdFJlY3QgU1ZHU1ZHRWxlbWVudDo6dmlld3BvcnQoKSBjb25zCiAg
ICAgZG91YmxlIF95ID0geSgpLT52YWx1ZSgpOwogICAgIGRvdWJsZSB3ID0gd2lkdGgoKS0+dmFs
dWUoKTsKICAgICBkb3VibGUgaCA9IGhlaWdodCgpLT52YWx1ZSgpOwotICAgIFJlZlB0cjxTVkdN
YXRyaXg+IHZpZXdCb3ggPSB2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKHcsIGgpOwotICAgIHZpZXdC
b3gtPm1hdHJpeCgpLm1hcChfeCwgX3ksICZfeCwgJl95KTsKLSAgICB2aWV3Qm94LT5tYXRyaXgo
KS5tYXAodywgaCwgJncsICZoKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gdmlld0JveCA9IHZpZXdC
b3hUb1ZpZXdUcmFuc2Zvcm0odywgaCk7CisgICAgdmlld0JveC5tYXAoX3gsIF95LCAmX3gsICZf
eSk7CisgICAgdmlld0JveC5tYXAodywgaCwgJncsICZoKTsKICAgICByZXR1cm4gRmxvYXRSZWN0
KF94LCBfeSwgdywgaCk7CiB9CiAKQEAgLTI5MSw5ICsyOTEsOSBAQCBGbG9hdFBvaW50IFNWR1NW
R0VsZW1lbnQ6OmNyZWF0ZVNWR1BvaW50CiAgICAgcmV0dXJuIEZsb2F0UG9pbnQoKTsKIH0KIAot
U1ZHTWF0cml4KiBTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdNYXRyaXgoKQorQWZmaW5lVHJhbnNm
b3JtIFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR01hdHJpeCgpCiB7Ci0gICAgcmV0dXJuIG5ldyBT
VkdNYXRyaXgoKTsKKyAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7CiB9CiAKIEZsb2F0UmVj
dCBTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdSZWN0KCkKQEAgLTMwNiwzOCArMzA2LDM0IEBAIFNW
R1RyYW5zZm9ybSogU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHVHIKICAgICByZXR1cm4gbmV3IFNW
R1RyYW5zZm9ybSgpOwogfQogCi1TVkdUcmFuc2Zvcm0qIFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNW
R1RyYW5zZm9ybUZyb21NYXRyaXgoU1ZHTWF0cml4KiBtYXRyaXgpCitTVkdUcmFuc2Zvcm0qIFNW
R1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgoY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBtYXRyaXgpCiB7ICAgIAogICAgIFNWR1RyYW5zZm9ybSogb2JqID0gU1ZHU1ZHRWxl
bWVudDo6Y3JlYXRlU1ZHVHJhbnNmb3JtKCk7CiAgICAgb2JqLT5zZXRNYXRyaXgobWF0cml4KTsK
ICAgICByZXR1cm4gb2JqOwogfQogCi1TVkdNYXRyaXgqIFNWR1NWR0VsZW1lbnQ6OmdldENUTSgp
IGNvbnN0CitBZmZpbmVUcmFuc2Zvcm0gU1ZHU1ZHRWxlbWVudDo6Z2V0Q1RNKCkgY29uc3QKIHsK
LSAgICBTVkdNYXRyaXgqIG1hdCA9IGNyZWF0ZVNWR01hdHJpeCgpOwotICAgIGlmIChtYXQpIHsK
LSAgICAgICAgbWF0LT50cmFuc2xhdGUoeCgpLT52YWx1ZSgpLCB5KCktPnZhbHVlKCkpOwotCi0g
ICAgICAgIGlmIChhdHRyaWJ1dGVzKCktPmdldE5hbWVkSXRlbShTVkdOYW1lczo6dmlld0JveEF0
dHIpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8U1ZHTWF0cml4PiB2aWV3Qm94ID0gdmlld0JveFRv
Vmlld1RyYW5zZm9ybSh3aWR0aCgpLT52YWx1ZSgpLCBoZWlnaHQoKS0+dmFsdWUoKSk7Ci0gICAg
ICAgICAgICBtYXQtPm11bHRpcGx5KHZpZXdCb3guZ2V0KCkpOwotICAgICAgICB9CisgICAgQWZm
aW5lVHJhbnNmb3JtIG1hdDsKKyAgICBtYXQudHJhbnNsYXRlKHgoKS0+dmFsdWUoKSwgeSgpLT52
YWx1ZSgpKTsKKworICAgIGlmIChhdHRyaWJ1dGVzKCktPmdldE5hbWVkSXRlbShTVkdOYW1lczo6
dmlld0JveEF0dHIpKSB7CisgICAgICAgIEFmZmluZVRyYW5zZm9ybSB2aWV3Qm94ID0gdmlld0Jv
eFRvVmlld1RyYW5zZm9ybSh3aWR0aCgpLT52YWx1ZSgpLCBoZWlnaHQoKS0+dmFsdWUoKSk7Cisg
ICAgICAgIG1hdCA9IHZpZXdCb3ggKiBtYXQ7CiAgICAgfQogCiAgICAgcmV0dXJuIG1hdDsKIH0K
IAotU1ZHTWF0cml4KiBTVkdTVkdFbGVtZW50OjpnZXRTY3JlZW5DVE0oKSBjb25zdAorQWZmaW5l
VHJhbnNmb3JtIFNWR1NWR0VsZW1lbnQ6OmdldFNjcmVlbkNUTSgpIGNvbnN0CiB7Ci0gICAgU1ZH
TWF0cml4KiBtYXQgPSBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50OjpnZXRTY3JlZW5DVE0oKTsK
LSAgICBpZiAobWF0KSB7Ci0gICAgICAgIG1hdC0+dHJhbnNsYXRlKHgoKS0+dmFsdWUoKSwgeSgp
LT52YWx1ZSgpKTsKLQotICAgICAgICBpZiAoYXR0cmlidXRlcygpLT5nZXROYW1lZEl0ZW0oU1ZH
TmFtZXM6OnZpZXdCb3hBdHRyKSkgewotICAgICAgICAgICAgUmVmUHRyPFNWR01hdHJpeD4gdmll
d0JveCA9IHZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0od2lkdGgoKS0+dmFsdWUoKSwgaGVpZ2h0KCkt
PnZhbHVlKCkpOwotICAgICAgICAgICAgbWF0LT5tdWx0aXBseSh2aWV3Qm94LmdldCgpKTsKLSAg
ICAgICAgfQorICAgIEFmZmluZVRyYW5zZm9ybSBtYXQgPSBTVkdTdHlsZWRMb2NhdGFibGVFbGVt
ZW50OjpnZXRTY3JlZW5DVE0oKTsKKyAgICBtYXQudHJhbnNsYXRlKHgoKS0+dmFsdWUoKSwgeSgp
LT52YWx1ZSgpKTsKKworICAgIGlmIChhdHRyaWJ1dGVzKCktPmdldE5hbWVkSXRlbShTVkdOYW1l
czo6dmlld0JveEF0dHIpKSB7CisgICAgICAgIEFmZmluZVRyYW5zZm9ybSB2aWV3Qm94ID0gdmll
d0JveFRvVmlld1RyYW5zZm9ybSh3aWR0aCgpLT52YWx1ZSgpLCBoZWlnaHQoKS0+dmFsdWUoKSk7
CisgICAgICAgIG1hdCA9IHZpZXdCb3ggKiBtYXQ7CiAgICAgfQogCiAgICAgcmV0dXJuIG1hdDsK
SW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmgJKHJldmlzaW9uIDE4MTQ5KQorKysgV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICsz
NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiB7CiAgICAgY2xhc3MgU1ZHQW5nbGU7CiAgICAgY2xh
c3MgU1ZHTGVuZ3RoOwotICAgIGNsYXNzIFNWR01hdHJpeDsKICAgICBjbGFzcyBTVkdUcmFuc2Zv
cm07CiAgICAgY2xhc3MgU1ZHTGVuZ3RoOwogICAgIGNsYXNzIFRpbWVTY2hlZHVsZXI7CkBAIC0x
MDgsMTYgKzEwNywxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBzdGF0aWMgU1ZHTGVu
Z3RoKiBjcmVhdGVTVkdMZW5ndGgoKTsKICAgICAgICAgc3RhdGljIFNWR0FuZ2xlKiBjcmVhdGVT
VkdBbmdsZSgpOwogICAgICAgICBzdGF0aWMgRmxvYXRQb2ludCBjcmVhdGVTVkdQb2ludCgpOwot
ICAgICAgICBzdGF0aWMgU1ZHTWF0cml4KiBjcmVhdGVTVkdNYXRyaXgoKTsKKyAgICAgICAgc3Rh
dGljIEFmZmluZVRyYW5zZm9ybSBjcmVhdGVTVkdNYXRyaXgoKTsKICAgICAgICAgc3RhdGljIEZs
b2F0UmVjdCBjcmVhdGVTVkdSZWN0KCk7CiAgICAgICAgIHN0YXRpYyBTVkdUcmFuc2Zvcm0qIGNy
ZWF0ZVNWR1RyYW5zZm9ybSgpOwotICAgICAgICBzdGF0aWMgU1ZHVHJhbnNmb3JtKiBjcmVhdGVT
VkdUcmFuc2Zvcm1Gcm9tTWF0cml4KFNWR01hdHJpeCopOworICAgICAgICBzdGF0aWMgU1ZHVHJh
bnNmb3JtKiBjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4KGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRB
dHRyaWJ1dGUqKTsKIAogICAgICAgICAvLyAndmlydHVhbCBTVkdMb2NhdGFibGUnIGZ1bmN0aW9u
cwotICAgICAgICB2aXJ0dWFsIFNWR01hdHJpeCogZ2V0Q1RNKCkgY29uc3Q7Ci0gICAgICAgIHZp
cnR1YWwgU1ZHTWF0cml4KiBnZXRTY3JlZW5DVE0oKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBB
ZmZpbmVUcmFuc2Zvcm0gZ2V0Q1RNKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgQWZmaW5lVHJh
bnNmb3JtIGdldFNjcmVlbkNUTSgpIGNvbnN0OwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCByZW5k
ZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6
cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KICAgICAgICAgdmlydHVhbCBSZW5kZXJPYmplY3Qq
IGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKSW5kZXg6IFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODE0OSkKKysrIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3
ICszMyw2IEBACiAjaW5jbHVkZSAiUmVuZGVyUGF0aC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQu
aCIKICNpbmNsdWRlICJTVkdIZWxwZXIuaCIKLSNpbmNsdWRlICJTVkdNYXRyaXguaCIKICNpbmNs
dWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAi
U1ZHU1ZHRWxlbWVudC5oIgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkTG9jYXRh
YmxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVk
TG9jYXRhYmxlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MTQ5KQorKysgV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcg
KzI4LDcgQEAKIAogI2luY2x1ZGUgIlJlbmRlclBhdGguaCIKICNpbmNsdWRlICJTVkdFbGVtZW50
LmgiCi0jaW5jbHVkZSAiU1ZHTWF0cml4LmgiCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgi
CiAjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01
OCwxMiArNTgsMTIgQEAgRmxvYXRSZWN0IFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQ6OmdldAog
ICAgIHJldHVybiBTVkdMb2NhdGFibGU6OmdldEJCb3godGhpcyk7CiB9CiAKLVNWR01hdHJpeCog
U1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6Z2V0Q1RNKCkgY29uc3QKK0FmZmluZVRyYW5zZm9y
bSBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50OjpnZXRDVE0oKSBjb25zdAogewogICAgIHJldHVy
biBTVkdMb2NhdGFibGU6OmdldENUTSh0aGlzKTsKIH0KIAotU1ZHTWF0cml4KiBTVkdTdHlsZWRM
b2NhdGFibGVFbGVtZW50OjpnZXRTY3JlZW5DVE0oKSBjb25zdAorQWZmaW5lVHJhbnNmb3JtIFNW
R1N0eWxlZExvY2F0YWJsZUVsZW1lbnQ6OmdldFNjcmVlbkNUTSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIFNWR0xvY2F0YWJsZTo6Z2V0U2NyZWVuQ1RNKHRoaXMpOwogfQpJbmRleDogV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQuaAkocmV2aXNpb24gMTgxNDkp
CisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAg
Y2xhc3MgU1ZHTWF0cml4OwogICAgIGNsYXNzIFNWR0VsZW1lbnQ7CiAKICAgICBjbGFzcyBTVkdT
dHlsZWRMb2NhdGFibGVFbGVtZW50IDogcHVibGljIFNWR1N0eWxlZEVsZW1lbnQsIHZpcnR1YWwg
cHVibGljIFNWR0xvY2F0YWJsZSB7CkBAIC00NCw4ICs0Myw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdmlydHVhbCBTVkdFbGVtZW50KiBmYXJ0aGVzdFZpZXdwb3J0RWxlbWVudCgp
IGNvbnN0OwogCiAgICAgICAgIHZpcnR1YWwgRmxvYXRSZWN0IGdldEJCb3goKSBjb25zdDsKLSAg
ICAgICAgdmlydHVhbCBTVkdNYXRyaXgqIGdldENUTSgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFs
IFNWR01hdHJpeCogZ2V0U2NyZWVuQ1RNKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgQWZmaW5l
VHJhbnNmb3JtIGdldENUTSgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9y
bSBnZXRTY3JlZW5DVE0oKSBjb25zdDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJs
ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODE0OSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0
eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEs
NyBAQAogI2luY2x1ZGUgIlJlbmRlclBhdGguaCIKICNpbmNsdWRlICJTVkdEb2N1bWVudC5oIgog
I2luY2x1ZGUgIlNWR0hlbHBlci5oIgotI2luY2x1ZGUgIlNWR01hdHJpeC5oIgorI2luY2x1ZGUg
IkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKICNpbmNs
dWRlICJTVkdUcmFuc2Zvcm1MaXN0LmgiCiAKQEAgLTUwLDE3ICs1MCwxNyBAQCBTVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudDo6flNWR1N0eWxlCiAKIEFOSU1BVEVEX1BST1BFUlRZX0RFRklO
SVRJT05TKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LCBTVkdUcmFuc2Zvcm1MaXN0Kiwg
VHJhbnNmb3JtTGlzdCwgdHJhbnNmb3JtTGlzdCwgVHJhbnNmb3JtLCB0cmFuc2Zvcm0sIFNWR05h
bWVzOjp0cmFuc2Zvcm1BdHRyLmxvY2FsTmFtZSgpLCBtX3RyYW5zZm9ybS5nZXQoKSkKIAotU1ZH
TWF0cml4KiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6bG9jYWxNYXRyaXgoKSBjb25z
dAorQWZmaW5lVHJhbnNmb3JtIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojpsb2NhbE1h
dHJpeCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGxhenlfY3JlYXRlPFNWR01hdHJpeD4obV9sb2Nh
bE1hdHJpeCk7CisgICAgcmV0dXJuIG1fbG9jYWxNYXRyaXg7CiB9CiAKLVNWR01hdHJpeCogU1ZH
U3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmdldENUTSgpIGNvbnN0CitBZmZpbmVUcmFuc2Zv
cm0gU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmdldENUTSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIFNWR1RyYW5zZm9ybWFibGU6OmdldENUTSh0aGlzKTsKIH0KIAotU1ZHTWF0cml4KiBT
VkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6Z2V0U2NyZWVuQ1RNKCkgY29uc3QKK0FmZmlu
ZVRyYW5zZm9ybSBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6Z2V0U2NyZWVuQ1RNKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gU1ZHVHJhbnNmb3JtYWJsZTo6Z2V0U2NyZWVuQ1RNKHRoaXMp
OwogfQpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50
Ojp1cGRhCiAgICAgaWYobG9jYWxUcmFuc2Zvcm0pIHsKICAgICAgICAgbV9sb2NhbE1hdHJpeCA9
IGxvY2FsVHJhbnNmb3JtLT5tYXRyaXgoKTsKICAgICAgICAgaWYgKHJlbmRlcmVyKCkpIHsKLSAg
ICAgICAgICAgIHJlbmRlcmVyKCktPnNldExvY2FsVHJhbnNmb3JtKG1fbG9jYWxNYXRyaXgtPm1h
dHJpeCgpKTsKKyAgICAgICAgICAgIHJlbmRlcmVyKCktPnNldExvY2FsVHJhbnNmb3JtKG1fbG9j
YWxNYXRyaXgpOwogICAgICAgICAgICAgcmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7
CiAgICAgICAgIH0KICAgICB9CkBAIC0xMTMsOCArMTEzLDggQEAgdm9pZCBTVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudDo6YXR0YQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmF0dGFjaCgp
OwogCi0gICAgaWYgKHJlbmRlcmVyKCkgJiYgbV9sb2NhbE1hdHJpeCkKLSAgICAgICAgcmVuZGVy
ZXIoKS0+c2V0TG9jYWxUcmFuc2Zvcm0obV9sb2NhbE1hdHJpeC0+bWF0cml4KCkpOworICAgIGlm
IChyZW5kZXJlcigpICYmICFtX2xvY2FsTWF0cml4LmlzSWRlbnRpdHkoKSkKKyAgICAgICAgcmVu
ZGVyZXIoKS0+c2V0TG9jYWxUcmFuc2Zvcm0obV9sb2NhbE1hdHJpeCk7CiB9CiAKIH0KSW5kZXg6
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQu
aAkocmV2aXNpb24gMTgxNDkpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw4ICszNCw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBjbGFzcyBOb2RlOwogICAgIGNsYXNzIFN0cmluZ0ltcGw7CiAgICAg
Y2xhc3MgU1ZHVHJhbnNmb3JtTGlzdDsKLSAgICBjbGFzcyBTVkdNYXRyaXg7Ci0gICAgY2xhc3Mg
U1ZHVHJhbnNmb3JtTGlzdDsKIAogICAgIGNsYXNzIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
ZW50IDogcHVibGljIFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQsIHB1YmxpYyBTVkdUcmFuc2Zv
cm1hYmxlIHsKICAgICBwdWJsaWM6CkBAIC00NSwxMSArNDMsMTEgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTdHlsZWRUcmFuc2Zvcm1hYmxlKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgICAgIC8vICdTVkdUcmFuc2Zvcm1hYmxlJyBmdW5jdGlv
bnMKLSAgICAgICAgdmlydHVhbCBTVkdNYXRyaXgqIGxvY2FsTWF0cml4KCkgY29uc3Q7CisgICAg
ICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGxvY2FsTWF0cml4KCkgY29uc3Q7CiAKICAgICAg
ICAgLy8gRGVyaXZlZCBmcm9tOiAnU1ZHTG9jYXRhYmxlJwotICAgICAgICB2aXJ0dWFsIFNWR01h
dHJpeCogZ2V0Q1RNKCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgU1ZHTWF0cml4KiBnZXRTY3Jl
ZW5DVE0oKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gZ2V0Q1RNKCkg
Y29uc3Q7CisgICAgICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGdldFNjcmVlbkNUTSgpIGNv
bnN0OwogICAgICAgICB2aXJ0dWFsIFNWR0VsZW1lbnQqIG5lYXJlc3RWaWV3cG9ydEVsZW1lbnQo
KSBjb25zdDsKICAgICAgICAgdmlydHVhbCBTVkdFbGVtZW50KiBmYXJ0aGVzdFZpZXdwb3J0RWxl
bWVudCgpIGNvbnN0OwogCkBAIC02Miw3ICs2MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBt
dXRhYmxlIFJlZlB0cjxTVkdNYXRyaXg+IG1fbG9jYWxNYXRyaXg7CisgICAgICAgIG11dGFibGUg
QWZmaW5lVHJhbnNmb3JtIG1fbG9jYWxNYXRyaXg7CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZ
X0RFQ0xBUkFUSU9OUyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCwgU1ZHVHJhbnNmb3Jt
TGlzdCosIFJlZlB0cjxTVkdUcmFuc2Zvcm1MaXN0PiwgVHJhbnNmb3JtLCB0cmFuc2Zvcm0pCiAg
ICAgfTsKIApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAkocmV2aXNpb24g
MTgxNDkpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI0LDEwICsyNCwxMCBAQAogI2lmZGVmIFNWR19TVVBQT1JUCiAjaW5jbHVkZSAi
U1ZHVGV4dEVsZW1lbnQuaCIKIAorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1
ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1RleHQuaCIKICNpbmNsdWRlICJT
VkdMZW5ndGhMaXN0LmgiCi0jaW5jbHVkZSAiU1ZHTWF0cml4LmgiCiAjaW5jbHVkZSAiU1ZHUmVu
ZGVyU3R5bGUuaCIKICNpbmNsdWRlICJTVkdUU3BhbkVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdU
cmFuc2Zvcm1MaXN0LmgiCkBAIC00Nyw5ICs0Nyw5IEBAIFNWR1RleHRFbGVtZW50Ojp+U1ZHVGV4
dEVsZW1lbnQoKQogCiBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdUZXh0RWxlbWVu
dCwgU1ZHVHJhbnNmb3JtTGlzdCosIFRyYW5zZm9ybUxpc3QsIHRyYW5zZm9ybUxpc3QsIFRyYW5z
Zm9ybSwgdHJhbnNmb3JtLCBTVkdOYW1lczo6dHJhbnNmb3JtQXR0ci5sb2NhbE5hbWUoKSwgbV90
cmFuc2Zvcm0uZ2V0KCkpCiAKLVNWR01hdHJpeCogU1ZHVGV4dEVsZW1lbnQ6OmxvY2FsTWF0cml4
KCkgY29uc3QKK0FmZmluZVRyYW5zZm9ybSBTVkdUZXh0RWxlbWVudDo6bG9jYWxNYXRyaXgoKSBj
b25zdAogewotICAgIHJldHVybiBsYXp5X2NyZWF0ZTxTVkdNYXRyaXg+KG1fbG9jYWxNYXRyaXgp
OworICAgIHJldHVybiBtX2xvY2FsTWF0cml4OwogfQogCiB2b2lkIFNWR1RleHRFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCkBAIC03NSw3ICs3NSw3
IEBAIHZvaWQgU1ZHVGV4dEVsZW1lbnQ6OnVwZGF0ZUxvY2FsVHJhbnNmb3IKICAgICBpZiAobG9j
YWxUcmFuc2Zvcm0pIHsKICAgICAgICAgbV9sb2NhbE1hdHJpeCA9IGxvY2FsVHJhbnNmb3JtLT5t
YXRyaXgoKTsKICAgICAgICAgaWYgKHJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgIHJlbmRlcmVy
KCktPnNldExvY2FsVHJhbnNmb3JtKG1fbG9jYWxNYXRyaXgtPm1hdHJpeCgpKTsKKyAgICAgICAg
ICAgIHJlbmRlcmVyKCktPnNldExvY2FsVHJhbnNmb3JtKG1fbG9jYWxNYXRyaXgpOwogICAgICAg
ICAgICAgcmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiAgICAgICAgIH0KICAgICB9
CkBAIC04NSw4ICs4NSw4IEBAIHZvaWQgU1ZHVGV4dEVsZW1lbnQ6OmF0dGFjaCgpCiB7CiAgICAg
U1ZHU3R5bGVkRWxlbWVudDo6YXR0YWNoKCk7CiAKLSAgICBpZiAocmVuZGVyZXIoKSAmJiBtX2xv
Y2FsTWF0cml4KQotICAgICAgICByZW5kZXJlcigpLT5zZXRMb2NhbFRyYW5zZm9ybShtX2xvY2Fs
TWF0cml4LT5tYXRyaXgoKSk7CisgICAgaWYgKHJlbmRlcmVyKCkgJiYgIW1fbG9jYWxNYXRyaXgu
aXNJZGVudGl0eSgpKQorICAgICAgICByZW5kZXJlcigpLT5zZXRMb2NhbFRyYW5zZm9ybShtX2xv
Y2FsTWF0cml4KTsKIH0KIAogU1ZHRWxlbWVudCogU1ZHVGV4dEVsZW1lbnQ6Om5lYXJlc3RWaWV3
cG9ydEVsZW1lbnQoKSBjb25zdApAQCAtMTA0LDEyICsxMDQsMTIgQEAgRmxvYXRSZWN0IFNWR1Rl
eHRFbGVtZW50OjpnZXRCQm94KCkgY29ucwogICAgIHJldHVybiBTVkdUcmFuc2Zvcm1hYmxlOjpn
ZXRCQm94KHRoaXMpOwogfQogCi1TVkdNYXRyaXgqIFNWR1RleHRFbGVtZW50OjpnZXRTY3JlZW5D
VE0oKSBjb25zdAorQWZmaW5lVHJhbnNmb3JtIFNWR1RleHRFbGVtZW50OjpnZXRTY3JlZW5DVE0o
KSBjb25zdAogewogICAgIHJldHVybiBTVkdUcmFuc2Zvcm1hYmxlOjpnZXRTY3JlZW5DVE0odGhp
cyk7CiB9CiAKLVNWR01hdHJpeCogU1ZHVGV4dEVsZW1lbnQ6OmdldENUTSgpIGNvbnN0CitBZmZp
bmVUcmFuc2Zvcm0gU1ZHVGV4dEVsZW1lbnQ6OmdldENUTSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IFNWR1RyYW5zZm9ybWFibGU6OmdldENUTSh0aGlzKTsKIH0KSW5kZXg6IFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR1RleHRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
VGV4dEVsZW1lbnQuaAkocmV2aXNpb24gMTgxNDkpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdU
ZXh0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywxNCArNDMsMTQgQEAgbmFtZXNwYWNl
IFdlYkNvcmUKICAgICAgICAgdmlydHVhbCBTVkdFbGVtZW50KiBmYXJ0aGVzdFZpZXdwb3J0RWxl
bWVudCgpIGNvbnN0OwogCiAgICAgICAgIHZpcnR1YWwgRmxvYXRSZWN0IGdldEJCb3goKSBjb25z
dDsKLSAgICAgICAgdmlydHVhbCBTVkdNYXRyaXgqIGdldENUTSgpIGNvbnN0OwotICAgICAgICB2
aXJ0dWFsIFNWR01hdHJpeCogZ2V0U2NyZWVuQ1RNKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwg
QWZmaW5lVHJhbnNmb3JtIGdldENUTSgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIEFmZmluZVRy
YW5zZm9ybSBnZXRTY3JlZW5DVE0oKSBjb25zdDsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgcmVu
ZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6
OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOyB9CiAgICAgICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0
KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwotICAgICAgICB2aXJ0dWFsIFNWR01hdHJpeCogbG9j
YWxNYXRyaXgoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxN
YXRyaXgoKSBjb25zdDsKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMb2Nh
bFRyYW5zZm9ybShTVkdUcmFuc2Zvcm1MaXN0Kik7CiAgICAgICAgIApAQCAtNTgsNyArNTgsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNv
bnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQogCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHTWF0cml4PiBtX2xvY2FsTWF0cml4OworICAgICAgICBt
dXRhYmxlIEFmZmluZVRyYW5zZm9ybSBtX2xvY2FsTWF0cml4OwogICAgICAgICBBTklNQVRFRF9Q
Uk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHVGV4dEVsZW1lbnQsIFNWR1RyYW5zZm9ybUxpc3QqLCBS
ZWZQdHI8U1ZHVHJhbnNmb3JtTGlzdD4sIFRyYW5zZm9ybSwgdHJhbnNmb3JtKQogICAgIH07CiAK
SW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtLmNwcAkocmV2aXNpb24gMTgxNDkpCisrKyBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3
ICsyMyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAotI2lu
Y2x1ZGUgIlNWR01hdHJpeC5oIgorI2luY2x1ZGUgIlNWR0FuZ2xlLmgiCiAjaW5jbHVkZSAiU1ZH
VHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgogCkBAIC0zMSw3ICszMSw2
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBTVkdUcmFuc2Zvcm06OlNWR1RyYW5zZm9y
bSgpCiAgICAgOiBTaGFyZWQ8U1ZHVHJhbnNmb3JtPigpCi0gICAgLCBtX21hdHJpeChTVkdTVkdF
bGVtZW50OjpjcmVhdGVTVkdNYXRyaXgoKSkKIHsKICAgICBtX3R5cGUgPSBTVkdfVFJBTlNGT1JN
X1VOS05PV047CiAgICAgbV9hbmdsZSA9IDA7CkBAIC00Niw5ICs0NSw5IEBAIHVuc2lnbmVkIHNo
b3J0IFNWR1RyYW5zZm9ybTo6dHlwZSgpIGNvbnMKICAgICByZXR1cm4gbV90eXBlOwogfQogCi1T
VkdNYXRyaXggKlNWR1RyYW5zZm9ybTo6bWF0cml4KCkgY29uc3QKK0FmZmluZVRyYW5zZm9ybSBT
VkdUcmFuc2Zvcm06Om1hdHJpeCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fbWF0cml4LmdldCgp
OworICAgIHJldHVybiBtX21hdHJpeDsKIH0KIAogZG91YmxlIFNWR1RyYW5zZm9ybTo6YW5nbGUo
KSBjb25zdApAQCAtNTYsMTEgKzU1LDExIEBAIGRvdWJsZSBTVkdUcmFuc2Zvcm06OmFuZ2xlKCkg
Y29uc3QKICAgICByZXR1cm4gbV9hbmdsZTsKIH0KIAotdm9pZCBTVkdUcmFuc2Zvcm06OnNldE1h
dHJpeChTVkdNYXRyaXggKm1hdHJpeCkKK3ZvaWQgU1ZHVHJhbnNmb3JtOjpzZXRNYXRyaXgoY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBtYXRyaXgpCiB7CiAgICAgbV90eXBlID0gU1ZHX1RSQU5TRk9S
TV9NQVRSSVg7CiAgICAgbV9hbmdsZSA9IDA7Ci0gICAgCisKICAgICBtX21hdHJpeCA9IG1hdHJp
eDsKIH0KIApAQCAtNjgsNDggKzY3LDQ4IEBAIHZvaWQgU1ZHVHJhbnNmb3JtOjpzZXRUcmFuc2xh
dGUoZG91YmxlIHQKIHsKICAgICBtX3R5cGUgPSBTVkdfVFJBTlNGT1JNX1RSQU5TTEFURTsKICAg
ICBtX2FuZ2xlID0gMDsKLSAgICAKLSAgICBtX21hdHJpeC0+cmVzZXQoKTsKLSAgICBtX21hdHJp
eC0+dHJhbnNsYXRlKHR4LCB0eSk7CisKKyAgICBtX21hdHJpeC5yZXNldCgpOworICAgIG1fbWF0
cml4LnRyYW5zbGF0ZSh0eCwgdHkpOwogfQogCiB2b2lkIFNWR1RyYW5zZm9ybTo6c2V0U2NhbGUo
ZG91YmxlIHN4LCBkb3VibGUgc3kpCiB7CiAgICAgbV90eXBlID0gU1ZHX1RSQU5TRk9STV9TQ0FM
RTsKICAgICBtX2FuZ2xlID0gMDsKLSAgICAKLSAgICBtX21hdHJpeC0+cmVzZXQoKTsKLSAgICBt
X21hdHJpeC0+c2NhbGVOb25Vbmlmb3JtKHN4LCBzeSk7CisKKyAgICBtX21hdHJpeC5yZXNldCgp
OworICAgIG1fbWF0cml4LnNjYWxlKHN4LCBzeSk7CiB9CiAKIHZvaWQgU1ZHVHJhbnNmb3JtOjpz
ZXRSb3RhdGUoZG91YmxlIGFuZ2xlLCBkb3VibGUgY3gsIGRvdWJsZSBjeSkKIHsKICAgICBtX3R5
cGUgPSBTVkdfVFJBTlNGT1JNX1JPVEFURTsKICAgICBtX2FuZ2xlID0gYW5nbGU7Ci0gICAgCisK
ICAgICAvLyBUT0RPOiB0b1N0cmluZygpIGltcGxlbWVudGF0aW9uLCB3aGljaCBjYW4gc2hvdyBj
eCwgY3kgKG5lZWQgdG8gYmUgc3RvcmVkPykKLSAgICBtX21hdHJpeC0+cmVzZXQoKTsKLSAgICBt
X21hdHJpeC0+dHJhbnNsYXRlKGN4LCBjeSk7Ci0gICAgbV9tYXRyaXgtPnJvdGF0ZShhbmdsZSk7
Ci0gICAgbV9tYXRyaXgtPnRyYW5zbGF0ZSgtY3gsIC1jeSk7CisgICAgbV9tYXRyaXgucmVzZXQo
KTsKKyAgICBtX21hdHJpeC50cmFuc2xhdGUoY3gsIGN5KTsKKyAgICBtX21hdHJpeC5yb3RhdGUo
YW5nbGUpOworICAgIG1fbWF0cml4LnRyYW5zbGF0ZSgtY3gsIC1jeSk7CiB9CiAKIHZvaWQgU1ZH
VHJhbnNmb3JtOjpzZXRTa2V3WChkb3VibGUgYW5nbGUpCiB7CiAgICAgbV90eXBlID0gU1ZHX1RS
QU5TRk9STV9TS0VXWDsKICAgICBtX2FuZ2xlID0gYW5nbGU7Ci0gICAgCi0gICAgbV9tYXRyaXgt
PnJlc2V0KCk7Ci0gICAgbV9tYXRyaXgtPnNrZXdYKGFuZ2xlKTsKKworICAgIG1fbWF0cml4LnJl
c2V0KCk7CisgICAgbV9tYXRyaXguc2hlYXIodGFuKFNWR0FuZ2xlOjp0b3JhZChhbmdsZSkpLCAw
LjBGKTsKIH0KIAogdm9pZCBTVkdUcmFuc2Zvcm06OnNldFNrZXdZKGRvdWJsZSBhbmdsZSkKIHsK
ICAgICBtX3R5cGUgPSBTVkdfVFJBTlNGT1JNX1NLRVdZOwogICAgIG1fYW5nbGUgPSBhbmdsZTsK
LSAgICAKLSAgICBtX21hdHJpeC0+cmVzZXQoKTsKLSAgICBtX21hdHJpeC0+c2tld1koYW5nbGUp
OworCisgICAgbV9tYXRyaXgucmVzZXQoKTsKKyAgICBtX21hdHJpeC5zaGVhcigwLjBGLCB0YW4o
U1ZHQW5nbGU6OnRvcmFkKGFuZ2xlKSkpOwogfQogCiAvLyB2aW06dHM9NDpub2V0CkluZGV4OiBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdUcmFuc2Zvcm0uaAkocmV2aXNpb24gMTgxNDkpCisrKyBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdUcmFuc2Zvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTIgKzI0LDEyIEBACiAj
ZGVmaW5lIEtTVkdfU1ZHVHJhbnNmb3JtSW1wbF9ICiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAorI2lu
Y2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIlNoYXJlZC5oIgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgU1ZHTWF0
cml4OwogICAgIGNsYXNzIFNWR1RyYW5zZm9ybSA6IHB1YmxpYyBTaGFyZWQ8U1ZHVHJhbnNmb3Jt
PiB7CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIFNWR1RyYW5zZm9ybVR5cGUgewpAQCAtNDcs
MTEgKzQ3LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICAgIAogICAgICAg
ICB1bnNpZ25lZCBzaG9ydCB0eXBlKCkgY29uc3Q7CiAKLSAgICAgICAgU1ZHTWF0cml4KiBtYXRy
aXgoKSBjb25zdDsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIG1hdHJpeCgpIGNvbnN0OwogICAg
IAogICAgICAgICBkb3VibGUgYW5nbGUoKSBjb25zdDsKIAotICAgICAgICB2b2lkIHNldE1hdHJp
eChTVkdNYXRyaXgqKTsKKyAgICAgICAgdm9pZCBzZXRNYXRyaXgoY29uc3QgQWZmaW5lVHJhbnNm
b3JtJik7CiAgICAgICAgIHZvaWQgc2V0VHJhbnNsYXRlKGRvdWJsZSB0eCwgZG91YmxlIHR5KTsK
ICAgICAgICAgdm9pZCBzZXRTY2FsZShkb3VibGUgc3gsIGRvdWJsZSBzeSk7CiAgICAgICAgIHZv
aWQgc2V0Um90YXRlKGRvdWJsZSBhbmdsZSwgZG91YmxlIGN4LCBkb3VibGUgY3kpOwpAQCAtNjEs
NyArNjEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgZG91
YmxlIG1fYW5nbGU7CiAgICAgICAgIHVuc2lnbmVkIHNob3J0IG1fdHlwZTsKLSAgICAgICAgUmVm
UHRyPFNWR01hdHJpeD4gbV9tYXRyaXg7CisgICAgICAgIEFmZmluZVRyYW5zZm9ybSBtX21hdHJp
eDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdUcmFuc2Zvcm1MaXN0LmNwcAkocmV2aXNpb24gMTgxNDkpCisrKyBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBA
QAogCiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAotI2luY2x1ZGUgIlNWR01hdHJpeC5oIgorI2luY2x1
ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIlNWR1RyYW5zZm9ybS5oIgogI2luY2x1
ZGUgIlNWR1NWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0LmgiCkBAIC00
MCw3ICs0MCw3IEBAIFNWR1RyYW5zZm9ybUxpc3Q6On5TVkdUcmFuc2Zvcm1MaXN0KCkKIHsKIH0K
IAotUmVmUHRyPFNWR1RyYW5zZm9ybT4gU1ZHVHJhbnNmb3JtTGlzdDo6Y3JlYXRlU1ZHVHJhbnNm
b3JtRnJvbU1hdHJpeChTVkdNYXRyaXgqIG1hdHJpeCkgY29uc3QKK1JlZlB0cjxTVkdUcmFuc2Zv
cm0+IFNWR1RyYW5zZm9ybUxpc3Q6OmNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgoY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBtYXRyaXgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNWR1NWR0VsZW1l
bnQ6OmNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgobWF0cml4KTsKIH0KQEAgLTYyLDExICs2
MiwxMSBAQCBTVkdUcmFuc2Zvcm0qIFNWR1RyYW5zZm9ybUxpc3Q6OmNvbmNhdGVuCiAgICAgICAg
IHJldHVybiAwOwogICAgICAgICAKICAgICBTVkdUcmFuc2Zvcm0qIG9iaiA9IFNWR1NWR0VsZW1l
bnQ6OmNyZWF0ZVNWR1RyYW5zZm9ybSgpOwotICAgIFNWR01hdHJpeCogbWF0cml4ID0gU1ZHU1ZH
RWxlbWVudDo6Y3JlYXRlU1ZHTWF0cml4KCk7CisgICAgQWZmaW5lVHJhbnNmb3JtIG1hdHJpeDsK
IAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGZvcih1bnNpZ25lZCBpbnQgaSA9IDA7
IGkgPCBsZW5ndGg7IGkrKykKLSAgICAgICAgbWF0cml4LT5tdWx0aXBseShnZXRJdGVtKGksIGVj
KS0+bWF0cml4KCkpOworICAgICAgICBtYXRyaXggPSBnZXRJdGVtKGksIGVjKS0+bWF0cml4KCkg
KiBtYXRyaXg7CiAKICAgICBvYmotPnNldE1hdHJpeChtYXRyaXgpOwogICAgIHJldHVybiBvYmo7
CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtTGlzdC5oCShyZXZpc2lvbiAxODE0OSkK
KysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuaAkod29ya2luZyBjb3B5KQpA
QCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFNWR1RyYW5zZm9y
bUxpc3QoKTsKICAgICAgICAgdmlydHVhbCB+U1ZHVHJhbnNmb3JtTGlzdCgpOwogCi0gICAgICAg
IFJlZlB0cjxTVkdUcmFuc2Zvcm0+IGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgoU1ZHTWF0
cml4KikgY29uc3Q7CisgICAgICAgIFJlZlB0cjxTVkdUcmFuc2Zvcm0+IGNyZWF0ZVNWR1RyYW5z
Zm9ybUZyb21NYXRyaXgoY29uc3QgQWZmaW5lVHJhbnNmb3JtJikgY29uc3Q7CiAgICAgICAgIFJl
ZlB0cjxTVkdUcmFuc2Zvcm0+IGNvbnNvbGlkYXRlKCk7CiAKICAgICAgICAgLy8gSW50ZXJuYWwg
dXNlIG9ubHkKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwCShyZXZp
c2lvbiAxODE0OSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAKICNpbmNsdWRlICJSZWd1bGFyRXhwcmVz
c2lvbi5oIgogI2luY2x1ZGUgIlNWR0hlbHBlci5oIgotI2luY2x1ZGUgIlNWR01hdHJpeC5oIgor
I2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5j
bHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3QuaCIK
QEAgLTQxLDE4ICs0MSwxNiBAQCBTVkdUcmFuc2Zvcm1hYmxlOjp+U1ZHVHJhbnNmb3JtYWJsZSgp
CiB7CiB9CiAKLVNWR01hdHJpeCogU1ZHVHJhbnNmb3JtYWJsZTo6Z2V0Q1RNKGNvbnN0IFNWR0Vs
ZW1lbnQqIGVsZW1lbnQpIGNvbnN0CitBZmZpbmVUcmFuc2Zvcm0gU1ZHVHJhbnNmb3JtYWJsZTo6
Z2V0Q1RNKGNvbnN0IFNWR0VsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7Ci0gICAgU1ZHTWF0cml4
KiBjdG0gPSBTVkdMb2NhdGFibGU6OmdldENUTShlbGVtZW50KTsKLSAgICBjdG0tPm11bHRpcGx5
KGxvY2FsTWF0cml4KCkpOwotICAgIHJldHVybiBjdG07CisgICAgQWZmaW5lVHJhbnNmb3JtIGN0
bSA9IFNWR0xvY2F0YWJsZTo6Z2V0Q1RNKGVsZW1lbnQpOworICAgIHJldHVybiBsb2NhbE1hdHJp
eCgpICogY3RtOwogfQogCi1TVkdNYXRyaXgqIFNWR1RyYW5zZm9ybWFibGU6OmdldFNjcmVlbkNU
TShjb25zdCBTVkdFbGVtZW50KiBlbGVtZW50KSBjb25zdAorQWZmaW5lVHJhbnNmb3JtIFNWR1Ry
YW5zZm9ybWFibGU6OmdldFNjcmVlbkNUTShjb25zdCBTVkdFbGVtZW50KiBlbGVtZW50KSBjb25z
dAogewotICAgIFNWR01hdHJpeCogY3RtID0gU1ZHTG9jYXRhYmxlOjpnZXRTY3JlZW5DVE0oZWxl
bWVudCk7Ci0gICAgY3RtLT5tdWx0aXBseShsb2NhbE1hdHJpeCgpKTsKLSAgICByZXR1cm4gY3Rt
OworICAgIEFmZmluZVRyYW5zZm9ybSBjdG0gPSBTVkdMb2NhdGFibGU6OmdldFNjcmVlbkNUTShl
bGVtZW50KTsKKyAgICByZXR1cm4gbG9jYWxNYXRyaXgoKSAqIGN0bTsKIH0KIAogYm9vbCBTVkdU
cmFuc2Zvcm1hYmxlOjpwYXJzZVRyYW5zZm9ybUF0dHJpYnV0ZShTVkdUcmFuc2Zvcm1MaXN0KiBs
aXN0LCBjb25zdCBBdG9taWNTdHJpbmcmIHRyYW5zZm9ybSkKQEAgLTExMiwxMiArMTEwLDEyIEBA
IGJvb2wgU1ZHVHJhbnNmb3JtYWJsZTo6cGFyc2VUcmFuc2Zvcm1BdHQKICAgICAgICAgZWxzZSBp
ZiAoc3VidHJhbnNmb3JtWzBdID09ICJza2V3eSIgJiYgbnBhcmFtcyA9PSAxKQogICAgICAgICAg
ICAgdC0+c2V0U2tld1kocGFyYW1zWzBdLnRvRG91YmxlKCkpOwogICAgICAgICBlbHNlIGlmIChz
dWJ0cmFuc2Zvcm1bMF0gPT0gIm1hdHJpeCIgJiYgbnBhcmFtcyA9PSA2KSB7Ci0gICAgICAgICAg
ICBTVkdNYXRyaXgqIHJldCA9IG5ldyBTVkdNYXRyaXgocGFyYW1zWzBdLnRvRG91YmxlKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzFdLnRvRG91
YmxlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1z
WzJdLnRvRG91YmxlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFyYW1zWzNdLnRvRG91YmxlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyYW1zWzRdLnRvRG91YmxlKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzVdLnRvRG91YmxlKCkpOworICAgICAgICAgICAg
QWZmaW5lVHJhbnNmb3JtIHJldChwYXJhbXNbMF0udG9Eb3VibGUoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGFyYW1zWzFdLnRvRG91YmxlKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBhcmFtc1syXS50b0RvdWJsZSgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXJhbXNbM10udG9Eb3VibGUoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyYW1zWzRdLnRvRG91YmxlKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcmFtc1s1XS50b0RvdWJsZSgpKTsKICAgICAgICAgICAgIHQtPnNldE1hdHJp
eChyZXQpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZGVsZXRlIHQ7CkluZGV4OiBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5oCShyZXZpc2lvbiAxODE0OSkKKysrIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybWFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyAr
MjksNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogICAgIGNsYXNzIEF0b21pY1N0cmlu
ZzsKLSAgICBjbGFzcyBTVkdNYXRyaXg7CisgICAgY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogICAg
IGNsYXNzIFNWR1RyYW5zZm9ybUxpc3Q7CiAKICAgICBjbGFzcyBTVkdUcmFuc2Zvcm1hYmxlIDog
dmlydHVhbCBwdWJsaWMgU1ZHTG9jYXRhYmxlIHsKQEAgLTM4LDEzICszOCwxMyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgflNWR1RyYW5zZm9ybWFibGUoKTsKIAogICAg
ICAgICAvLyAnU1ZHVHJhbnNmb3JtYWJsZScgZnVuY3Rpb25zCi0gICAgICAgIHZpcnR1YWwgU1ZH
TWF0cml4KiBsb2NhbE1hdHJpeCgpIGNvbnN0ID0gMDsKKyAgICAgICAgdmlydHVhbCBBZmZpbmVU
cmFuc2Zvcm0gbG9jYWxNYXRyaXgoKSBjb25zdCA9IDA7CiAKICAgICAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUxvY2FsVHJhbnNmb3JtKFNWR1RyYW5zZm9ybUxpc3QqKSA9IDA7CiAKICAgICAgICAg
c3RhdGljIGJvb2wgcGFyc2VUcmFuc2Zvcm1BdHRyaWJ1dGUoU1ZHVHJhbnNmb3JtTGlzdCosIGNv
bnN0IEF0b21pY1N0cmluZyYgdHJhbnNmb3JtKTsKLSAgICAgICAgU1ZHTWF0cml4KiBnZXRDVE0o
Y29uc3QgU1ZHRWxlbWVudCopIGNvbnN0OwotICAgICAgICBTVkdNYXRyaXgqIGdldFNjcmVlbkNU
TShjb25zdCBTVkdFbGVtZW50KikgY29uc3Q7CisgICAgICAgIEFmZmluZVRyYW5zZm9ybSBnZXRD
VE0oY29uc3QgU1ZHRWxlbWVudCopIGNvbnN0OworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gZ2V0
U2NyZWVuQ1RNKGNvbnN0IFNWR0VsZW1lbnQqKSBjb25zdDsKICAgICB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11800</attachid>
            <date>2006-12-11 04:48:33 -0800</date>
            <delta_ts>2006-12-11 15:55:19 -0800</delta_ts>
            <desc>This one compiles</desc>
            <filename>11797.diff</filename>
            <type>text/plain</type>
            <size>105517</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDE4MTQ5KQorKysgV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsNyArMjEyLDYgQEAgYWxsIDogXAog
ICAgIERPTVNWR0xvY2F0YWJsZS5oIFwKICAgICBET01TVkdNYXJrZXJFbGVtZW50LmggXAogICAg
IERPTVNWR01hc2tFbGVtZW50LmggXAotICAgIERPTVNWR01hdHJpeC5oIFwKICAgICBET01TVkdN
ZXRhZGF0YUVsZW1lbnQuaCBcCiAgICAgRE9NU1ZHTnVtYmVyLmggXAogICAgIERPTVNWR051bWJl
ckxpc3QuaCBcCkBAIC00MDEsNyArNDAwLDYgQEAgYWxsIDogXAogICAgIEpTU1ZHRGVzY0VsZW1l
bnQuaCBcCiAgICAgSlNTVkdEb2N1bWVudC5oIFwKICAgICBKU1NWR0xlbmd0aC5oIFwKLSAgICBK
U1NWR01hdHJpeC5oIFwKICAgICBKU1NWR01ldGFkYXRhRWxlbWVudC5oIFwKICAgICBKU1NWR1Bh
dGhFbGVtZW50LmggXAogICAgIEpTU1ZHUGF0aFNlZy5oIFwKQEAgLTQ1Niw2ICs0NTQsNyBAQCBh
bGwgOiBcCiAgICAgSlNTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmggXAogICAgIEpTU1ZHUmVjdFRh
YmxlLmNwcCBcCiAgICAgSlNTVkdOdW1iZXJUYWJsZS5jcHAgXAorICAgIEpTU1ZHTWF0cml4VGFi
bGUuY3BwIFwKICAgICBKU1NWR0VsZW1lbnQuaCBcCiAgICAgSlNTVkdTVkdFbGVtZW50LmggXAog
ICAgIEpTU1ZHRWxsaXBzZUVsZW1lbnQuaCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTgxNDkpCisrKyBXZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzMzLDggKzczMyw2
IEBACiAJCTg1NDE2MzZGMEFDNzE4MEIwMDAxRTAxQiAvKiBET01TVkdQYXRoU2VnTGlzdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU0MTYzNUYwQUM3
MTgwQjAwMDFFMDFCIC8qIERPTVNWR1BhdGhTZWdMaXN0LmggKi87IH07CiAJCTg1NDE2MzcwMEFD
NzE4MEIwMDAxRTAxQiAvKiBET01TVkdQYXRoU2VnLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU0MTYzNjAwQUM3MTgwQjAwMDFFMDFCIC8qIERPTVNW
R1BhdGhTZWcubW0gKi87IH07CiAJCTg1NDE2MzcxMEFDNzE4MEIwMDAxRTAxQiAvKiBET01TVkdQ
YXRoU2VnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NTQxNjM2MTBBQzcxODBCMDAwMUUwMUIgLyogRE9NU1ZHUGF0aFNlZy5oICovOyB9OwotCQk4NTQx
NjM3MjBBQzcxODBCMDAwMUUwMUIgLyogRE9NU1ZHTWF0cml4Lm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU0MTYzNjIwQUM3MTgwQjAwMDFFMDFCIC8q
IERPTVNWR01hdHJpeC5tbSAqLzsgfTsKLQkJODU0MTYzNzMwQUM3MTgwQjAwMDFFMDFCIC8qIERP
TVNWR01hdHJpeC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODU0MTYzNjMwQUM3MTgwQjAwMDFFMDFCIC8qIERPTVNWR01hdHJpeC5oICovOyB9OwogCQk4
NTQxNjM3NDBBQzcxODBCMDAwMUUwMUIgLyogRE9NU1ZHTGVuZ3RoTGlzdC5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NDE2MzY0MEFDNzE4MEIwMDAx
RTAxQiAvKiBET01TVkdMZW5ndGhMaXN0Lm1tICovOyB9OwogCQk4NTQxNjM3NTBBQzcxODBCMDAw
MUUwMUIgLyogRE9NU1ZHTGVuZ3RoTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODU0MTYzNjUwQUM3MTgwQjAwMDFFMDFCIC8qIERPTVNWR0xlbmd0
aExpc3QuaCAqLzsgfTsKIAkJODU0MTYzNzYwQUM3MTgwQjAwMDFFMDFCIC8qIERPTVNWR0xlbmd0
aC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NDE2
MzY2MEFDNzE4MEIwMDAxRTAxQiAvKiBET01TVkdMZW5ndGgubW0gKi87IH07CkBAIC0xOTU2LDgg
KzE5NTQsNiBAQAogCQlBODhBRDQ5RjA5NTI0OEYwMDAxREQxOTYgLyogU1ZHTG9jYXRhYmxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEMwRjg4MTA4
OTcwMUYzMDBCQTUxMTQgLyogU1ZHTG9jYXRhYmxlLmggKi87IH07CiAJCUE4OEFENEEwMDk1MjQ4
RjAwMDFERDE5NiAvKiBTVkdNYXJrZXJFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzBGODgyMDg5NzAxRjMwMEJBNTExNCAvKiBTVkdN
YXJrZXJFbGVtZW50LmNwcCAqLzsgfTsKIAkJQTg4QUQ0QTEwOTUyNDhGMDAwMUREMTk2IC8qIFNW
R01hcmtlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE4QzBGODgzMDg5NzAxRjMwMEJBNTExNCAvKiBTVkdNYXJrZXJFbGVtZW50LmggKi87
IH07Ci0JCUE4OEFENEEyMDk1MjQ4RjAwMDFERDE5NiAvKiBTVkdNYXRyaXguY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDMEY4ODQwODk3MDFGMzAw
QkE1MTE0IC8qIFNWR01hdHJpeC5jcHAgKi87IH07Ci0JCUE4OEFENEEzMDk1MjQ4RjAwMDFERDE5
NiAvKiBTVkdNYXRyaXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE4QzBGODg1MDg5NzAxRjMwMEJBNTExNCAvKiBTVkdNYXRyaXguaCAqLzsgfTsKIAkJ
QTg4QUQ0QTYwOTUyNDhGMDAwMUREMTk2IC8qIFNWR051bWJlckxpc3QuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDMEY4ODgwODk3MDFGMzAwQkE1
MTE0IC8qIFNWR051bWJlckxpc3QuY3BwICovOyB9OwogCQlBODhBRDRBNzA5NTI0OEYwMDAxREQx
OTYgLyogU1ZHTnVtYmVyTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQThDMEY4ODkwODk3MDFGMzAwQkE1MTE0IC8qIFNWR051bWJlckxpc3QuaCAq
LzsgfTsKIAkJQTg4QUQ0QTgwOTUyNDhGMDAwMUREMTk2IC8qIFNWR1BhaW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzBGODhBMDg5NzAxRjMw
MEJBNTExNCAvKiBTVkdQYWludC5jcHAgKi87IH07CkBAIC0yMjAzLDYgKzIxOTksMTAgQEAKIAkJ
QUEyMUVDQ0QwQUJGMEZDNjAwMkI4MzRDIC8qIENTU0N1cnNvckltYWdlVmFsdWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBMDk3OEVFMEFCQUE2RTEw
MDg3NDQ4MCAvKiBDU1NDdXJzb3JJbWFnZVZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQUE0QzNBNzYwQjJCMTY3OTAwMjMzNEEyIC8qIFN0
eWxlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBQTRDM0E3NDBCMkIxNjc5MDAyMzM0QTIgLyogU3R5bGVFbGVtZW50LmNwcCAqLzsgfTsK
IAkJQUE0QzNBNzcwQjJCMTY3OTAwMjMzNEEyIC8qIFN0eWxlRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUE0QzNBNzUwQjJCMTY3OTAwMjMz
NEEyIC8qIFN0eWxlRWxlbWVudC5oICovOyB9OworCQlBQUFCRTM1NDBCMkQ1QzREMDBFOTE0RTEg
LyogSlNTVkdNYXRyaXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEFBQUJFMzUyMEIyRDVDNEQwMEU5MTRFMSAvKiBKU1NWR01hdHJpeC5oICovOyB9Owor
CQlBQUFCRTM1NTBCMkQ1QzREMDBFOTE0RTEgLyogSlNTVkdNYXRyaXguY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUFBQkUzNTMwQjJENUM0RDAwRTkx
NEUxIC8qIEpTU1ZHTWF0cml4LmNwcCAqLzsgfTsKKwkJQUFBQkUzNTgwQjJENUM2MzAwRTkxNEUx
IC8qIERPTVNWR01hdHJpeC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEFBQUJFMzU2MEIyRDVDNjMwMEU5MTRFMSAvKiBET01TVkdNYXRyaXgubW0gKi87
IH07CisJCUFBQUJFMzU5MEIyRDVDNjMwMEU5MTRFMSAvKiBET01TVkdNYXRyaXguaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBQUJFMzU3MEIyRDVDNjMw
MEU5MTRFMSAvKiBET01TVkdNYXRyaXguaCAqLzsgfTsKIAkJQUFDOERBQjEwQUExMDAyMDAwREMw
OTA3IC8qIFNWR01ldGFkYXRhRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBQUM4REFBRjBBQTEwMDIwMDBEQzA5MDcgLyogU1ZHTWV0YWRh
dGFFbGVtZW50LmNwcCAqLzsgfTsKIAkJQUFDOERBQjIwQUExMDAyMDAwREMwOTA3IC8qIFNWR01l
dGFkYXRhRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQUFDOERBQjAwQUExMDAyMDAwREMwOTA3IC8qIFNWR01ldGFkYXRhRWxlbWVudC5oICov
OyB9OwogCQlBQjIzQTMxMjA5QkJBNzc2MDA2N0NDNTMgLyogSFRNTFRleHRGaWVsZElubmVyRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
QjIzQTMxMDA5QkJBNzc2MDA2N0NDNTMgLyogSFRNTFRleHRGaWVsZElubmVyRWxlbWVudC5jcHAg
Ki87IH07CkBAIC0yNTMwLDggKzI1MzAsNiBAQAogCQlCMkZBM0RBOTBBQjc1QTZGMDAwRTVBQzQg
LyogSlNTVkdNYXJrZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMkZBM0NDMTBBQjc1QTZFMDAwRTVBQzQgLyogSlNTVkdNYXJrZXJFbGVt
ZW50LmggKi87IH07CiAJCUIyRkEzREFBMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR01hc2tFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIy
RkEzQ0MyMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR01hc2tFbGVtZW50LmNwcCAqLzsgfTsKIAkJ
QjJGQTNEQUIwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHTWFza0VsZW1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyRkEzQ0MzMEFCNzVBNkUwMDBF
NUFDNCAvKiBKU1NWR01hc2tFbGVtZW50LmggKi87IH07Ci0JCUIyRkEzREFDMEFCNzVBNkYwMDBF
NUFDNCAvKiBKU1NWR01hdHJpeC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMkZBM0NDNDBBQjc1QTZFMDAwRTVBQzQgLyogSlNTVkdNYXRyaXguY3Bw
ICovOyB9OwotCQlCMkZBM0RBRDBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdNYXRyaXguaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyRkEzQ0M1MEFCNzVB
NkUwMDBFNUFDNCAvKiBKU1NWR01hdHJpeC5oICovOyB9OwogCQlCMkZBM0RBRTBBQjc1QTZGMDAw
RTVBQzQgLyogSlNTVkdNZXRhZGF0YUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJGQTNDQzYwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZH
TWV0YWRhdGFFbGVtZW50LmNwcCAqLzsgfTsKIAkJQjJGQTNEQUYwQUI3NUE2RjAwMEU1QUM0IC8q
IEpTU1ZHTWV0YWRhdGFFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMkZBM0NDNzBBQjc1QTZFMDAwRTVBQzQgLyogSlNTVkdNZXRhZGF0YUVs
ZW1lbnQuaCAqLzsgfTsKIAkJQjJGQTNEQjAwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHTnVtYmVy
TGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
MkZBM0NDODBBQjc1QTZFMDAwRTVBQzQgLyogSlNTVkdOdW1iZXJMaXN0LmNwcCAqLzsgfTsKQEAg
LTM3NjMsOCArMzc2MSw2IEBACiAJCTg1NDE2MzVGMEFDNzE4MEIwMDAxRTAxQiAvKiBET01TVkdQ
YXRoU2VnTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NU1ZHUGF0
aFNlZ0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODU0MTYzNjAwQUM3MTgw
QjAwMDFFMDFCIC8qIERPTVNWR1BhdGhTZWcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gRE9NU1ZHUGF0aFNlZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODU0MTYzNjEwQUM3MTgwQjAwMDFFMDFCIC8qIERPTVNWR1BhdGhTZWcuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVNWR1BhdGhTZWcuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJODU0MTYzNjIwQUM3MTgwQjAwMDFFMDFCIC8qIERPTVNWR01hdHJp
eC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01TVkdNYXRy
aXgubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg1NDE2MzYzMEFDNzE4MEIwMDAx
RTAxQiAvKiBET01TVkdNYXRyaXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERPTVNWR01hdHJpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NTQxNjM2NDBB
QzcxODBCMDAwMUUwMUIgLyogRE9NU1ZHTGVuZ3RoTGlzdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01TVkdMZW5ndGhMaXN0Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4NTQxNjM2NTBBQzcxODBCMDAwMUUwMUIgLyogRE9NU1ZHTGVuZ3Ro
TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NU1ZHTGVuZ3RoTGlz
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NTQxNjM2NjBBQzcxODBCMDAwMUUw
MUIgLyogRE9NU1ZHTGVuZ3RoLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IERPTVNWR0xlbmd0aC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ5
MDQsOCArNDkwMCw2IEBACiAJCUE4QzBGODgxMDg5NzAxRjMwMEJBNTExNCAvKiBTVkdMb2NhdGFi
bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRl
bnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdMb2NhdGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2Vz
VGFicyA9IDA7IH07CiAJCUE4QzBGODgyMDg5NzAxRjMwMEJBNTExNCAvKiBTVkdNYXJrZXJFbGVt
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBp
bmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU1ZHTWFya2VyRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldp
ZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlBOEMwRjg4MzA4OTcwMUYzMDBCQTUxMTQgLyog
U1ZHTWFya2VyRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR01hcmtlckVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
dGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07Ci0JCUE4QzBGODg0MDg5NzAxRjMwMEJBNTEx
NCAvKiBTVkdNYXRyaXguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTVkdNYXRyaXguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0
YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKLQkJQThDMEY4ODUwODk3MDFGMzAwQkE1MTE0
IC8qIFNWR01hdHJpeC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNWR01hdHJpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9
IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJQThDMEY4ODgwODk3MDFGMzAwQkE1MTE0IC8qIFNWR051
bWJlckxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTVkdOdW1iZXJMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFi
V2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUE4QzBGODg5MDg5NzAxRjMwMEJBNTExNCAv
KiBTVkdOdW1iZXJMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1ZHTnVtYmVyTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJX
aWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJQThDMEY4OEEwODk3MDFGMzAwQkE1MTE0IC8q
IFNWR1BhaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU1ZHUGFpbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0
aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKQEAgLTUxNjIsNiArNTE1NiwxMCBAQAogCQlBQTA5NzhF
RTBBQkFBNkUxMDA4NzQ0ODAgLyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBQTRDM0E3NDBCMkIxNjc5MDAyMzM0QTIgLyogU3R5bGVFbGVtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZUVsZW1lbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQTRDM0E3NTBCMkIxNjc5MDAyMzM0
QTIgLyogU3R5bGVFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
dHlsZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUFBQkUzNTIwQjJE
NUM0RDAwRTkxNEUxIC8qIEpTU1ZHTWF0cml4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1NWR01hdHJpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBQUFC
RTM1MzBCMkQ1QzREMDBFOTE0RTEgLyogSlNTVkdNYXRyaXguY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHTWF0cml4LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQUFBQkUzNTYwQjJENUM2MzAwRTkxNEUxIC8qIERPTVNWR01hdHJpeC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01TVkdNYXRyaXgubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFBQUJFMzU3MEIyRDVDNjMwMEU5MTRFMSAv
KiBET01TVkdNYXRyaXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVNW
R01hdHJpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQUM4REFBRjBBQTEwMDIw
MDBEQzA5MDcgLyogU1ZHTWV0YWRhdGFFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTVkdNZXRhZGF0YUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBQUM4REFCMDBBQTEwMDIwMDBEQzA5MDcgLyogU1ZHTWV0YWRhdGFFbGVt
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdNZXRhZGF0YUVsZW1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUIyM0EzMTAwOUJCQTc3NjAwNjdD
QzUzIC8qIEhUTUxUZXh0RmllbGRJbm5lckVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxUZXh0RmllbGRJbm5lckVsZW1lbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTYwNyw4ICs1NjA1LDYgQEAKIAkJQjJGQTNDQzEwQUI3
NUE2RTAwMEU1QUM0IC8qIEpTU1ZHTWFya2VyRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNTVkdNYXJrZXJFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUIyRkEzQ0MyMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR01hc2tFbGVtZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NWR01hc2tFbGVtZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJGQTNDQzMwQUI3NUE2RTAwMEU1
QUM0IC8qIEpTU1ZHTWFza0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTU1ZHTWFza0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjJG
QTNDQzQwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHTWF0cml4LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NWR01hdHJpeC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUIyRkEzQ0M1MEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR01hdHJpeC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdNYXRyaXguaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJGQTNDQzYwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHTWV0
YWRhdGFFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1NWR01ldGFkYXRhRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIy
RkEzQ0M3MEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR01ldGFkYXRhRWxlbWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdNZXRhZGF0YUVsZW1lbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJGQTNDQzgwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZH
TnVtYmVyTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNT
VkdOdW1iZXJMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYxOTAsOCAr
NjE4Niw2IEBACiAJCQkJQjJGQTNDQzEwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHTWFya2VyRWxl
bWVudC5oICovLAogCQkJCUIyRkEzQ0MyMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR01hc2tFbGVt
ZW50LmNwcCAqLywKIAkJCQlCMkZBM0NDMzBBQjc1QTZFMDAwRTVBQzQgLyogSlNTVkdNYXNrRWxl
bWVudC5oICovLAotCQkJCUIyRkEzQ0M0MEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR01hdHJpeC5j
cHAgKi8sCi0JCQkJQjJGQTNDQzUwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHTWF0cml4LmggKi8s
CiAJCQkJQjJGQTNDQzYwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHTWV0YWRhdGFFbGVtZW50LmNw
cCAqLywKIAkJCQlCMkZBM0NDNzBBQjc1QTZFMDAwRTVBQzQgLyogSlNTVkdNZXRhZGF0YUVsZW1l
bnQuaCAqLywKIAkJCQlCMkZBM0NDODBBQjc1QTZFMDAwRTVBQzQgLyogSlNTVkdOdW1iZXJMaXN0
LmNwcCAqLywKQEAgLTY3OTgsNiArNjc5Miw4IEBACiAJCTg1NDk0OTJEMEFDODVBMEEwMDhBQjAz
NSAvKiBTVkcgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CUFBQUJFMzU2MEIyRDVDNjMwMEU5MTRFMSAvKiBET01TVkdNYXRyaXgubW0gKi8sCisJCQkJQUFB
QkUzNTcwQjJENUM2MzAwRTkxNEUxIC8qIERPTVNWR01hdHJpeC5oICovLAogCQkJCTg1MTYyMEVF
MEFEMkZEODgwMDU5QTdERSAvKiBET01TVkdOdW1iZXIubW0gKi8sCiAJCQkJODUxNjIwRjAwQUQy
RkQ4ODAwNTlBN0RFIC8qIERPTVNWR1BvaW50Lm1tICovLAogCQkJCTg1MTYyMEYyMEFEMkZEODkw
MDU5QTdERSAvKiBET01TVkdSZWN0Lm1tICovLApAQCAtNzA1NSw4ICs3MDUxLDYgQEAKIAkJCQk4
NUM5QTMwMDBBRDdFOTQyMDBGQkZGMUUgLyogRE9NU1ZHTWFya2VyRWxlbWVudC5tbSAqLywKIAkJ
CQk4NUM5QTMwMTBBRDdFOTQyMDBGQkZGMUUgLyogRE9NU1ZHTWFza0VsZW1lbnQuaCAqLywKIAkJ
CQk4NUM5QTMwMjBBRDdFOTQyMDBGQkZGMUUgLyogRE9NU1ZHTWFza0VsZW1lbnQubW0gKi8sCi0J
CQkJODU0MTYzNjMwQUM3MTgwQjAwMDFFMDFCIC8qIERPTVNWR01hdHJpeC5oICovLAotCQkJCTg1
NDE2MzYyMEFDNzE4MEIwMDAxRTAxQiAvKiBET01TVkdNYXRyaXgubW0gKi8sCiAJCQkJODU1OUYx
MTAwQUM5QkU5OTAwQTM0MzlDIC8qIERPTVNWR01ldGFkYXRhRWxlbWVudC5oICovLAogCQkJCTg1
NTlGMTExMEFDOUJFOTkwMEEzNDM5QyAvKiBET01TVkdNZXRhZGF0YUVsZW1lbnQubW0gKi8sCiAJ
CQkJODU0MDc0RjkwQUQ2QzIyRTAwNjIwQzU3IC8qIERPTVNWR051bWJlci5oICovLApAQCAtODIz
OCw4ICs4MjMyLDYgQEAKIAkJCQlBOEMwRjg4MzA4OTcwMUYzMDBCQTUxMTQgLyogU1ZHTWFya2Vy
RWxlbWVudC5oICovLAogCQkJCUE4MTY1NUUyMDk2QkMxMzkwMDYwMTA1OCAvKiBTVkdNYXNrRWxl
bWVudC5jcHAgKi8sCiAJCQkJQTgxNjU1RTMwOTZCQzEzOTAwNjAxMDU4IC8qIFNWR01hc2tFbGVt
ZW50LmggKi8sCi0JCQkJQThDMEY4ODQwODk3MDFGMzAwQkE1MTE0IC8qIFNWR01hdHJpeC5jcHAg
Ki8sCi0JCQkJQThDMEY4ODUwODk3MDFGMzAwQkE1MTE0IC8qIFNWR01hdHJpeC5oICovLAogCQkJ
CUE4MzNCRUREMEEyQzM0NEIwMEQ1NzY2NCAvKiBTVkdNYXRyaXguaWRsICovLAogCQkJCUE4MzNC
RUEyMEEyQzMyOTMwMEQ1NzY2NCAvKiBTVkdOdW1iZXIuaWRsICovLAogCQkJCUE4QzBGODg4MDg5
NzAxRjMwMEJBNTExNCAvKiBTVkdOdW1iZXJMaXN0LmNwcCAqLywKQEAgLTg2MzEsNiArODYyMyw4
IEBACiAJCUJDMUEzNzkzMDk3QzZGQjEwMDE5RjNEOCAvKiBqcyAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQUFBQkUzNTIwQjJENUM0RDAwRTkxNEUxIC8q
IEpTU1ZHTWF0cml4LmggKi8sCisJCQkJQUFBQkUzNTMwQjJENUM0RDAwRTkxNEUxIC8qIEpTU1ZH
TWF0cml4LmNwcCAqLywKIAkJCQkxNERGQjMzRjBBN0RGNzYzMDAxOEY3NjkgLyogRGVyaXZlZCBT
b3VyY2VzICovLAogCQkJCTkzRjhCMzA2MEEzMDBGRUEwMEY2MUFCOCAvKiBDb2RlR2VuZXJhdG9y
SlMucG0gKi8sCiAJCQkJMUE5RUY0NTYwQTFCOTU3RDAwMzMyQjYzIC8qIEpTQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQ3VzdG9tLmNwcCAqLywKQEAgLTk1MTEsNyArOTUwNSw2IEBACiAJCQkJQTg4
QUQ0OUQwOTUyNDhGMDAwMUREMTk2IC8qIFNWR0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
OEFENDlGMDk1MjQ4RjAwMDFERDE5NiAvKiBTVkdMb2NhdGFibGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE4OEFENEExMDk1MjQ4RjAwMDFERDE5NiAvKiBTVkdNYXJrZXJFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKLQkJCQlBODhBRDRBMzA5NTI0OEYwMDAxREQxOTYgLyogU1ZHTWF0cml4LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBODhBRDRBNzA5NTI0OEYwMDAxREQxOTYgLyogU1ZHTnVtYmVyTGlz
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg4QUQ0QTkwOTUyNDhGMDAwMUREMTk2IC8qIFNWR1Bh
aW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODhBRDRBQjA5NTI0OEYwMDAxREQxOTYgLyogU1ZH
UGF0aEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMTAyNTAsNyArMTAyNDMsNiBAQAogCQkJ
CUIyRkEzREE3MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0xpbmVFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMkZBM0RBOTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdNYXJrZXJFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0RBQjBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdN
YXNrRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQjJGQTNEQUQwQUI3NUE2RjAwMEU1QUM0
IC8qIEpTU1ZHTWF0cml4LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0RBRjBBQjc1QTZGMDAw
RTVBQzQgLyogSlNTVkdNZXRhZGF0YUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEz
REIxMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR051bWJlckxpc3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCUIyRkEzREIzMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhaW50LmggaW4gSGVhZGVycyAq
LywKQEAgLTEwNDAwLDcgKzEwMzkyLDYgQEAKIAkJCQk4NTQxNjM2RDBBQzcxODBCMDAwMUUwMUIg
LyogRE9NU1ZHVHJhbnNmb3JtLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTQxNjM2RjBBQzcxODBC
MDAwMUUwMUIgLyogRE9NU1ZHUGF0aFNlZ0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1NDE2
MzcxMEFDNzE4MEIwMDAxRTAxQiAvKiBET01TVkdQYXRoU2VnLmggaW4gSGVhZGVycyAqLywKLQkJ
CQk4NTQxNjM3MzBBQzcxODBCMDAwMUUwMUIgLyogRE9NU1ZHTWF0cml4LmggaW4gSGVhZGVycyAq
LywKIAkJCQk4NTQxNjM3NTBBQzcxODBCMDAwMUUwMUIgLyogRE9NU1ZHTGVuZ3RoTGlzdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODU0MTYzNzcwQUM3MTgwQjAwMDFFMDFCIC8qIERPTVNWR0xlbmd0
aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU0MTYzNzkwQUM3MTgwQjAwMDFFMDFCIC8qIERPTVNW
R0FuZ2xlLmggaW4gSGVhZGVycyAqLywKQEAgLTEwODMwLDYgKzEwODIxLDggQEAKIAkJCQlFMUQ4
RTMxNjBCMjlFMzlDMDBGNEJBRjYgLyogSFRUUFBhcnNlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMThDNUQwMEIyQTg4NkYwMDE4NDYxRCAvKiBUZXh0QnJlYWtJdGVyYXRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQUE0QzNBNzcwQjJCMTY3OTAwMjMzNEEyIC8qIFN0eWxlRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQUFBQkUzNTQwQjJENUM0RDAwRTkxNEUxIC8qIEpTU1ZHTWF0cml4
LmggaW4gSGVhZGVycyAqLywKKwkJCQlBQUFCRTM1OTBCMkQ1QzYzMDBFOTE0RTEgLyogRE9NU1ZH
TWF0cml4LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTExMDkwLDcgKzExMDgzLDYgQEAKIAkJCQlBODhB
RDQ5QjA5NTI0OEYwMDAxREQxOTYgLyogU1ZHTGluZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTg4QUQ0OUUwOTUyNDhGMDAwMUREMTk2IC8qIFNWR0xvY2F0YWJsZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBODhBRDRBMDA5NTI0OEYwMDAxREQxOTYgLyogU1ZHTWFya2VyRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBODhBRDRBMjA5NTI0OEYwMDAxREQxOTYgLyogU1ZH
TWF0cml4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4OEFENEE2MDk1MjQ4RjAwMDFERDE5NiAv
KiBTVkdOdW1iZXJMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4OEFENEE4MDk1MjQ4RjAw
MDFERDE5NiAvKiBTVkdQYWludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODhBRDRBQTA5NTI0
OEYwMDAxREQxOTYgLyogU1ZHUGF0aEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMTc4
NCw3ICsxMTc3Niw2IEBACiAJCQkJQjJGQTNEQTYwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHTGlu
ZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNEQTgwQUI3NUE2RjAwMEU1QUM0
IC8qIEpTU1ZHTWFya2VyRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkZBM0RBQTBB
Qjc1QTZGMDAwRTVBQzQgLyogSlNTVkdNYXNrRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQlCMkZBM0RBQzBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdNYXRyaXguY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQjJGQTNEQUUwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHTWV0YWRhdGFFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEzREIwMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NW
R051bWJlckxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNEQjIwQUI3NUE2RjAwMEU1
QUM0IC8qIEpTU1ZHUGFpbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMTg0OSw3ICsxMTg0MCw2
IEBACiAJCQkJODU0MTYzNkMwQUM3MTgwQjAwMDFFMDFCIC8qIERPTVNWR1RyYW5zZm9ybS5tbSBp
biBTb3VyY2VzICovLAogCQkJCTg1NDE2MzZFMEFDNzE4MEIwMDAxRTAxQiAvKiBET01TVkdQYXRo
U2VnTGlzdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1NDE2MzcwMEFDNzE4MEIwMDAxRTAxQiAv
KiBET01TVkdQYXRoU2VnLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJODU0MTYzNzIwQUM3MTgwQjAw
MDFFMDFCIC8qIERPTVNWR01hdHJpeC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1NDE2Mzc0MEFD
NzE4MEIwMDAxRTAxQiAvKiBET01TVkdMZW5ndGhMaXN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
ODU0MTYzNzYwQUM3MTgwQjAwMDFFMDFCIC8qIERPTVNWR0xlbmd0aC5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTg1NDE2Mzc4MEFDNzE4MEIwMDAxRTAxQiAvKiBET01TVkdBbmdsZS5tbSBpbiBTb3Vy
Y2VzICovLApAQCAtMTIxNDgsNiArMTIxMzgsOCBAQAogCQkJCUUxRDhFMzFBMEIyOUUzQjYwMEY0
QkFGNiAvKiBIVFRQUGFyc2Vycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzE4QzVEMTBCMkE4
ODZGMDAxODQ2MUQgLyogVGV4dEJyZWFrSXRlcmF0b3JJQ1UuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQUE0QzNBNzYwQjJCMTY3OTAwMjMzNEEyIC8qIFN0eWxlRWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlBQUFCRTM1NTBCMkQ1QzREMDBFOTE0RTEgLyogSlNTVkdNYXRyaXguY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQUFBQkUzNTgwQjJENUM2MzAwRTkxNEUxIC8qIERPTVNWR01hdHJp
eC5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR01hdHJp
eC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR01hdHJpeC5jcHAJ
KHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHTWF0cml4LmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwyMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBw
bGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmZGVmIFNWR19TVVBQT1JUCisKKyNpbmNsdWRlICJKU1NWR01hdHJp
eC5oIgorCisjaW5jbHVkZSAiU1ZHQW5nbGUuaCIKKyNpbmNsdWRlICJKU1NWR01hdHJpeFRhYmxl
LmNwcCIKKwordXNpbmcgbmFtZXNwYWNlIEtKUzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
b25zdCBDbGFzc0luZm8gSlNTVkdNYXRyaXg6OmluZm8gPSB7ICJTVkdNYXRyaXgiLCAwLCAmSlNT
VkdNYXRyaXhUYWJsZSwgMCB9OworLyoKK0BiZWdpbiBKU1NWR01hdHJpeFRhYmxlIDYKKyAgYSAg
ICAgICAgIFdlYkNvcmU6OkpTU1ZHTWF0cml4OjpNYXRyaXhBICAgICAgIERvbnREZWxldGUKKyAg
YiAgICAgICAgIFdlYkNvcmU6OkpTU1ZHTWF0cml4OjpNYXRyaXhCICAgICAgIERvbnREZWxldGUK
KyAgYyAgICAgICAgIFdlYkNvcmU6OkpTU1ZHTWF0cml4OjpNYXRyaXhDICAgICAgIERvbnREZWxl
dGUKKyAgZCAgICAgICAgIFdlYkNvcmU6OkpTU1ZHTWF0cml4OjpNYXRyaXhEICAgICAgIERvbnRE
ZWxldGUKKyAgZSAgICAgICAgIFdlYkNvcmU6OkpTU1ZHTWF0cml4OjpNYXRyaXhFICAgICAgIERv
bnREZWxldGUKKyAgZiAgICAgICAgIFdlYkNvcmU6OkpTU1ZHTWF0cml4OjpNYXRyaXhGICAgICAg
IERvbnREZWxldGUKK0BlbmQKK0BiZWdpbiBKU1NWR01hdHJpeFByb3RvVGFibGUgMTIKKyBtdWx0
aXBseSAgICAgICAgIFdlYkNvcmU6OkpTU1ZHTWF0cml4OjpNYXRyaXhNdWx0aXBseSAgRG9udERl
bGV0ZXxGdW5jdGlvbiAxCisgaW52ZXJzZSAgICAgICAgICBXZWJDb3JlOjpKU1NWR01hdHJpeDo6
TWF0cml4SW52ZXJzZSAgIERvbnREZWxldGV8RnVuY3Rpb24gMAorIHRyYW5zbGF0ZSAgICAgICAg
V2ViQ29yZTo6SlNTVkdNYXRyaXg6Ok1hdHJpeFRyYW5zbGF0ZSBEb250RGVsZXRlfEZ1bmN0aW9u
IDIKKyBzY2FsZSAgICAgICAgICAgIFdlYkNvcmU6OkpTU1ZHTWF0cml4OjpNYXRyaXhTY2FsZSAg
ICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCisgc2NhbGVOb25Vbmlmb3JtICBXZWJDb3JlOjpKU1NW
R01hdHJpeDo6TWF0cml4U2NhbGVOb25Vbmlmb3JtICBEb250RGVsZXRlfEZ1bmN0aW9uIDIKKyBy
b3RhdGUgICAgICAgICAgIFdlYkNvcmU6OkpTU1ZHTWF0cml4OjpNYXRyaXhSb3RhdGUgIERvbnRE
ZWxldGV8RnVuY3Rpb24gMQorIHJvdGF0ZUZyb21WZWN0b3IgV2ViQ29yZTo6SlNTVkdNYXRyaXg6
Ok1hdHJpeFJvdGF0ZUZyb21WZWN0b3IgIERvbnREZWxldGV8RnVuY3Rpb24gMgorIGZsaXBYICAg
ICAgICAgICAgV2ViQ29yZTo6SlNTVkdNYXRyaXg6Ok1hdHJpeEZsaXBYICAgRG9udERlbGV0ZXxG
dW5jdGlvbiAwCisgZmxpcFkgICAgICAgICAgICBXZWJDb3JlOjpKU1NWR01hdHJpeDo6TWF0cml4
RmxpcFkgICBEb250RGVsZXRlfEZ1bmN0aW9uIDAKKyBza2V3WCAgICAgICAgICAgIFdlYkNvcmU6
OkpTU1ZHTWF0cml4OjpNYXRyaXhTa2V3WCAgIERvbnREZWxldGV8RnVuY3Rpb24gMQorIHNrZXdZ
ICAgICAgICAgICAgV2ViQ29yZTo6SlNTVkdNYXRyaXg6Ok1hdHJpeFNrZXdZICAgRG9udERlbGV0
ZXxGdW5jdGlvbiAxCitAZW5kCisqLworCitLSlNfSU1QTEVNRU5UX1BST1RPRlVOQyhKU1NWR01h
dHJpeFByb3RvRnVuYykKK0tKU19JTVBMRU1FTlRfUFJPVE9UWVBFKCJKU1NWR01hdHJpeCIsIEpT
U1ZHTWF0cml4UHJvdG8sIEpTU1ZHTWF0cml4UHJvdG9GdW5jKQorCitKU1NWR01hdHJpeDo6SlNT
VkdNYXRyaXgoS0pTOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdCkg
OiBtX3RyYW5zZm9ybSh0KQoreworICAgIHNldFByb3RvdHlwZShKU1NWR01hdHJpeFByb3RvOjpz
ZWxmKGV4ZWMpKTsKK30KKworSlNTVkdNYXRyaXg6On5KU1NWR01hdHJpeCgpCit7Cit9CisKK2Jv
b2wgSlNTVkdNYXRyaXg6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJl
dHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNTVkdNYXRyaXgsIERPTU9iamVjdD4oZXhlYywgICZK
U1NWR01hdHJpeFRhYmxlLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCitKU1ZhbHVl
KiBKU1NWR01hdHJpeDo6Z2V0VmFsdWVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGludCB0b2tl
bikgY29uc3QKK3sKKyAgICBzd2l0Y2ggKHRva2VuKSB7CisgICAgY2FzZSBNYXRyaXhBOgorICAg
ICAgICByZXR1cm4ganNOdW1iZXIobV90cmFuc2Zvcm0ubTExKCkpOworICAgIGNhc2UgTWF0cml4
QjoKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKG1fdHJhbnNmb3JtLm0xMigpKTsKKyAgICBjYXNl
IE1hdHJpeEM6CisgICAgICAgIHJldHVybiBqc051bWJlcihtX3RyYW5zZm9ybS5tMjEoKSk7Cisg
ICAgY2FzZSBNYXRyaXhEOgorICAgICAgICByZXR1cm4ganNOdW1iZXIobV90cmFuc2Zvcm0ubTIy
KCkpOworICAgIGNhc2UgTWF0cml4RToKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKG1fdHJhbnNm
b3JtLmR4KCkpOworICAgIGNhc2UgTWF0cml4RjoKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKG1f
dHJhbnNmb3JtLmR5KCkpOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiAwOworICAgIH0K
K30KKwordm9pZCBKU1NWR01hdHJpeDo6cHV0KEtKUzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBL
SlM6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgS0pTOjpKU1ZhbHVlKiB2YWx1ZSwgaW50IGF0
dHIpCit7CisgICAgbG9va3VwUHV0PEpTU1ZHTWF0cml4PihleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBhdHRyLCAmSlNTVkdNYXRyaXhUYWJsZSwgdGhpcyk7Cit9CisKK3ZvaWQgSlNTVkdNYXRy
aXg6OnB1dFZhbHVlUHJvcGVydHkoS0pTOjpFeGVjU3RhdGUqIGV4ZWMsIGludCB0b2tlbiwgS0pT
OjpKU1ZhbHVlKiB2YWx1ZSwgaW50ICkKK3sKKyAgICBzd2l0Y2ggKHRva2VuKSB7CisgICAgY2Fz
ZSBNYXRyaXhBOgorICAgICAgICBtX3RyYW5zZm9ybS5zZXRNYXRyaXgodmFsdWUtPnRvTnVtYmVy
KGV4ZWMpLCBtX3RyYW5zZm9ybS5tMTIoKSwgbV90cmFuc2Zvcm0ubTIxKCksIG1fdHJhbnNmb3Jt
Lm0yMigpLCBtX3RyYW5zZm9ybS5keCgpLCBtX3RyYW5zZm9ybS5keSgpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBNYXRyaXhCOgorICAgICAgICBtX3RyYW5zZm9ybS5zZXRNYXRyaXgobV90
cmFuc2Zvcm0ubTExKCksIHZhbHVlLT50b051bWJlcihleGVjKSwgbV90cmFuc2Zvcm0ubTIxKCks
IG1fdHJhbnNmb3JtLm0yMigpLCBtX3RyYW5zZm9ybS5keCgpLCBtX3RyYW5zZm9ybS5keSgpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNYXRyaXhDOgorICAgICAgICBtX3RyYW5zZm9ybS5z
ZXRNYXRyaXgobV90cmFuc2Zvcm0ubTExKCksIG1fdHJhbnNmb3JtLm0xMigpLCB2YWx1ZS0+dG9O
dW1iZXIoZXhlYyksIG1fdHJhbnNmb3JtLm0yMigpLCBtX3RyYW5zZm9ybS5keCgpLCBtX3RyYW5z
Zm9ybS5keSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNYXRyaXhEOgorICAgICAgICBt
X3RyYW5zZm9ybS5zZXRNYXRyaXgobV90cmFuc2Zvcm0ubTExKCksIG1fdHJhbnNmb3JtLm0xMigp
LCBtX3RyYW5zZm9ybS5tMjEoKSwgdmFsdWUtPnRvTnVtYmVyKGV4ZWMpLCBtX3RyYW5zZm9ybS5k
eCgpLCBtX3RyYW5zZm9ybS5keSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNYXRyaXhF
OgorICAgICAgICBtX3RyYW5zZm9ybS5zZXRNYXRyaXgobV90cmFuc2Zvcm0ubTExKCksIG1fdHJh
bnNmb3JtLm0xMigpLCBtX3RyYW5zZm9ybS5tMjEoKSwgbV90cmFuc2Zvcm0ubTIyKCksIHZhbHVl
LT50b051bWJlcihleGVjKSwgbV90cmFuc2Zvcm0uZHkoKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgTWF0cml4RjoKKyAgICAgICAgbV90cmFuc2Zvcm0uc2V0TWF0cml4KG1fdHJhbnNmb3Jt
Lm0xMSgpLCBtX3RyYW5zZm9ybS5tMTIoKSwgbV90cmFuc2Zvcm0ubTIxKCksIG1fdHJhbnNmb3Jt
Lm0yMigpLCBtX3RyYW5zZm9ybS5keCgpLCB2YWx1ZS0+dG9OdW1iZXIoZXhlYykpOworICAgICAg
ICBicmVhazsKKyAgICB9Cit9CisKK0pTVmFsdWUqIEpTU1ZHTWF0cml4UHJvdG9GdW5jOjpjYWxs
QXNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqLCBjb25zdCBMaXN0
JiBhcmdzKQoreworICAgIGlmICghdGhpc09iai0+aW5oZXJpdHMoJkpTU1ZHTWF0cml4OjppbmZv
KSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yKTsKKworICAgIEFm
ZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBzdGF0aWNfY2FzdDxKU1NWR01hdHJpeCo+KHRoaXNP
YmopLT5pbXBsKCk7CisgICAgc3dpdGNoIChpZCkgeworICAgICAgICBjYXNlIEpTU1ZHTWF0cml4
OjpNYXRyaXhNdWx0aXBseTogeworICAgICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHQyID0gdG9B
ZmZpbmVUcmFuc2Zvcm0oYXJnc1swXSk7CisgICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdCA9
IHRyYW5zZm9ybSAqIHQyOworICAgICAgICAgICAgcmV0dXJuIGdldEpTU1ZHTWF0cml4KGV4ZWMs
IHQpOworICAgICAgICB9CisgICAgICAgIGNhc2UgSlNTVkdNYXRyaXg6Ok1hdHJpeEludmVyc2U6
IHsKKyAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSB0ID0gdHJhbnNmb3JtLmludmVydCgpOwor
ICAgICAgICAgICAgcmV0dXJuIGdldEpTU1ZHTWF0cml4KGV4ZWMsIHQpOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgSlNTVkdNYXRyaXg6Ok1hdHJpeFRyYW5zbGF0ZTogeworICAgICAgICAgICAg
ZmxvYXQgeCA9IGFyZ3NbMF0tPnRvTnVtYmVyKGV4ZWMpOworICAgICAgICAgICAgZmxvYXQgeSA9
IGFyZ3NbMV0tPnRvTnVtYmVyKGV4ZWMpOworICAgICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHQg
PSB0cmFuc2Zvcm0udHJhbnNsYXRlKHgsIHkpOworICAgICAgICAgICAgcmV0dXJuIGdldEpTU1ZH
TWF0cml4KGV4ZWMsIHQpOworICAgICAgICB9CisgICAgICAgIGNhc2UgSlNTVkdNYXRyaXg6Ok1h
dHJpeFNjYWxlOiB7CisgICAgICAgICAgICBmbG9hdCBzID0gYXJnc1swXS0+dG9OdW1iZXIoZXhl
Yyk7CisgICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdCA9IHRyYW5zZm9ybS5zY2FsZShzLCBz
KTsKKyAgICAgICAgICAgIHJldHVybiBnZXRKU1NWR01hdHJpeChleGVjLCB0KTsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIEpTU1ZHTWF0cml4OjpNYXRyaXhTY2FsZU5vblVuaWZvcm06IHsKKyAg
ICAgICAgICAgIGZsb2F0IHMxID0gYXJnc1swXS0+dG9OdW1iZXIoZXhlYyk7CisgICAgICAgICAg
ICBmbG9hdCBzMiA9IGFyZ3NbMV0tPnRvTnVtYmVyKGV4ZWMpOworICAgICAgICAgICAgQWZmaW5l
VHJhbnNmb3JtIHQgPSB0cmFuc2Zvcm0uc2NhbGUoczEsIHMyKTsKKyAgICAgICAgICAgIHJldHVy
biBnZXRKU1NWR01hdHJpeChleGVjLCB0KTsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEpTU1ZH
TWF0cml4OjpNYXRyaXhSb3RhdGU6IHsKKyAgICAgICAgICAgIGZsb2F0IGFuZ2xlID0gYXJnc1sw
XS0+dG9OdW1iZXIoZXhlYyk7CisgICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdCA9IHRyYW5z
Zm9ybS5yb3RhdGUoYW5nbGUpOworICAgICAgICAgICAgcmV0dXJuIGdldEpTU1ZHTWF0cml4KGV4
ZWMsIHQpOworICAgICAgICB9CisgICAgICAgIGNhc2UgSlNTVkdNYXRyaXg6Ok1hdHJpeFJvdGF0
ZUZyb21WZWN0b3I6IHsKKyAgICAgICAgICAgIGZsb2F0IHggPSBhcmdzWzBdLT50b051bWJlcihl
eGVjKTsKKyAgICAgICAgICAgIGZsb2F0IHkgPSBhcmdzWzFdLT50b051bWJlcihleGVjKTsKKyAg
ICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSB0ID0gdHJhbnNmb3JtLnJvdGF0ZShTVkdBbmdsZTo6
dG9kZWcoYXRhbjIoeSwgeCkpKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRKU1NWR01hdHJpeChl
eGVjLCB0KTsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEpTU1ZHTWF0cml4OjpNYXRyaXhGbGlw
WDogeworICAgICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHQgPSB0cmFuc2Zvcm0uc2NhbGUoLTEu
LCAxLik7CisgICAgICAgICAgICByZXR1cm4gZ2V0SlNTVkdNYXRyaXgoZXhlYywgdCk7CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBKU1NWR01hdHJpeDo6TWF0cml4RmxpcFk6IHsKKyAgICAgICAg
ICAgIEFmZmluZVRyYW5zZm9ybSB0ID0gdHJhbnNmb3JtLnNjYWxlKDEuLCAtMS4pOworICAgICAg
ICAgICAgcmV0dXJuIGdldEpTU1ZHTWF0cml4KGV4ZWMsIHQpOworICAgICAgICB9CisgICAgICAg
IGNhc2UgSlNTVkdNYXRyaXg6Ok1hdHJpeFNrZXdYOiB7CisgICAgICAgICAgICBmbG9hdCBhbmds
ZSA9IGFyZ3NbMF0tPnRvTnVtYmVyKGV4ZWMpOworICAgICAgICAgICAgQWZmaW5lVHJhbnNmb3Jt
IHQgPSB0cmFuc2Zvcm0uc2hlYXIodGFuKFNWR0FuZ2xlOjp0b3JhZChhbmdsZSkpLCAwLik7Cisg
ICAgICAgICAgICByZXR1cm4gZ2V0SlNTVkdNYXRyaXgoZXhlYywgdCk7CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBKU1NWR01hdHJpeDo6TWF0cml4U2tld1k6IHsKKyAgICAgICAgICAgIGZsb2F0
IGFuZ2xlID0gYXJnc1swXS0+dG9OdW1iZXIoZXhlYyk7CisgICAgICAgICAgICBBZmZpbmVUcmFu
c2Zvcm0gdCA9IHRyYW5zZm9ybS5zaGVhcigwLiwgdGFuKFNWR0FuZ2xlOjp0b3JhZChhbmdsZSkp
KTsKKyAgICAgICAgICAgIHJldHVybiBnZXRKU1NWR01hdHJpeChleGVjLCB0KTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCitKU1ZhbHVlKiBnZXRK
U1NWR01hdHJpeChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcCkKK3sK
KyAgICByZXR1cm4gbmV3IEpTU1ZHTWF0cml4KGV4ZWMsIHApOworfQorCitBZmZpbmVUcmFuc2Zv
cm0gdG9BZmZpbmVUcmFuc2Zvcm0oSlNWYWx1ZSogdmFsKQoreworICAgIHJldHVybiB2YWwtPmlz
T2JqZWN0KCZKU1NWR01hdHJpeDo6aW5mbykgPyBzdGF0aWNfY2FzdDxKU1NWR01hdHJpeCo+KHZh
bCktPmltcGwoKSA6IEFmZmluZVRyYW5zZm9ybSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBTVkdfU1VQUE9SVApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1NWR01hdHJpeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdNYXRy
aXguaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdNYXRyaXguaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBB
cHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBKU1NWR01hdHJpeF9oCisjZGVmaW5lIEpTU1ZHTWF0cml4X2gKKworI2lmZGVmIFNWR19TVVBQ
T1JUCisKKyNpbmNsdWRlICJranNfYmluZGluZy5oIgorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9y
bS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0tKU19ERUZJTkVfUFJPVE9UWVBFKEpTU1ZH
TWF0cml4UHJvdG8pCisKK2NsYXNzIEpTU1ZHTWF0cml4IDogcHVibGljIEtKUzo6RE9NT2JqZWN0
IHsKK3B1YmxpYzoKKyAgICBKU1NWR01hdHJpeChLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYpOworICAgIH5KU1NWR01hdHJpeCgpOworCisgICAgdmlydHVhbCBib29sIGdl
dE93blByb3BlcnR5U2xvdChLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6SWRlbnRpZmllciYs
IEtKUzo6UHJvcGVydHlTbG90Jik7CisgICAgSlNWYWx1ZSogZ2V0VmFsdWVQcm9wZXJ0eShLSlM6
OkV4ZWNTdGF0ZSosIGludCB0b2tlbikgY29uc3Q7CisKKyAgICB2aXJ0dWFsIHZvaWQgcHV0KEtK
Uzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpJZGVudGlmaWVyJiwgS0pTOjpKU1ZhbHVlKiwgaW50
IGF0dHIgPSBLSlM6Ok5vbmUpOworICAgIHZvaWQgcHV0VmFsdWVQcm9wZXJ0eShLSlM6OkV4ZWNT
dGF0ZSosIGludCwgS0pTOjpKU1ZhbHVlKiwgaW50IGF0dHIpOworCisgICAgdmlydHVhbCBjb25z
dCBLSlM6OkNsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJmluZm87IH0KKyAg
ICBzdGF0aWMgY29uc3QgS0pTOjpDbGFzc0luZm8gaW5mbzsKKworICAgIGVudW0geyBNYXRyaXhB
LCBNYXRyaXhCLCBNYXRyaXhDLCBNYXRyaXhELCBNYXRyaXhFLCBNYXRyaXhGLAorICAgICAgICAg
ICBNYXRyaXhNdWx0aXBseSwgTWF0cml4SW52ZXJzZSwgTWF0cml4VHJhbnNsYXRlLCBNYXRyaXhT
Y2FsZSwKKyAgICAgICAgICAgTWF0cml4U2NhbGVOb25Vbmlmb3JtLCBNYXRyaXhSb3RhdGUsIE1h
dHJpeFJvdGF0ZUZyb21WZWN0b3IsCisgICAgICAgICAgIE1hdHJpeEZsaXBYLCBNYXRyaXhGbGlw
WSwgTWF0cml4U2tld1gsIE1hdHJpeFNrZXdZIH07CisKKyAgICBBZmZpbmVUcmFuc2Zvcm0gaW1w
bCgpIHsgcmV0dXJuIG1fdHJhbnNmb3JtOyB9CisgCitwcml2YXRlOgorICAgIEFmZmluZVRyYW5z
Zm9ybSBtX3RyYW5zZm9ybTsKKyAgICBmcmllbmQgY2xhc3MgSlNTVkdNYXRyaXhQcm90bzsKK307
CisKK0tKUzo6SlNWYWx1ZSogZ2V0SlNTVkdNYXRyaXgoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mKTsKK0FmZmluZVRyYW5zZm9ybSB0b0FmZmluZVRyYW5zZm9ybShLSlM6
OkpTVmFsdWUqKTsKKyAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTVkdf
U1VQUE9SVAorCisjZW5kaWYgLy8gSlNTVkdNYXRyaXhfaApJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1NWR1BvaW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
U1ZHUG9pbnQuY3BwCShyZXZpc2lvbiAxODE0OSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNT
VkdQb2ludC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJK
U1NWR1BvaW50LmgiCiAKICNpbmNsdWRlICJKU1NWR01hdHJpeC5oIgotI2luY2x1ZGUgIlNWR01h
dHJpeC5oIgogI2luY2x1ZGUgIkpTU1ZHUG9pbnRUYWJsZS5jcHAiCiAKIHVzaW5nIG5hbWVzcGFj
ZSBLSlM7CkBAIC05OSwxOCArOTgsMTQgQEAgSlNWYWx1ZSogSlNTVkdQb2ludFByb3RvRnVuYzo6
Y2FsbEFzRnVuYwogICAgIGlmICghdGhpc09iai0+aW5oZXJpdHMoJkpTU1ZHUG9pbnQ6OmluZm8p
KQogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOwogCi0jaWZkZWYg
U1ZHX1NVUFBPUlQKICAgICBGbG9hdFBvaW50IHBvaW50ID0gc3RhdGljX2Nhc3Q8SlNTVkdQb2lu
dCo+KHRoaXNPYmopLT5pbXBsKCk7CiAgICAgc3dpdGNoIChpZCkgewogICAgICAgICBjYXNlIEpT
U1ZHUG9pbnQ6Ok1hdHJpeFRyYW5zZm9ybTogewotICAgICAgICAgICAgU1ZHTWF0cml4KiBtYXQg
PSB0b1NWR01hdHJpeChhcmdzWzBdKTsKLSAgICAgICAgICAgIGlmICghbWF0KQotICAgICAgICAg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgICAgICAgICAgRmxvYXRQb2ludCBwID0g
cG9pbnQubWF0cml4VHJhbnNmb3JtKG1hdC0+bWF0cml4KCkpOworICAgICAgICAgICAgQWZmaW5l
VHJhbnNmb3JtIG1hdCA9IHRvQWZmaW5lVHJhbnNmb3JtKGFyZ3NbMF0pOworICAgICAgICAgICAg
RmxvYXRQb2ludCBwID0gcG9pbnQubWF0cml4VHJhbnNmb3JtKG1hdCk7CiAgICAgICAgICAgICBy
ZXR1cm4gZ2V0SlNTVkdQb2ludChleGVjLCBwKTsKICAgICAgICAgfQogICAgIH0KLSNlbmRpZgog
CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
SW50ZXJuYWwuaAkocmV2aXNpb24gMTgxNDkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
SW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCAiRE9N
UkdCQ29sb3IuaCIKIAogI2lmZGVmIFNWR19TVVBQT1JUCisjaW1wb3J0ICJET01TVkdNYXRyaXgu
aCIKICNpbXBvcnQgIkRPTVNWR051bWJlci5oIgogI2ltcG9ydCAiRE9NU1ZHUG9pbnQuaCIKICNp
bXBvcnQgIkRPTVNWR1JlY3QuaCIKQEAgLTIxMCw3ICsyMTEsNiBAQAogI2ltcG9ydCAiRE9NU1ZH
TGluZWFyR3JhZGllbnRFbGVtZW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVNWR01hcmtlckVs
ZW1lbnRJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NU1ZHTWFza0VsZW1lbnRJbnRlcm5hbC5oIgot
I2ltcG9ydCAiRE9NU1ZHTWF0cml4SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVNWR01ldGFkYXRh
RWxlbWVudEludGVybmFsLmgiCiAjaW1wb3J0ICJET01TVkdOdW1iZXJMaXN0SW50ZXJuYWwuaCIK
ICNpbXBvcnQgIkRPTVNWR1BhaW50SW50ZXJuYWwuaCIKQEAgLTI3NSw2ICsyNzUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgTm9kZUZpbHRlcjsKIAogI2lmZGVmIFNWR19TVVBQ
T1JUCisgICAgY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogICAgIGNsYXNzIEZsb2F0UG9pbnQ7CiAg
ICAgY2xhc3MgRmxvYXRSZWN0OwogI2VuZGlmIC8vIFNWR19TVVBQT1JUCkBAIC0zMjIsNiArMzIz
LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC0gKFdlYkNvcmU6OkZsb2F0UmVjdClfU1ZHUmVj
dDsKIEBlbmQKIAorQGludGVyZmFjZSBET01TVkdNYXRyaXggKFdlYkNvcmVJbnRlcm5hbCkKKysg
KERPTVNWR01hdHJpeCAqKV9TVkdNYXRyaXhXaXRoOihXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0p
aW1wbDsKKy0gKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSlfU1ZHTWF0cml4OworQGVuZAorCiAj
ZW5kaWYgLy8gU1ZHX1NVUFBPUlQKIAogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
U1ZHTWF0cml4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVNWR01h
dHJpeC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVNWR01hdHJp
eC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA0LTIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+Cisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbXBvcnQgPFdlYkNvcmUvRE9NT2JqZWN0Lmg+CisKK0BjbGFzcyBET01TVkdNYXRy
aXg7CisKK0BpbnRlcmZhY2UgRE9NU1ZHTWF0cml4IDogRE9NT2JqZWN0CistIChmbG9hdClhOwor
LSAodm9pZClzZXRBOihmbG9hdCluZXdBOworLSAoZmxvYXQpYjsKKy0gKHZvaWQpc2V0QjooZmxv
YXQpbmV3QjsKKy0gKGZsb2F0KWM7CistICh2b2lkKXNldEM6KGZsb2F0KW5ld0M7CistIChmbG9h
dClkOworLSAodm9pZClzZXREOihmbG9hdCluZXdEOworLSAoZmxvYXQpZTsKKy0gKHZvaWQpc2V0
RTooZmxvYXQpbmV3RTsKKy0gKGZsb2F0KWY7CistICh2b2lkKXNldEY6KGZsb2F0KW5ld0Y7Cist
IChET01TVkdNYXRyaXggKiltdWx0aXBseTooRE9NU1ZHTWF0cml4ICopc2Vjb25kTWF0cml4Owor
LSAoRE9NU1ZHTWF0cml4ICopaW52ZXJzZTsKKy0gKERPTVNWR01hdHJpeCAqKXRyYW5zbGF0ZToo
ZmxvYXQpeCB5OihmbG9hdCl5OworLSAoRE9NU1ZHTWF0cml4ICopc2NhbGU6KGZsb2F0KXNjYWxl
RmFjdG9yOworLSAoRE9NU1ZHTWF0cml4ICopc2NhbGVOb25Vbmlmb3JtOihmbG9hdClzY2FsZUZh
Y3Rvclggc2NhbGVGYWN0b3JZOihmbG9hdClzY2FsZUZhY3Rvclk7CistIChET01TVkdNYXRyaXgg
Kilyb3RhdGU6KGZsb2F0KWFuZ2xlOworLSAoRE9NU1ZHTWF0cml4ICopcm90YXRlRnJvbVZlY3Rv
cjooZmxvYXQpeCB5OihmbG9hdCl5OworLSAoRE9NU1ZHTWF0cml4ICopZmxpcFg7CistIChET01T
VkdNYXRyaXggKilmbGlwWTsKKy0gKERPTVNWR01hdHJpeCAqKXNrZXdYOihmbG9hdClhbmdsZTsK
Ky0gKERPTVNWR01hdHJpeCAqKXNrZXdZOihmbG9hdClhbmdsZTsKK0BlbmQKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3Mvb2JqYy9ET01TVkdNYXRyaXgubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTVNWR01hdHJpeC5tbQkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9ET01TVkdNYXRyaXgubW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTk3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53
ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmZGVmIFNW
R19TVVBQT1JUCisKKyNpbXBvcnQgIkRPTVNWR01hdHJpeC5oIgorCisjaW1wb3J0ICJET01JbnRl
cm5hbC5oIgorI2ltcG9ydCAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW1wb3J0ICJTVkdBbmdsZS5o
IgorCisjZGVmaW5lIElNUEwgcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpBZmZpbmVUcmFuc2Zv
cm0qPihfaW50ZXJuYWwpCisKK0BpbXBsZW1lbnRhdGlvbiBET01TVkdNYXRyaXgKKworLSAodm9p
ZClkZWFsbG9jCit7CisgICAgZGVsZXRlIElNUEw7CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQor
CistICh2b2lkKWZpbmFsaXplCit7CisgICAgZGVsZXRlIElNUEw7CisgICAgW3N1cGVyIGZpbmFs
aXplXTsKK30KKworLSAoZmxvYXQpYQoreworICAgIHJldHVybiBJTVBMLT5tMTEoKTsKK30KKwor
LSAodm9pZClzZXRBOihmbG9hdCluZXdBCit7CisgICAgSU1QTC0+c2V0TWF0cml4KG5ld0EsIElN
UEwtPm0xMigpLCBJTVBMLT5tMjEoKSwgSU1QTC0+bTIyKCksIElNUEwtPmR4KCksIElNUEwtPmR5
KCkpOworfQorCistIChmbG9hdCliCit7CisgICAgcmV0dXJuIElNUEwtPm0xMigpOworfQorCist
ICh2b2lkKXNldEI6KGZsb2F0KW5ld0IKK3sKKyAgICBJTVBMLT5zZXRNYXRyaXgoSU1QTC0+bTEx
KCksIG5ld0IsIElNUEwtPm0yMSgpLCBJTVBMLT5tMjIoKSwgSU1QTC0+ZHgoKSwgSU1QTC0+ZHko
KSk7Cit9CisKKy0gKGZsb2F0KWMKK3sKKyAgICByZXR1cm4gSU1QTC0+bTIxKCk7Cit9CisKKy0g
KHZvaWQpc2V0QzooZmxvYXQpbmV3QworeworICAgIElNUEwtPnNldE1hdHJpeChJTVBMLT5tMTEo
KSwgSU1QTC0+bTEyKCksIG5ld0MsIElNUEwtPm0yMigpLCBJTVBMLT5keCgpLCBJTVBMLT5keSgp
KTsKK30KKworLSAoZmxvYXQpZAoreworICAgIHJldHVybiBJTVBMLT5tMjIoKTsKK30KKworLSAo
dm9pZClzZXREOihmbG9hdCluZXdECit7CisgICAgSU1QTC0+c2V0TWF0cml4KElNUEwtPm0xMSgp
LCBJTVBMLT5tMTIoKSwgSU1QTC0+bTIxKCksIG5ld0QsIElNUEwtPmR4KCksIElNUEwtPmR5KCkp
OworfQorCistIChmbG9hdCllCit7CisgICAgcmV0dXJuIElNUEwtPm0yMigpOworfQorCistICh2
b2lkKXNldEU6KGZsb2F0KW5ld0UKK3sKKyAgICBJTVBMLT5zZXRNYXRyaXgoSU1QTC0+bTExKCks
IElNUEwtPm0xMigpLCBJTVBMLT5tMjEoKSwgSU1QTC0+bTIyKCksIG5ld0UsIElNUEwtPmR5KCkp
OworfQorCistIChmbG9hdClmCit7CisgICAgcmV0dXJuIElNUEwtPm0yMigpOworfQorCistICh2
b2lkKXNldEY6KGZsb2F0KW5ld0YKK3sKKyAgICBJTVBMLT5zZXRNYXRyaXgoSU1QTC0+bTExKCks
IElNUEwtPm0xMigpLCBJTVBMLT5tMjEoKSwgSU1QTC0+bTIyKCksIElNUEwtPmR4KCksIG5ld0Yp
OworfQorCistIChET01TVkdNYXRyaXggKiltdWx0aXBseTooRE9NU1ZHTWF0cml4ICopbWF0cml4
Cit7CisgICAgQVNTRVJUKG1hdHJpeCk7CisgICAgLy9yZXR1cm4gW0RPTVNWR01hdHJpeCBfU1ZH
TWF0cml4V2l0aDpJTVBMICogW21hdHJpeCBfU1ZHTWF0cml4XS0+bWF0cml4KCldOworICAgIHJl
dHVybiBbRE9NU1ZHTWF0cml4IF9TVkdNYXRyaXhXaXRoOklNUEwtPmludmVydCgpXTsKK30KKwor
LSAoRE9NU1ZHTWF0cml4ICopaW52ZXJzZQoreworICAgIHJldHVybiBbRE9NU1ZHTWF0cml4IF9T
VkdNYXRyaXhXaXRoOklNUEwtPmludmVydCgpXTsKK30KKworLSAoRE9NU1ZHTWF0cml4ICopdHJh
bnNsYXRlOihmbG9hdCl4IHk6KGZsb2F0KXkKK3sKKyAgICByZXR1cm4gW0RPTVNWR01hdHJpeCBf
U1ZHTWF0cml4V2l0aDpJTVBMLT50cmFuc2xhdGUoeCwgeSldOworfQorCistIChET01TVkdNYXRy
aXggKilzY2FsZTooZmxvYXQpc2NhbGVGYWN0b3IKK3sKKyAgICByZXR1cm4gW0RPTVNWR01hdHJp
eCBfU1ZHTWF0cml4V2l0aDpJTVBMLT5zY2FsZShzY2FsZUZhY3Rvciwgc2NhbGVGYWN0b3IpXTsK
K30KKworLSAoRE9NU1ZHTWF0cml4ICopc2NhbGVOb25Vbmlmb3JtOihmbG9hdClzY2FsZUZhY3Rv
clggc2NhbGVGYWN0b3JZOihmbG9hdClzY2FsZUZhY3RvclkKK3sKKyAgICByZXR1cm4gW0RPTVNW
R01hdHJpeCBfU1ZHTWF0cml4V2l0aDpJTVBMLT5zY2FsZShzY2FsZUZhY3RvclgsIHNjYWxlRmFj
dG9yWSldOworfQorCistIChET01TVkdNYXRyaXggKilyb3RhdGU6KGZsb2F0KWFuZ2xlCit7Cisg
ICAgcmV0dXJuIFtET01TVkdNYXRyaXggX1NWR01hdHJpeFdpdGg6SU1QTC0+cm90YXRlKGFuZ2xl
KV07Cit9CisKKy0gKERPTVNWR01hdHJpeCAqKXJvdGF0ZUZyb21WZWN0b3I6KGZsb2F0KXggeToo
ZmxvYXQpeTsKK3sKKyAgICByZXR1cm4gW0RPTVNWR01hdHJpeCBfU1ZHTWF0cml4V2l0aDpJTVBM
LT5yb3RhdGUoV2ViQ29yZTo6U1ZHQW5nbGU6OnRvZGVnKGF0YW4yKHksIHgpKSldOworfQorCist
IChET01TVkdNYXRyaXggKilmbGlwWAoreworICAgIHJldHVybiBbRE9NU1ZHTWF0cml4IF9TVkdN
YXRyaXhXaXRoOklNUEwtPnNjYWxlKC0xLiwgMS4pXTsKK30KKworLSAoRE9NU1ZHTWF0cml4ICop
ZmxpcFkKK3sKKyAgICByZXR1cm4gW0RPTVNWR01hdHJpeCBfU1ZHTWF0cml4V2l0aDpJTVBMLT5z
Y2FsZSgxLiwgLTEuKV07Cit9CisKKy0gKERPTVNWR01hdHJpeCAqKXNrZXdYOihmbG9hdClhbmds
ZQoreworICAgIHJldHVybiBbRE9NU1ZHTWF0cml4IF9TVkdNYXRyaXhXaXRoOklNUEwtPnNoZWFy
KHRhbihXZWJDb3JlOjpTVkdBbmdsZTo6dG9yYWQoYW5nbGUpKSwgMC4pXTsKK30KKworLSAoRE9N
U1ZHTWF0cml4ICopc2tld1k6KGZsb2F0KWFuZ2xlCit7CisgICAgcmV0dXJuIFtET01TVkdNYXRy
aXggX1NWR01hdHJpeFdpdGg6SU1QTC0+c2hlYXIoMC4sIHRhbihXZWJDb3JlOjpTVkdBbmdsZTo6
dG9yYWQoYW5nbGUpKSldOworfQorCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBET01TVkdNYXRy
aXggKFdlYkNvcmVJbnRlcm5hbCkKKworLSAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtKV9TVkdN
YXRyaXgKK3sKKyAgICByZXR1cm4gKihJTVBMKTsKK30KKworLSAoaWQpX2luaXRXaXRoQWZmaW5l
VHJhbnNmb3JtOihXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0pdmFsdWUKK3sKKyAgICAvLyBGSVhN
RTogSW1wbGVtZW50IENhY2hpbmcKKyAgICBbc3VwZXIgX2luaXRdOworICAgIFdlYkNvcmU6OkFm
ZmluZVRyYW5zZm9ybSAqaW1wbCA9IG5ldyBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0odmFsdWUp
OworICAgIF9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPihp
bXBsKTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworKyAoRE9NU1ZHTWF0cml4ICopX1NWR01hdHJp
eFdpdGg6KFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSlpbXBsCit7CisgICAgLy8gRklYTUU6IElt
cGxlbWVudCBDYWNoaW5nCisgICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIF9pbml0V2l0aEFmZmlu
ZVRyYW5zZm9ybTppbXBsXSBhdXRvcmVsZWFzZV07Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFNW
R19TVVBQT1JUCisKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01TVkdQb2ludC5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NU1ZHUG9pbnQubW0JKHJldmlz
aW9uIDE4MTQ5KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVNWR1BvaW50Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCwxMCArMzAsMTAgQEAKIAogI2ltcG9ydCAiRE9NU1ZHUG9pbnQuaCIK
IAorI2ltcG9ydCAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW1wb3J0ICJET01JbnRlcm5hbC5oIgog
I2ltcG9ydCAiRE9NU1ZHTWF0cml4LmgiCiAjaW1wb3J0ICJGbG9hdFBvaW50LmgiCi0jaW1wb3J0
ICJTVkdNYXRyaXguaCIKIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6
RmxvYXRQb2ludCo+KF9pbnRlcm5hbCkKIApAQCAtNzQsNyArNzQsNyBAQAogLSAoRE9NU1ZHUG9p
bnQgKiltYXRyaXhUcmFuc2Zvcm06KERPTVNWR01hdHJpeCAqKW1hdHJpeAogewogICAgIEFTU0VS
VChtYXRyaXgpOwotICAgIHJldHVybiBbRE9NU1ZHUG9pbnQgX1NWR1BvaW50V2l0aDpJTVBMLT5t
YXRyaXhUcmFuc2Zvcm0oW21hdHJpeCBfU1ZHTWF0cml4XS0+bWF0cml4KCkpXTsKKyAgICByZXR1
cm4gW0RPTVNWR1BvaW50IF9TVkdQb2ludFdpdGg6SU1QTC0+bWF0cml4VHJhbnNmb3JtKFttYXRy
aXggX1NWR01hdHJpeF0pXTsKIH0KIAogQGVuZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAxODE0OSkKKysrIFdlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTE1Niw3
ICsxNTYsNyBAQCBzdWIgQXZvaWRJbmNsdXNpb25PZlR5cGUKICAgICBteSAkdHlwZSA9IHNoaWZ0
OwogCiAgICAgIyBTcGVjaWFsIGNhc2U6IFNWR1JlY3QuaCAvIFNWR1BvaW50LmggLyBTVkdOdW1i
ZXIuaCBkbyBub3QgZXhpc3QuCi0gICAgcmV0dXJuIDEgaWYgJHR5cGUgZXEgIlNWR1JlY3QiIG9y
ICR0eXBlIGVxICJTVkdQb2ludCIgb3IgJHR5cGUgZXEgIlNWR051bWJlciI7CisgICAgcmV0dXJu
IDEgaWYgJHR5cGUgZXEgIlNWR1JlY3QiIG9yICR0eXBlIGVxICJTVkdQb2ludCIgb3IgJHR5cGUg
ZXEgIlNWR051bWJlciIgIG9yICR0eXBlIGVxICJTVkdNYXRyaXgiOwogICAgIHJldHVybiAwOwog
fQogCkBAIC0xMDAwLDYgKzEwMDAsNyBAQCBzdWIgR2V0TmF0aXZlVHlwZQogICAgIHJldHVybiAi
RXZlbnRUYXJnZXROb2RlKiIgaWYgJHR5cGUgZXEgIkV2ZW50VGFyZ2V0IjsKICAgICByZXR1cm4g
IkZsb2F0UmVjdCIgaWYgJHR5cGUgZXEgIlNWR1JlY3QiOwogICAgIHJldHVybiAiRmxvYXRQb2lu
dCIgaWYgJHR5cGUgZXEgIlNWR1BvaW50IjsKKyAgICByZXR1cm4gIkFmZmluZVRyYW5zZm9ybSIg
aWYgJHR5cGUgZXEgIlNWR01hdHJpeCI7CiAgICAgcmV0dXJuICJkb3VibGUiIGlmICR0eXBlIGVx
ICJTVkdOdW1iZXIiOwogICAgIHJldHVybiAiU1ZHUGFpbnQ6OlNWR1BhaW50VHlwZSIgaWYgJHR5
cGUgZXEgIlNWR1BhaW50VHlwZSI7CiAKQEAgLTExMTgsNiArMTExOSwxMCBAQCBzdWIgSlNWYWx1
ZVRvTmF0aXZlCiAgICAgICAgIHJldHVybiAidG9GbG9hdFBvaW50KCR2YWx1ZSkiOwogICAgIH0K
IAorICAgIGlmICgkdHlwZSBlcSAiU1ZHTWF0cml4IikgeworICAgICAgICAkaW1wbEluY2x1ZGVz
eyJKU1NWR01hdHJpeC5oIn0gPSAxOworICAgICAgICByZXR1cm4gInRvQWZmaW5lVHJhbnNmb3Jt
KCR2YWx1ZSkiOworICAgIH0KIAogICAgICMgRGVmYXVsdCwgYXNzdW1lIGF1dG9nZW5lcmF0ZWQg
dHlwZSBjb252ZXJzaW9uIHJvdXRpbmVzCiAgICAgJGltcGxJbmNsdWRlc3siSlMkdHlwZS5oIn0g
PSAxOwpAQCAtMTE1MSw3ICsxMTU2LDcgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZQogICAgICAgICBy
ZXR1cm4gImdldERPTVJHQkNvbG9yKGV4ZWMsICR2YWx1ZSkiOwogICAgIH0KIAotICAgIGlmICgk
dHlwZSBlcSAiU1ZHUmVjdCIgb3IgJHR5cGUgZXEgIlNWR1BvaW50IiBvciAkdHlwZSBlcSAiU1ZH
TnVtYmVyIikgeworICAgIGlmICgkdHlwZSBlcSAiU1ZHUmVjdCIgb3IgJHR5cGUgZXEgIlNWR1Bv
aW50IiBvciAkdHlwZSBlcSAiU1ZHTnVtYmVyIiBvciAkdHlwZSBlcSAiU1ZHTWF0cml4Iikgewog
ICAgICAgICAkaW1wbEluY2x1ZGVzeyJKUyR0eXBlLmgifSA9IDE7CiAgICAgICAgIHJldHVybiAi
Z2V0SlMkdHlwZShleGVjLCAkdmFsdWUpIjsKICAgICB9CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCShyZXZpc2lvbiAxODE0OSkKKysrIFdl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQkod29ya2luZyBjb3B5
KQpAQCAtNTMyLDYgKzUzMiwxMiBAQCBzdWIgQWRkSW5jbHVkZXNGb3JUeXBlCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKKyAgICBpZiAoJHR5cGUgZXEgIlNWR01hdHJpeCIpIHsKKyAgICAgICAg
JGltcGxJbmNsdWRlc3siQWZmaW5lVHJhbnNmb3JtLmgifSA9IDE7CisgICAgICAgICRpbXBsSW5j
bHVkZXN7IkRPTSR0eXBlLmgifSA9IDE7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBp
ZiAoJHR5cGUgPX4gLyhcdyspKEFic3xSZWwpJC8pIHsKICAgICAgICAgJGltcGxJbmNsdWRlc3si
JDEuaCJ9ID0gMTsKICAgICAgICAgJGltcGxJbmNsdWRlc3siRE9NJHR5cGUuaCJ9ID0gMTsKQEAg
LTk2Nyw3ICs5NzMsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAg
ICAgICRnZXR0ZXJDb250ZW50VGFpbCAuPSAiKV0iOwogICAgICAgICAgICAgfSBlbHNpZiAoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29udmVydEZyb21TdHJp
bmcifSkgewogICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50VGFpbCAuPSAiLnRvSW50KCki
OwotICAgICAgICAgICAgfSBlbHNpZiAoJGlkbFR5cGUgZXEgIlJHQkNvbG9yIiBvciAkaWRsVHlw
ZSBlcSAiU1ZHUG9pbnQiIG9yICRpZGxUeXBlIGVxICJTVkdSZWN0IiBvciAkaWRsVHlwZSBlcSAi
U1ZHTnVtYmVyIikgeworICAgICAgICAgICAgfSBlbHNpZiAoJGlkbFR5cGUgZXEgIlJHQkNvbG9y
IiBvciAkaWRsVHlwZSBlcSAiU1ZHUG9pbnQiIG9yICRpZGxUeXBlIGVxICJTVkdSZWN0IiBvciAk
aWRsVHlwZSBlcSAiU1ZHTnVtYmVyIiBvciAkaWRsVHlwZSBlcSAiU1ZHTWF0cml4IikgewogICAg
ICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50SGVhZCA9ICJbJGF0dHJpYnV0ZVR5cGVTYW5zUHRy
ICR0eXBlTWFrZXI6IiAuICRnZXR0ZXJDb250ZW50SGVhZDsKICAgICAgICAgICAgICAgICAkZ2V0
dGVyQ29udGVudFRhaWwgLj0gIl0iOwogICAgICAgICAgICAgfSBlbHNpZiAoJHR5cGVNYWtlciBu
ZSAiIikgewpAQCAtMTE2Miw3ICsxMTY4LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
ICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgICMgU3Vycm91bmQg
Z2V0dGVyIHdpdGggVHlwZU1ha2VyCi0gICAgICAgICAgICAgICAgICAgIGlmICgkcmV0dXJuVHlw
ZUNsYXNzIGVxICJET01SR0JDb2xvciIgb3IgJHJldHVyblR5cGVDbGFzcyBlcSAiRE9NU1ZHUG9p
bnQiIG9yICRyZXR1cm5UeXBlQ2xhc3MgZXEgIkRPTVNWR1JlY3QiIG9yICRyZXR1cm5UeXBlQ2xh
c3MgZXEgIkRPTVNWR051bWJlciIpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRyZXR1cm5U
eXBlQ2xhc3MgZXEgIkRPTVJHQkNvbG9yIiBvciAkcmV0dXJuVHlwZUNsYXNzIGVxICJET01TVkdQ
b2ludCIgb3IgJHJldHVyblR5cGVDbGFzcyBlcSAiRE9NU1ZHUmVjdCIgb3IgJHJldHVyblR5cGVD
bGFzcyBlcSAiRE9NU1ZHTnVtYmVyIiBvciAkcmV0dXJuVHlwZUNsYXNzIGVxICJET01TVkdNYXRy
aXgiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGVudCA9ICJbJHJldHVyblR5cGVD
bGFzcyAkdHlwZU1ha2VyOiIgLiAkY29udGVudCAuICJdIjsKICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICRjb250ZW50ID0gIlskcmV0dXJuVHlw
ZUNsYXNzICR0eXBlTWFrZXI6V1RGOjpnZXRQdHIoIiAuICRjb250ZW50IC4gIildIjsKSW5kZXg6
IFdlYkNvcmUva3N2ZzIvbWlzYy9LU1ZHVGltZVNjaGVkdWxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9rc3ZnMi9taXNjL0tTVkdUaW1lU2NoZWR1bGVyLmNwcAkocmV2aXNpb24gMTgxNDkp
CisrKyBXZWJDb3JlL2tzdmcyL21pc2MvS1NWR1RpbWVTY2hlZHVsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1l
bnQuaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0LmgiCiAjaW5jbHVkZSAiU1ZHRE9NSW1w
bGVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJTVkdNYXRyaXguaCIKICNpbmNsdWRlICJTVkdOYW1l
cy5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudC5oIgpJbmRleDogV2ViQ29yZS9rc3ZnMi9taXNjL1NWR0ltYWdl
TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL21pc2MvU1ZHSW1hZ2VMb2Fk
ZXIuY3BwCShyZXZpc2lvbiAxODE0OSkKKysrIFdlYkNvcmUva3N2ZzIvbWlzYy9TVkdJbWFnZUxv
YWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEwICsyNiw5IEBACiAjaW5jbHVkZSAiRG9j
TG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKIAotI2luY2x1ZGUgIlNWR05hbWVzLmgi
CiAjaW5jbHVkZSAiU1ZHSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCi0j
aW5jbHVkZSAiU1ZHTWF0cml4LmgiCisjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKIAogI2luY2x1ZGUg
IlJlbmRlckltYWdlLmgiCiAKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVUcmFu
c2Zvcm1FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmlt
YXRlVHJhbnNmb3JtRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MTQ5KQorKysgV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw3ICsyNiw3IEBACiAKICNpbmNsdWRlICJLU1ZHVGltZVNjaGVkdWxlci5oIgogI2luY2x1ZGUg
IlNWR0FuZ2xlLmgiCi0jaW5jbHVkZSAiU1ZHTWF0cml4LmgiCisjaW5jbHVkZSAiQWZmaW5lVHJh
bnNmb3JtLmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaCIKICNp
bmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtLmgiCkBAIC0x
MzksMTAgKzEzOSwxMCBAQCB2b2lkIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpoYW5kbGVU
CiAgICAgICAgICAgICAgICAgaWYgKCFtX2Zyb21UcmFuc2Zvcm0pCiAgICAgICAgICAgICAgICAg
ICAgIG1fZnJvbVRyYW5zZm9ybSA9IG5ldyBTVkdUcmFuc2Zvcm0oKTsKIAotICAgICAgICAgICAg
ICAgIFNWR01hdHJpeCogYnlNYXRyaXggPSBtX3RvVHJhbnNmb3JtLT5tYXRyaXgoKTsKLSAgICAg
ICAgICAgICAgICBTVkdNYXRyaXgqIGZyb21NYXRyaXggPSBtX2Zyb21UcmFuc2Zvcm0tPm1hdHJp
eCgpOworICAgICAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBieU1hdHJpeCA9IG1fdG9UcmFu
c2Zvcm0tPm1hdHJpeCgpOworICAgICAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBmcm9tTWF0
cml4ID0gbV9mcm9tVHJhbnNmb3JtLT5tYXRyaXgoKTsKIAotICAgICAgICAgICAgICAgIGJ5TWF0
cml4LT5tdWx0aXBseShmcm9tTWF0cml4KTsKKyAgICAgICAgICAgICAgICBieU1hdHJpeCAqPSBm
cm9tTWF0cml4OwogCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0x
ODYsOCArMTg2LDggQEAgdm9pZCBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6aGFuZGxlVAog
ICAgICAgICAgICAgaWYgKCF2YWx1ZTEuaXNFbXB0eSgpICYmICF2YWx1ZTIuaXNFbXB0eSgpKSB7
CiAgICAgICAgICAgICAgICAgYm9vbCBhcHBseSA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGlm
IChtX3RvVHJhbnNmb3JtICYmIG1fZnJvbVRyYW5zZm9ybSkgeyAgICAKLSAgICAgICAgICAgICAg
ICAgICAgcVRvTWF0cml4ID0gbV90b1RyYW5zZm9ybS0+bWF0cml4KCktPm1hdHJpeCgpOwotICAg
ICAgICAgICAgICAgICAgICBxRnJvbU1hdHJpeCA9IG1fZnJvbVRyYW5zZm9ybS0+bWF0cml4KCkt
Pm1hdHJpeCgpOworICAgICAgICAgICAgICAgICAgICBxVG9NYXRyaXggPSBtX3RvVHJhbnNmb3Jt
LT5tYXRyaXgoKTsKKyAgICAgICAgICAgICAgICAgICAgcUZyb21NYXRyaXggPSBtX2Zyb21UcmFu
c2Zvcm0tPm1hdHJpeCgpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg
ICAgYXBwbHkgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICB1c2VUaW1lUGVyY2VudGFnZSA9
IDEuMDsKQEAgLTIwOSwyOCArMjA5LDI4IEBAIHZvaWQgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1l
bnQ6OmhhbmRsZVQKICAgICAgICAgICAgIHVzZVRpbWVQZXJjZW50YWdlID0gY2FsY3VsYXRlUmVs
YXRpdmVUaW1lUGVyY2VudGFnZSh0aW1lUGVyY2VudGFnZSwgbV9jdXJyZW50SXRlbSk7CiAgICAg
fQogCi0gICAgaWYgKG1fdG9UcmFuc2Zvcm0gJiYgbV90b1RyYW5zZm9ybS0+bWF0cml4KCkgJiYg
cVRvTWF0cml4LmlzSWRlbnRpdHkoKSkKLSAgICAgICAgcVRvTWF0cml4ID0gbV90b1RyYW5zZm9y
bS0+bWF0cml4KCktPm1hdHJpeCgpOworICAgIGlmIChtX3RvVHJhbnNmb3JtICYmIHFUb01hdHJp
eC5pc0lkZW50aXR5KCkpCisgICAgICAgIHFUb01hdHJpeCA9IG1fdG9UcmFuc2Zvcm0tPm1hdHJp
eCgpOwogCi0gICAgaWYgKG1fZnJvbVRyYW5zZm9ybSAmJiBtX2Zyb21UcmFuc2Zvcm0tPm1hdHJp
eCgpICYmIHFGcm9tTWF0cml4LmlzSWRlbnRpdHkoKSkKLSAgICAgICAgcUZyb21NYXRyaXggPSBt
X2Zyb21UcmFuc2Zvcm0tPm1hdHJpeCgpLT5tYXRyaXgoKTsKLQotICAgIGlmICghbV90cmFuc2Zv
cm1NYXRyaXgpCisgICAgaWYgKG1fZnJvbVRyYW5zZm9ybSAmJiBxRnJvbU1hdHJpeC5pc0lkZW50
aXR5KCkpCisgICAgICAgIHFGcm9tTWF0cml4ID0gbV9mcm9tVHJhbnNmb3JtLT5tYXRyaXgoKTsK
Ky8qCisgICAgaWYgKG1fdHJhbnNmb3JtTWF0cml4KQogICAgICAgICBtX3RyYW5zZm9ybU1hdHJp
eCA9IG5ldyBTVkdNYXRyaXgoKTsKICAgICBlbHNlIHsKLSAgICAgICAgbV90cmFuc2Zvcm1NYXRy
aXgtPnJlc2V0KCk7CisgICAgICAgIG1fdHJhbnNmb3JtTWF0cml4LnJlc2V0KCk7CiAKICAgICAg
ICAgaWYgKGlzQWNjdW11bGF0ZWQoKSAmJiByZXBlYXRpb25zKCkgIT0gMC4wICYmIG1fbGFzdE1h
dHJpeCkKICAgICAgICAgICAgIG1fdHJhbnNmb3JtTWF0cml4LT5tdWx0aXBseShtX2xhc3RNYXRy
aXguZ2V0KCkpOwogICAgIH0KLSAgICAKKyAqLyAgIAogICAgIHN3aXRjaCAobV90eXBlKSB7CiAg
ICAgICAgIGNhc2UgU1ZHVHJhbnNmb3JtOjpTVkdfVFJBTlNGT1JNX1RSQU5TTEFURToKICAgICAg
ICAgewogICAgICAgICAgICAgZG91YmxlIGR4ID0gKChxVG9NYXRyaXguZHgoKSAtIHFGcm9tTWF0
cml4LmR4KCkpICogdXNlVGltZVBlcmNlbnRhZ2UpICsgcUZyb21NYXRyaXguZHgoKTsKICAgICAg
ICAgICAgIGRvdWJsZSBkeSA9ICgocVRvTWF0cml4LmR5KCkgLSBxRnJvbU1hdHJpeC5keSgpKSAq
IHVzZVRpbWVQZXJjZW50YWdlKSArIHFGcm9tTWF0cml4LmR5KCk7CiAKLSAgICAgICAgICAgIG1f
dHJhbnNmb3JtTWF0cml4LT50cmFuc2xhdGUoZHgsIGR5KTsKKyAgICAgICAgICAgIG1fdHJhbnNm
b3JtTWF0cml4LnRyYW5zbGF0ZShkeCwgZHkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBTVkdUcmFuc2Zvcm06OlNWR19UUkFOU0ZPUk1fU0NBTEU6CkBAIC0y
MzgsNyArMjM4LDcgQEAgdm9pZCBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6aGFuZGxlVAog
ICAgICAgICAgICAgZG91YmxlIHN4ID0gKChxVG9NYXRyaXgubTExKCkgLSBxRnJvbU1hdHJpeC5t
MTEoKSkgKiB1c2VUaW1lUGVyY2VudGFnZSkgKyBxRnJvbU1hdHJpeC5tMTEoKTsKICAgICAgICAg
ICAgIGRvdWJsZSBzeSA9ICgocVRvTWF0cml4Lm0yMigpIC0gcUZyb21NYXRyaXgubTIyKCkpICog
dXNlVGltZVBlcmNlbnRhZ2UpICsgcUZyb21NYXRyaXgubTIyKCk7CiAKLSAgICAgICAgICAgIG1f
dHJhbnNmb3JtTWF0cml4LT5zY2FsZU5vblVuaWZvcm0oc3gsIHN5KTsKKyAgICAgICAgICAgIG1f
dHJhbnNmb3JtTWF0cml4LnNjYWxlKHN4LCBzeSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIFNWR1RyYW5zZm9ybTo6U1ZHX1RSQU5TRk9STV9ST1RBVEU6CkBA
IC0yNjUsOSArMjY1LDkgQEAgdm9pZCBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6aGFuZGxl
VAogICAgICAgICAgICAgZG91YmxlIGN4ID0gKHRvQ3ggLSBmcm9tQ3gpICogdXNlVGltZVBlcmNl
bnRhZ2UgKyBmcm9tQ3g7CiAgICAgICAgICAgICBkb3VibGUgY3kgPSAodG9DeSAtIGZyb21DeSkg
KiB1c2VUaW1lUGVyY2VudGFnZSArIGZyb21DeTsKIAotICAgICAgICAgICAgbV90cmFuc2Zvcm1N
YXRyaXgtPnRyYW5zbGF0ZShjeCwgY3kpOwotICAgICAgICAgICAgbV90cmFuc2Zvcm1NYXRyaXgt
PnJvdGF0ZShhbmdsZSk7Ci0gICAgICAgICAgICBtX3RyYW5zZm9ybU1hdHJpeC0+dHJhbnNsYXRl
KC1jeCwgLWN5KTsKKyAgICAgICAgICAgIG1fdHJhbnNmb3JtTWF0cml4LnRyYW5zbGF0ZShjeCwg
Y3kpOworICAgICAgICAgICAgbV90cmFuc2Zvcm1NYXRyaXgucm90YXRlKGFuZ2xlKTsKKyAgICAg
ICAgICAgIG1fdHJhbnNmb3JtTWF0cml4LnRyYW5zbGF0ZSgtY3gsIC1jeSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIFNWR1RyYW5zZm9ybTo6U1ZHX1RSQU5T
Rk9STV9TS0VXWDoKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIFNWR0FuaW1hdGVUcmFuc2Zvcm1F
bGVtZW50OjpoYW5kbGVUCiAgICAgICAgICAgICBkb3VibGUgc3ggPSAoU1ZHQW5nbGU6OnRvZGVn
KGF0YW4ocVRvTWF0cml4Lm0yMSgpKSAtIGF0YW4ocUZyb21NYXRyaXgubTIxKCkpKSAqCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgdXNlVGltZVBlcmNlbnRhZ2UpICsgU1ZHQW5nbGU6OnRvZGVn
KGF0YW4ocUZyb21NYXRyaXgubTIxKCkpKTsKIAotICAgICAgICAgICAgbV90cmFuc2Zvcm1NYXRy
aXgtPnNrZXdYKHN4KTsKKyAgICAgICAgICAgIG1fdHJhbnNmb3JtTWF0cml4LnNoZWFyKHN4LCAx
Lik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIFNWR1RyYW5z
Zm9ybTo6U1ZHX1RSQU5TRk9STV9TS0VXWToKQEAgLTI4Myw3ICsyODMsNyBAQCB2b2lkIFNWR0Fu
aW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpoYW5kbGVUCiAgICAgICAgICAgICBkb3VibGUgc3kgPSAo
U1ZHQW5nbGU6OnRvZGVnKGF0YW4ocVRvTWF0cml4Lm0xMigpKSAtIGF0YW4ocUZyb21NYXRyaXgu
bTEyKCkpKSAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlVGltZVBlcmNlbnRhZ2UpICsg
U1ZHQW5nbGU6OnRvZGVnKGF0YW4ocUZyb21NYXRyaXgubTEyKCkpKTsKIAotICAgICAgICAgICAg
bV90cmFuc2Zvcm1NYXRyaXgtPnNrZXdZKHN5KTsKKyAgICAgICAgICAgIG1fdHJhbnNmb3JtTWF0
cml4LnNoZWFyKDEuLCBzeSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBkZWZhdWx0OgpAQCAtMjk1LDEwICsyOTUsMTAgQEAgdm9pZCBTVkdBbmltYXRlVHJhbnNmb3Jt
RWxlbWVudDo6aGFuZGxlVAogICAgIHsKICAgICAgICAgaWYgKChtX3JlcGVhdENvdW50ID4gMCAm
JiBtX3JlcGVhdGlvbnMgPCBtX3JlcGVhdENvdW50IC0gMSkgfHwgaXNJbmRlZmluaXRlKG1fcmVw
ZWF0Q291bnQpKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2xhc3RNYXRyaXggPSBuZXcgU1ZH
TWF0cml4KCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChtX3RyYW5zZm9ybU1hdHJp
eCkKLSAgICAgICAgICAgICAgICBtX2xhc3RNYXRyaXgtPmNvcHkobV90cmFuc2Zvcm1NYXRyaXgu
Z2V0KCkpOworICAgICAgICAgICAgbV9sYXN0TWF0cml4LnJlc2V0KCk7CisKKyAgICAgICAgICAg
IGlmICghbV90cmFuc2Zvcm1NYXRyaXguaXNJZGVudGl0eSgpKQorICAgICAgICAgICAgICAgIG1f
bGFzdE1hdHJpeCA9IG1fdHJhbnNmb3JtTWF0cml4OwogCiAgICAgICAgICAgICBtX3JlcGVhdGlv
bnMrKzsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTMxNCwxMSArMzE0LDExIEBAIHZvaWQgU1ZH
QW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmhhbmRsZVQKICAgICAgICAgbV9pbml0aWFsVHJhbnNm
b3JtID0gMDsKIAogICAgICAgICBpZiAoIWlzRnJvemVuKCkpIHsKLSAgICAgICAgICAgIFNWR01h
dHJpeCogaW5pdGlhbCA9IGluaXRpYWxNYXRyaXgoKTsKLSAgICAgICAgICAgIGlmIChpbml0aWFs
KQorICAgICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGluaXRpYWwgPSBpbml0aWFsTWF0cml4KCk7
CisgICAgICAgICAgICBpZiAoIWluaXRpYWwuaXNJZGVudGl0eSgpKQogICAgICAgICAgICAgICAg
IG1fdHJhbnNmb3JtTWF0cml4ID0gaW5pdGlhbDsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICBtX3RyYW5zZm9ybU1hdHJpeCA9IG5ldyBTVkdNYXRyaXgoKTsKKyAgICAgICAgICAg
ICAgICBtX3RyYW5zZm9ybU1hdHJpeCA9IEFmZmluZVRyYW5zZm9ybSgpOwogICAgICAgICB9CiAg
ICAgfQogfQpAQCAtNDM4LDI4ICs0MzgsMjUgQEAgdm9pZCBTVkdBbmltYXRlVHJhbnNmb3JtRWxl
bWVudDo6Y2FsY3VsYQogICAgIGFuZ2xlID0gMC4wOwogfQogCi1TVkdNYXRyaXgqIFNWR0FuaW1h
dGVUcmFuc2Zvcm1FbGVtZW50Ojppbml0aWFsTWF0cml4KCkgY29uc3QKK0FmZmluZVRyYW5zZm9y
bSBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6aW5pdGlhbE1hdHJpeCgpIGNvbnN0CiB7CiAg
ICAgaWYgKCF0YXJnZXRFbGVtZW50KCktPmlzU3R5bGVkVHJhbnNmb3JtYWJsZSgpKQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpOwogICAgIFNWR1N0
eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KiB0cmFuc2Zvcm0gPSBzdGF0aWNfY2FzdDxTVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCo+KHRhcmdldEVsZW1lbnQoKSk7CiAgICAgU1ZHVHJhbnNm
b3JtTGlzdCogdHJhbnNmb3JtTGlzdCA9ICh0cmFuc2Zvcm0gPyB0cmFuc2Zvcm0tPnRyYW5zZm9y
bUJhc2VWYWx1ZSgpIDogMCk7CiAgICAgaWYgKCF0cmFuc2Zvcm1MaXN0KQotICAgICAgICByZXR1
cm4gMDsKLSAgICAKKyAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpOworCiAgICAgUmVm
UHRyPFNWR1RyYW5zZm9ybT4gcmVzdWx0ID0gdHJhbnNmb3JtTGlzdC0+Y29uY2F0ZW5hdGUoKTsK
ICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBTVkdNYXRyaXgqIHJl
dCA9IHJlc3VsdC0+bWF0cml4KCk7Ci0gICAgcmV0LT5yZWYoKTsKKyAgICAgICAgcmV0dXJuIEFm
ZmluZVRyYW5zZm9ybSgpOwogCi0gICAgcmV0dXJuIHJldDsKKyAgICByZXR1cm4gcmVzdWx0LT5t
YXRyaXgoKTsKIH0KIAotU1ZHTWF0cml4KiBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6dHJh
bnNmb3JtTWF0cml4KCkgY29uc3QKK0FmZmluZVRyYW5zZm9ybSBTVkdBbmltYXRlVHJhbnNmb3Jt
RWxlbWVudDo6dHJhbnNmb3JtTWF0cml4KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV90cmFuc2Zv
cm1NYXRyaXguZ2V0KCk7CisgICAgcmV0dXJuIG1fdHJhbnNmb3JtTWF0cml4OwogfQogCiB9Cklu
ZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmgJ
KHJldmlzaW9uIDE4MTQ5KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9y
bUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsOCArNDQsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIFJlZlB0cjxTVkdUcmFuc2Zvcm0+IHBhcnNlVHJhbnNmb3JtVmFsdWUo
Y29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgICAgIHZvaWQgY2FsY3VsYXRlUm90YXRpb25Gcm9t
TWF0cml4KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGRvdWJsZSYgYW5nbGUsIGRvdWJsZSYgY3gs
IGRvdWJsZSYgY3kpIGNvbnN0OwogCi0gICAgICAgIFNWR01hdHJpeCogaW5pdGlhbE1hdHJpeCgp
IGNvbnN0OwotICAgICAgICBTVkdNYXRyaXgqIHRyYW5zZm9ybU1hdHJpeCgpIGNvbnN0OworICAg
ICAgICBBZmZpbmVUcmFuc2Zvcm0gaW5pdGlhbE1hdHJpeCgpIGNvbnN0OworICAgICAgICBBZmZp
bmVUcmFuc2Zvcm0gdHJhbnNmb3JtTWF0cml4KCkgY29uc3Q7CiAKICAgICBwcm90ZWN0ZWQ6CiAg
ICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7
IHJldHVybiB0aGlzOyB9CkBAIC01OCw4ICs1OCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgUmVmUHRyPFNWR1RyYW5zZm9ybT4gbV9mcm9tVHJhbnNmb3JtOwogICAgICAgICBSZWZQ
dHI8U1ZHVHJhbnNmb3JtPiBtX2luaXRpYWxUcmFuc2Zvcm07CiAKLSAgICAgICAgUmVmUHRyPFNW
R01hdHJpeD4gbV9sYXN0TWF0cml4OwotICAgICAgICBSZWZQdHI8U1ZHTWF0cml4PiBtX3RyYW5z
Zm9ybU1hdHJpeDsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIG1fbGFzdE1hdHJpeDsKKyAgICAg
ICAgQWZmaW5lVHJhbnNmb3JtIG1fdHJhbnNmb3JtTWF0cml4OwogCiAgICAgICAgIG11dGFibGUg
Ym9vbCBtX3JvdGF0ZVNwZWNpYWxDYXNlIDogMTsKICAgICAgICAgYm9vbCBtX3RvUm90YXRlU3Bl
Y2lhbENhc2UgOiAxOwpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxODE0OSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NsaXBQYXRoRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTVkdIZWxwZXIuaCIK
LSNpbmNsdWRlICJTVkdNYXRyaXguaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUg
IlNWR1VuaXRUeXBlcy5oIgogI2luY2x1ZGUgImNzc3N0eWxlc2VsZWN0b3IuaCIKQEAgLTg4LDcg
Kzg3LDcgQEAgU1ZHUmVzb3VyY2UqIFNWR0NsaXBQYXRoRWxlbWVudDo6Y2FudmFzUgogICAgICAg
ICAgICAgUmVuZGVyU3R5bGUqIHBhdGhTdHlsZSA9IGRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3Io
KS0+c3R5bGVGb3JFbGVtZW50KHN0eWxlZCwgY2xpcFBhdGhTdHlsZSk7CiAgICAgICAgICAgICBQ
YXRoIHBhdGhEYXRhID0gc3R5bGVkLT50b1BhdGhEYXRhKCk7CiAgICAgICAgICAgICBpZiAoZS0+
aXNTdHlsZWRUcmFuc2Zvcm1hYmxlKCkpCi0gICAgICAgICAgICAgICAgcGF0aERhdGEudHJhbnNm
b3JtKHN0YXRpY19jYXN0PFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Kj4oZSktPmxvY2Fs
TWF0cml4KCktPm1hdHJpeCgpKTsKKyAgICAgICAgICAgICAgICBwYXRoRGF0YS50cmFuc2Zvcm0o
c3RhdGljX2Nhc3Q8U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQqPihlKS0+bG9jYWxNYXRy
aXgoKSk7CiAgICAgICAgICAgICBpZiAoIXBhdGhEYXRhLmlzRW1wdHkoKSkKICAgICAgICAgICAg
ICAgICBtX2NsaXBwZXItPmFkZENsaXBEYXRhKHBhdGhEYXRhLCBwYXRoU3R5bGUtPnN2Z1N0eWxl
KCktPmNsaXBSdWxlKCksIGJib3gpOwogICAgICAgICAgICAgcGF0aFN0eWxlLT5kZXJlZih2aWV3
KCktPnJlbmRlckFyZW5hKCkpOwpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRml0VG9WaWV3
Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaXRUb1ZpZXdCb3gu
Y3BwCShyZXZpc2lvbiAxODE0OSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZpdFRvVmlld0Jv
eC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDExICs4MiwxMSBAQCBiYWlsX291dDo7CiAgICAg
Ly8gRklYTUU6IFBlciB0aGUgc3BlYyB3ZSBhcmUgc3VwcG9zZWQgdG8gc2V0IHRoZSBkb2N1bWVu
dCBpbnRvIGFuICJlcnJvciBzdGF0ZSIgaGVyZS4KIH0KIAotU1ZHTWF0cml4KiBTVkdGaXRUb1Zp
ZXdCb3g6OnZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0oZmxvYXQgdmlld1dpZHRoLCBmbG9hdCB2aWV3
SGVpZ2h0KSBjb25zdAorQWZmaW5lVHJhbnNmb3JtIFNWR0ZpdFRvVmlld0JveDo6dmlld0JveFRv
Vmlld1RyYW5zZm9ybShmbG9hdCB2aWV3V2lkdGgsIGZsb2F0IHZpZXdIZWlnaHQpIGNvbnN0CiB7
CiAgICAgRmxvYXRSZWN0IHZpZXdCb3hSZWN0ID0gdmlld0JveCgpOwogICAgIGlmICghdmlld0Jv
eFJlY3Qud2lkdGgoKSB8fCAhdmlld0JveFJlY3QuaGVpZ2h0KCkpCi0gICAgICAgIHJldHVybiBT
VkdTVkdFbGVtZW50OjpjcmVhdGVTVkdNYXRyaXgoKTsKKyAgICAgICAgcmV0dXJuIEFmZmluZVRy
YW5zZm9ybSgpOwogCiAgICAgcmV0dXJuIHByZXNlcnZlQXNwZWN0UmF0aW8oKS0+Z2V0Q1RNKHZp
ZXdCb3hSZWN0LngoKSwKICAgICAgICAgICAgIHZpZXdCb3hSZWN0LnkoKSwgdmlld0JveFJlY3Qu
d2lkdGgoKSwgdmlld0JveFJlY3QuaGVpZ2h0KCksCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdGaXRUb1ZpZXdCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaXRU
b1ZpZXdCb3guaAkocmV2aXNpb24gMTgxNDkpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaXRU
b1ZpZXdCb3guaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgY2xhc3MgQXR0cmlidXRlOwotICAgIGNsYXNzIFNWR01hdHJpeDsKKyAg
ICBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiAgICAgY2xhc3MgU1ZHUHJlc2VydmVBc3BlY3RSYXRp
bzsKICAgICBjbGFzcyBTdHJpbmdJbXBsOwogCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgICAgICAvLyAnU1ZHRml0VG9WaWV3Qm94JyBmdW5jdGlvbnMKICAgICAg
ICAgdm9pZCBwYXJzZVZpZXdCb3goY29uc3QgU3RyaW5nJik7Ci0gICAgICAgIFNWR01hdHJpeCog
dmlld0JveFRvVmlld1RyYW5zZm9ybShmbG9hdCB2aWV3V2lkdGgsIGZsb2F0IHZpZXdIZWlnaHQp
IGNvbnN0OworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdmlld0JveFRvVmlld1RyYW5zZm9ybShm
bG9hdCB2aWV3V2lkdGgsIGZsb2F0IHZpZXdIZWlnaHQpIGNvbnN0OwogCiAgICAgICAgIGJvb2wg
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CiAKSW5kZXg6IFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR0xlbmd0aExpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR0xlbmd0aExpc3QuY3BwCShyZXZpc2lvbiAxODE0OSkKKysrIFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR0xlbmd0aExpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw2IEBACiAK
ICNpZmRlZiBTVkdfU1VQUE9SVAogI2luY2x1ZGUgIlNWR0xlbmd0aExpc3QuaCIKLSNpbmNsdWRl
ICJTVkdNYXRyaXguaCIKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGluZWFyR3JhZGllbnRF
bGVtZW50LmNwcAkocmV2aXNpb24gMTgxNDkpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMaW5l
YXJHcmFkaWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAj
aW5jbHVkZSAiU1ZHUGFpbnRTZXJ2ZXJMaW5lYXJHcmFkaWVudC5oIgogI2luY2x1ZGUgIlNWR0hl
bHBlci5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgotI2luY2x1ZGUgIlNWR01hdHJpeC5oIgog
I2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtLmgiCiAjaW5jbHVk
ZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgpAQCAtODgsNyArODcsNyBAQCB2b2lkIFNWR0xpbmVhckdy
YWRpZW50RWxlbWVudDo6YnVpbGRHcmFkCiAgICAgUmVmUHRyPFNWR1BhaW50U2VydmVyTGluZWFy
R3JhZGllbnQ+IGdyYWQgPSBXVEY6OnN0YXRpY19wb2ludGVyX2Nhc3Q8U1ZHUGFpbnRTZXJ2ZXJM
aW5lYXJHcmFkaWVudD4oX2dyYWQpOwogICAgIEFmZmluZVRyYW5zZm9ybSBtYXQ7CiAgICAgaWYg
KGdyYWRpZW50VHJhbnNmb3JtKCktPm51bWJlck9mSXRlbXMoKSA+IDApCi0gICAgICAgIG1hdCA9
IGdyYWRpZW50VHJhbnNmb3JtKCktPmNvbnNvbGlkYXRlKCktPm1hdHJpeCgpLT5tYXRyaXgoKTsK
KyAgICAgICAgbWF0ID0gZ3JhZGllbnRUcmFuc2Zvcm0oKS0+Y29uc29saWRhdGUoKS0+bWF0cml4
KCk7CiAKICAgICBEZXByZWNhdGVkU3RyaW5nIHJlZiA9IGhyZWYoKS5kZXByZWNhdGVkU3RyaW5n
KCk7CiAgICAgUmVmUHRyPFNWR1BhaW50U2VydmVyPiBwc2VydmVyID0gZ2V0UGFpbnRTZXJ2ZXJC
eUlkKGRvY3VtZW50KCksIHJlZi5taWQoMSkpOwpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
TG9jYXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMb2NhdGFi
bGUuY3BwCShyZXZpc2lvbiAxODE0OSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xvY2F0YWJs
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDggKzI0LDkgQEAKICNpZmRlZiBTVkdfU1VQUE9S
VAogI2luY2x1ZGUgIlNWR0xvY2F0YWJsZS5oIgogCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3Jt
LmgiCiAjaW5jbHVkZSAiUmVuZGVyUGF0aC5oIgotI2luY2x1ZGUgIlNWR01hdHJpeC5oIgorI2lu
Y2x1ZGUgIlNWR0V4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtODgsNTcgKzg5LDU2IEBAIEZsb2F0UmVjdCBTVkdMb2NhdGFi
bGU6OmdldEJCb3goY29uc3QgU1YKICAgICByZXR1cm4gYmJveFJlY3Q7CiB9CiAKLVNWR01hdHJp
eCogU1ZHTG9jYXRhYmxlOjpnZXRDVE0oY29uc3QgU1ZHRWxlbWVudCogZWxlbWVudCkKK0FmZmlu
ZVRyYW5zZm9ybSBTVkdMb2NhdGFibGU6OmdldENUTShjb25zdCBTVkdFbGVtZW50KiBlbGVtZW50
KQogewogICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVy
biBBZmZpbmVUcmFuc2Zvcm0oKTsKIAotICAgIFNWR01hdHJpeCogY3RtID0gU1ZHU1ZHRWxlbWVu
dDo6Y3JlYXRlU1ZHTWF0cml4KCk7CisgICAgQWZmaW5lVHJhbnNmb3JtIGN0bTsKIAogICAgIE5v
ZGUqIHBhcmVudCA9IGVsZW1lbnQtPnBhcmVudE5vZGUoKTsKICAgICBpZiAocGFyZW50ICYmIHBh
cmVudC0+aXNFbGVtZW50Tm9kZSgpKSB7CiAgICAgICAgIFNWR0VsZW1lbnQqIHBhcmVudEVsZW1l
bnQgPSBzdmdfZHluYW1pY19jYXN0KHBhcmVudCk7CiAgICAgICAgIGlmIChwYXJlbnRFbGVtZW50
ICYmIHBhcmVudEVsZW1lbnQtPmlzU3R5bGVkTG9jYXRhYmxlKCkpIHsKLSAgICAgICAgICAgIFJl
ZlB0cjxTVkdNYXRyaXg+IHBhcmVudENUTSA9IHN0YXRpY19jYXN0PFNWR1N0eWxlZExvY2F0YWJs
ZUVsZW1lbnQqPihwYXJlbnRFbGVtZW50KS0+Z2V0Q1RNKCk7Ci0gICAgICAgICAgICBjdG0tPm11
bHRpcGx5KHBhcmVudENUTS5nZXQoKSk7CisgICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gcGFy
ZW50Q1RNID0gc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudCo+KHBhcmVudEVs
ZW1lbnQpLT5nZXRDVE0oKTsKKyAgICAgICAgICAgIGN0bSA9IHBhcmVudENUTSAqIGN0bTsKICAg
ICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBjdG07CiB9CiAKLVNWR01hdHJpeCogU1ZHTG9j
YXRhYmxlOjpnZXRTY3JlZW5DVE0oY29uc3QgU1ZHRWxlbWVudCogZWxlbWVudCkKK0FmZmluZVRy
YW5zZm9ybSBTVkdMb2NhdGFibGU6OmdldFNjcmVlbkNUTShjb25zdCBTVkdFbGVtZW50KiBlbGVt
ZW50KQogewogICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJl
dHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsKIAotICAgIFNWR01hdHJpeCogY3RtID0gU1ZHU1ZHRWxl
bWVudDo6Y3JlYXRlU1ZHTWF0cml4KCk7CisgICAgQWZmaW5lVHJhbnNmb3JtIGN0bTsKIAogICAg
IE5vZGUqIHBhcmVudCA9IGVsZW1lbnQtPnBhcmVudE5vZGUoKTsKICAgICBpZiAocGFyZW50ICYm
IHBhcmVudC0+aXNFbGVtZW50Tm9kZSgpKSB7CiAgICAgICAgIFNWR0VsZW1lbnQqIHBhcmVudEVs
ZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4ocGFyZW50KTsKICAgICAgICAgaWYgKHBh
cmVudEVsZW1lbnQtPmlzU3R5bGVkTG9jYXRhYmxlKCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxT
VkdNYXRyaXg+IHBhcmVudENUTSA9IHN0YXRpY19jYXN0PFNWR1N0eWxlZExvY2F0YWJsZUVsZW1l
bnQqPihwYXJlbnRFbGVtZW50KS0+Z2V0U2NyZWVuQ1RNKCk7Ci0gICAgICAgICAgICBjdG0tPm11
bHRpcGx5KHBhcmVudENUTS5nZXQoKSk7CisgICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gcGFy
ZW50Q1RNID0gc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudCo+KHBhcmVudEVs
ZW1lbnQpLT5nZXRTY3JlZW5DVE0oKTsKKyAgICAgICAgICAgIGN0bSA9IHBhcmVudENUTSAqIGN0
bTsKICAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBjdG07CiB9CiAKLVNWR01hdHJpeCog
U1ZHTG9jYXRhYmxlOjpnZXRUcmFuc2Zvcm1Ub0VsZW1lbnQoU1ZHRWxlbWVudCogdGFyZ2V0LCBF
eGNlcHRpb25Db2RlJiBlYykgY29uc3QKK0FmZmluZVRyYW5zZm9ybSBTVkdMb2NhdGFibGU6Omdl
dFRyYW5zZm9ybVRvRWxlbWVudChTVkdFbGVtZW50KiB0YXJnZXQsIEV4Y2VwdGlvbkNvZGUmIGVj
KSBjb25zdAogewotICAgIFJlZlB0cjxTVkdNYXRyaXg+IHN0YXJ0Y3RtKGdldENUTSgpKTsKLSAg
ICBTVkdNYXRyaXgqIGN0bSA9IFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR01hdHJpeCgpOwotICAg
IGN0bS0+bXVsdGlwbHkoc3RhcnRjdG0uZ2V0KCkpOworICAgIEFmZmluZVRyYW5zZm9ybSBjdG0g
PSBnZXRDVE0oKTsKIAogICAgIFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSBzdmdfZHluYW1p
Y19jYXN0KHRhcmdldCk7CiAgICAgaWYgKHRhcmdldEVsZW1lbnQgJiYgdGFyZ2V0RWxlbWVudC0+
aXNTdHlsZWRMb2NhdGFibGUoKSkgewotICAgICAgICBSZWZQdHI8U1ZHTWF0cml4PiB0YXJnZXRD
VE0gPSBzdGF0aWNfY2FzdDxTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50Kj4odGFyZ2V0RWxlbWVu
dCktPmdldENUTSgpOwotICAgICAgICB0YXJnZXRDVE0uZ2V0KCktPmludmVyc2UoZWMpOwotICAg
ICAgICBpZiAoZWMpCisgICAgICAgIEFmZmluZVRyYW5zZm9ybSB0YXJnZXRDVE0gPSBzdGF0aWNf
Y2FzdDxTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50Kj4odGFyZ2V0RWxlbWVudCktPmdldENUTSgp
OworICAgICAgICBpZiAoIXRhcmdldENUTS5pc0ludmVydGlibGUoKSkgeworICAgICAgICAgICAg
ZWMgPSBTVkdfTUFUUklYX05PVF9JTlZFUlRBQkxFOwogICAgICAgICAgICAgcmV0dXJuIGN0bTsK
LSAgICAgICAgY3RtLT5wb3N0TXVsdGlwbHkodGFyZ2V0Q1RNLmdldCgpKTsKKyAgICAgICAgfQor
ICAgICAgICBjdG0gKj0gdGFyZ2V0Q1RNLmludmVydCgpOwogICAgIH0KIAogICAgIHJldHVybiBj
dG07CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMb2NhdGFibGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMb2NhdGFibGUuaAkocmV2aXNpb24gMTgxNDkpCisrKyBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdMb2NhdGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjksOSAr
MjksOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyAgICBjbGFzcyBBZmZpbmVUcmFuc2Zv
cm07CiAgICAgY2xhc3MgRmxvYXRSZWN0OwogICAgIGNsYXNzIFNWR0VsZW1lbnQ7Ci0gICAgY2xh
c3MgU1ZHTWF0cml4OwogICAgIGNsYXNzIFNWR1N0eWxlZEVsZW1lbnQ7CiAKICAgICBjbGFzcyBT
VkdMb2NhdGFibGUgewpAQCAtNDQsMTYgKzQ0LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdmlydHVhbCBTVkdFbGVtZW50KiBmYXJ0aGVzdFZpZXdwb3J0RWxlbWVudCgpIGNvbnN0
ID0gMDsKIAogICAgICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBnZXRCQm94KCkgY29uc3QgPSAwOwot
ICAgICAgICB2aXJ0dWFsIFNWR01hdHJpeCogZ2V0Q1RNKCkgY29uc3QgPSAwOwotICAgICAgICB2
aXJ0dWFsIFNWR01hdHJpeCogZ2V0U2NyZWVuQ1RNKCkgY29uc3QgPSAwOwotICAgICAgICBTVkdN
YXRyaXgqIGdldFRyYW5zZm9ybVRvRWxlbWVudChTVkdFbGVtZW50KiwgRXhjZXB0aW9uQ29kZSYp
IGNvbnN0OworICAgICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBnZXRDVE0oKSBjb25zdCA9
IDA7CisgICAgICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGdldFNjcmVlbkNUTSgpIGNvbnN0
ID0gMDsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGdldFRyYW5zZm9ybVRvRWxlbWVudChTVkdF
bGVtZW50KiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogCiAgICAgcHJvdGVjdGVkOgogICAgICAg
ICBzdGF0aWMgU1ZHRWxlbWVudCogbmVhcmVzdFZpZXdwb3J0RWxlbWVudChjb25zdCBTVkdTdHls
ZWRFbGVtZW50Kik7CiAgICAgICAgIHN0YXRpYyBTVkdFbGVtZW50KiBmYXJ0aGVzdFZpZXdwb3J0
RWxlbWVudChjb25zdCBTVkdTdHlsZWRFbGVtZW50Kik7CiAgICAgICAgIHN0YXRpYyBGbG9hdFJl
Y3QgZ2V0QkJveChjb25zdCBTVkdTdHlsZWRFbGVtZW50Kik7Ci0gICAgICAgIHN0YXRpYyBTVkdN
YXRyaXgqIGdldENUTShjb25zdCBTVkdFbGVtZW50Kik7Ci0gICAgICAgIHN0YXRpYyBTVkdNYXRy
aXgqIGdldFNjcmVlbkNUTShjb25zdCBTVkdFbGVtZW50Kik7CisgICAgICAgIHN0YXRpYyBBZmZp
bmVUcmFuc2Zvcm0gZ2V0Q1RNKGNvbnN0IFNWR0VsZW1lbnQqKTsKKyAgICAgICAgc3RhdGljIEFm
ZmluZVRyYW5zZm9ybSBnZXRTY3JlZW5DVE0oY29uc3QgU1ZHRWxlbWVudCopOwogICAgIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hcmtl
ckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hcmtlckVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAxODE0OSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hcmtl
ckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAi
U1ZHRml0VG9WaWV3Qm94LmgiCiAjaW5jbHVkZSAiU1ZHSGVscGVyLmgiCiAjaW5jbHVkZSAiU1ZH
TGVuZ3RoLmgiCi0jaW5jbHVkZSAiU1ZHTWF0cml4LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIK
ICNpbmNsdWRlICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCiAjaW5jbHVkZSAiU1ZHU1ZHRWxl
bWVudC5oIgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWF0cml4LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXRyaXguY3BwCShyZXZpc2lvbiAxODE0OSkKKysr
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hdHJpeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMzA1
ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVy
bWFubiA8d2lsZGZveEBrZGUub3JnPgotICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSBSb2Ig
QnVpcyA8YnVpc0BrZGUub3JnPgotCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBw
cm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBU
ZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCi0gICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0Eu
Ci0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaWZkZWYgU1ZHX1NVUFBPUlQKLSNpbmNsdWRl
ICJTVkdNYXRyaXguaCIKLQotI2luY2x1ZGUgIlNWR0FuZ2xlLmgiCi0jaW5jbHVkZSAiU1ZHRXhj
ZXB0aW9uLmgiCi0jaW5jbHVkZSAiU1ZHSGVscGVyLmgiCi0jaW5jbHVkZSA8bWF0aC5oPgotCi11
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotU1ZHTWF0cml4OjpTVkdNYXRyaXgoKSA6IFNoYXJl
ZDxTVkdNYXRyaXg+KCkKLXsKLX0KLQotU1ZHTWF0cml4OjpTVkdNYXRyaXgoY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBtYXQpCi0gICAgOiBTaGFyZWQ8U1ZHTWF0cml4PigpCi0gICAgLCBtX21hdCht
YXQpCi17Ci19Ci0KLVNWR01hdHJpeDo6U1ZHTWF0cml4KGRvdWJsZSBhLCBkb3VibGUgYiwgZG91
YmxlIGMsIGRvdWJsZSBkLCBkb3VibGUgZSwgZG91YmxlIGYpIDogU2hhcmVkPFNWR01hdHJpeD4o
KQotewotICAgIG1fbWF0LnNldE1hdHJpeChhLCBiLCBjLCBkLCBlLCBmKTsKLX0KLQotU1ZHTWF0
cml4Ojp+U1ZHTWF0cml4KCkKLXsKLX0KLQotdm9pZCBTVkdNYXRyaXg6OnNldEEoZG91YmxlIGEp
Ci17Ci0gICAgbV9tYXQuc2V0TWF0cml4KGEsIG1fbWF0Lm0xMigpLCBtX21hdC5tMjEoKSwgbV9t
YXQubTIyKCksIG1fbWF0LmR4KCksIG1fbWF0LmR5KCkpOwotfQotCi1kb3VibGUgU1ZHTWF0cml4
OjphKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9tYXQubTExKCk7Ci19Ci0KLXZvaWQgU1ZHTWF0
cml4OjpzZXRCKGRvdWJsZSBiKQotewotICAgIG1fbWF0LnNldE1hdHJpeChtX21hdC5tMTEoKSwg
YiwgbV9tYXQubTIxKCksIG1fbWF0Lm0yMigpLCBtX21hdC5keCgpLCBtX21hdC5keSgpKTsKLX0K
LQotZG91YmxlIFNWR01hdHJpeDo6YigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbWF0Lm0xMigp
OwotfQotCi12b2lkIFNWR01hdHJpeDo6c2V0Qyhkb3VibGUgYykKLXsKLSAgICBtX21hdC5zZXRN
YXRyaXgobV9tYXQubTExKCksIG1fbWF0Lm0xMigpLCBjLCBtX21hdC5tMjIoKSwgbV9tYXQuZHgo
KSwgbV9tYXQuZHkoKSk7Ci19Ci0KLWRvdWJsZSBTVkdNYXRyaXg6OmMoKSBjb25zdAotewotICAg
IHJldHVybiBtX21hdC5tMjEoKTsKLX0KLQotdm9pZCBTVkdNYXRyaXg6OnNldEQoZG91YmxlIGQp
Ci17Ci0gICAgbV9tYXQuc2V0TWF0cml4KG1fbWF0Lm0xMSgpLCBtX21hdC5tMTIoKSwgbV9tYXQu
bTIxKCksIGQsIG1fbWF0LmR4KCksIG1fbWF0LmR5KCkpOwotfQotCi1kb3VibGUgU1ZHTWF0cml4
OjpkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9tYXQubTIyKCk7Ci19Ci0KLXZvaWQgU1ZHTWF0
cml4OjpzZXRFKGRvdWJsZSBlKQotewotICAgIG1fbWF0LnNldE1hdHJpeChtX21hdC5tMTEoKSwg
bV9tYXQubTEyKCksIG1fbWF0Lm0yMSgpLCBtX21hdC5tMjIoKSwgZSwgbV9tYXQuZHkoKSk7Ci19
Ci0KLWRvdWJsZSBTVkdNYXRyaXg6OmUoKSBjb25zdAotewotICAgIHJldHVybiBtX21hdC5keCgp
OwotfQotCi12b2lkIFNWR01hdHJpeDo6c2V0Rihkb3VibGUgZikKLXsKLSAgICBtX21hdC5zZXRN
YXRyaXgobV9tYXQubTExKCksIG1fbWF0Lm0xMigpLCBtX21hdC5tMjEoKSwgbV9tYXQubTIyKCks
IG1fbWF0LmR4KCksIGYpOwotfQotCi1kb3VibGUgU1ZHTWF0cml4OjpmKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9tYXQuZHkoKTsKLX0KLQotdm9pZCBTVkdNYXRyaXg6OmNvcHkoY29uc3QgU1ZH
TWF0cml4KiBvdGhlcikKLXsKLSAgICBtX21hdC5zZXRNYXRyaXgob3RoZXItPm1fbWF0Lm0xMSgp
LCBvdGhlci0+bV9tYXQubTEyKCksIG90aGVyLT5tX21hdC5tMjEoKSwgb3RoZXItPm1fbWF0Lm0y
MigpLCBvdGhlci0+bV9tYXQuZHgoKSwgb3RoZXItPm1fbWF0LmR5KCkpOwotfQotCi1TVkdNYXRy
aXgqIFNWR01hdHJpeDo6cG9zdE11bHRpcGx5KGNvbnN0IFNWR01hdHJpeCogc2Vjb25kTWF0cml4
KQotewotICAgIEFmZmluZVRyYW5zZm9ybSB0ZW1wKHNlY29uZE1hdHJpeC0+YSgpLCBzZWNvbmRN
YXRyaXgtPmIoKSwgc2Vjb25kTWF0cml4LT5jKCksIHNlY29uZE1hdHJpeC0+ZCgpLCBzZWNvbmRN
YXRyaXgtPmUoKSwgc2Vjb25kTWF0cml4LT5mKCkpOwotICAgIG1fbWF0ICo9IHRlbXA7Ci0gICAg
cmV0dXJuIHRoaXM7Ci19Ci0KLVNWR01hdHJpeCogU1ZHTWF0cml4OjppbnZlcnNlKEV4Y2VwdGlv
bkNvZGUmIGVjKQotewotICAgIGlmICghbV9tYXQuaXNJbnZlcnRpYmxlKCkpCi0gICAgICAgIGVj
ID0gU1ZHX01BVFJJWF9OT1RfSU5WRVJUQUJMRTsKLSAgICBtX21hdCA9IG1fbWF0LmludmVydCgp
OwotICAgIHJldHVybiB0aGlzOwotfQotCi1TVkdNYXRyaXgqIFNWR01hdHJpeDo6cG9zdFRyYW5z
bGF0ZShkb3VibGUgeCwgIGRvdWJsZSB5KQotewotICAgIC8vIENvdWxkIG9wdGltaXNlIHRoZXNl
LgotICAgIEFmZmluZVRyYW5zZm9ybSB0ZW1wOwotICAgIHRlbXAudHJhbnNsYXRlKHgsIHkpOwot
ICAgIG1fbWF0ICo9IHRlbXA7Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0KLVNWR01hdHJpeCogU1ZH
TWF0cml4Ojpwb3N0U2NhbGUoZG91YmxlIHNjYWxlRmFjdG9yKQotewotICAgIEFmZmluZVRyYW5z
Zm9ybSB0ZW1wOwotICAgIHRlbXAuc2NhbGUoc2NhbGVGYWN0b3IsIHNjYWxlRmFjdG9yKTsKLSAg
ICBtX21hdCAqPSB0ZW1wOwotICAgIHJldHVybiB0aGlzOwotfQotCi1TVkdNYXRyaXgqIFNWR01h
dHJpeDo6cG9zdFNjYWxlTm9uVW5pZm9ybShkb3VibGUgc2NhbGVGYWN0b3JYLCBkb3VibGUgc2Nh
bGVGYWN0b3JZKQotewotICAgIEFmZmluZVRyYW5zZm9ybSB0ZW1wOwotICAgIHRlbXAuc2NhbGUo
c2NhbGVGYWN0b3JYLCBzY2FsZUZhY3RvclkpOwotICAgIG1fbWF0ICo9IHRlbXA7Ci0gICAgcmV0
dXJuIHRoaXM7Ci19Ci0KLVNWR01hdHJpeCogU1ZHTWF0cml4Ojpwb3N0Um90YXRlKGRvdWJsZSBh
bmdsZSkKLXsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gdGVtcDsKLSAgICB0ZW1wLnJvdGF0ZShhbmds
ZSk7Ci0gICAgbV9tYXQgKj0gdGVtcDsKLSAgICByZXR1cm4gdGhpczsKLX0KLQotU1ZHTWF0cml4
KiBTVkdNYXRyaXg6OnBvc3RSb3RhdGVGcm9tVmVjdG9yKGRvdWJsZSB4LCBkb3VibGUgeSkKLXsK
LSAgICBBZmZpbmVUcmFuc2Zvcm0gdGVtcDsKLSAgICB0ZW1wLnJvdGF0ZShTVkdBbmdsZTo6dG9k
ZWcoYXRhbjIoeSwgeCkpKTsKLSAgICBtX21hdCAqPSB0ZW1wOwotICAgIHJldHVybiB0aGlzOwot
fQotCi1TVkdNYXRyaXgqIFNWR01hdHJpeDo6cG9zdEZsaXBYKCkKLXsKLSAgICBBZmZpbmVUcmFu
c2Zvcm0gdGVtcCgtMS4wRiwgMC4wRiwgMC4wRiwgMS4wRiwgMC4wRiwgMC4wRik7Ci0gICAgbV9t
YXQgKj0gdGVtcDsKLSAgICByZXR1cm4gdGhpczsKLX0KLQotU1ZHTWF0cml4KiBTVkdNYXRyaXg6
OnBvc3RGbGlwWSgpCi17Ci0gICAgQWZmaW5lVHJhbnNmb3JtIHRlbXAoMS4wRiwgMC4wRiwgMC4w
RiwgLTEuMEYsIDAuMEYsIDAuMEYpOwotICAgIG1fbWF0ICo9IHRlbXA7Ci0gICAgcmV0dXJuIHRo
aXM7Ci19Ci0KLVNWR01hdHJpeCogU1ZHTWF0cml4Ojpwb3N0U2tld1goZG91YmxlIGFuZ2xlKQot
ewotICAgIEFmZmluZVRyYW5zZm9ybSB0ZW1wOwotICAgIHRlbXAuc2hlYXIodGFuKFNWR0FuZ2xl
Ojp0b3JhZChhbmdsZSkpLCAwLjBGKTsKLSAgICBtX21hdCAqPSB0ZW1wOwotICAgIHJldHVybiB0
aGlzOwotfQotCi1TVkdNYXRyaXgqIFNWR01hdHJpeDo6cG9zdFNrZXdZKGRvdWJsZSBhbmdsZSkK
LXsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gdGVtcDsKLSAgICB0ZW1wLnNoZWFyKDAuMEYsIHRhbihT
VkdBbmdsZTo6dG9yYWQoYW5nbGUpKSk7Ci0gICAgbV9tYXQgKj0gdGVtcDsKLSAgICByZXR1cm4g
dGhpczsKLX0KLQotU1ZHTWF0cml4KiBTVkdNYXRyaXg6Om11bHRpcGx5KGNvbnN0IFNWR01hdHJp
eCogc2Vjb25kTWF0cml4KQotewotICAgIEFmZmluZVRyYW5zZm9ybSB0ZW1wKHNlY29uZE1hdHJp
eC0+YSgpLCBzZWNvbmRNYXRyaXgtPmIoKSwgc2Vjb25kTWF0cml4LT5jKCksIHNlY29uZE1hdHJp
eC0+ZCgpLCBzZWNvbmRNYXRyaXgtPmUoKSwgc2Vjb25kTWF0cml4LT5mKCkpOwotICAgIHRlbXAg
Kj0gbV9tYXQ7Ci0gICAgbV9tYXQgPSB0ZW1wOwotICAgIHJldHVybiB0aGlzOwotfQotCi1TVkdN
YXRyaXgqIFNWR01hdHJpeDo6dHJhbnNsYXRlKGRvdWJsZSB4LCAgZG91YmxlIHkpCi17Ci0gICAg
bV9tYXQudHJhbnNsYXRlKHgsIHkpOwotICAgIHJldHVybiB0aGlzOwotfQotCi1TVkdNYXRyaXgq
IFNWR01hdHJpeDo6c2NhbGUoZG91YmxlIHNjYWxlRmFjdG9yKQotewotICAgIG1fbWF0LnNjYWxl
KHNjYWxlRmFjdG9yLCBzY2FsZUZhY3Rvcik7Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0KLVNWR01h
dHJpeCogU1ZHTWF0cml4OjpzY2FsZU5vblVuaWZvcm0oZG91YmxlIHNjYWxlRmFjdG9yWCwgZG91
YmxlIHNjYWxlRmFjdG9yWSkKLXsKLSAgICBtX21hdC5zY2FsZShzY2FsZUZhY3RvclgsIHNjYWxl
RmFjdG9yWSk7Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0KLVNWR01hdHJpeCogU1ZHTWF0cml4Ojpy
b3RhdGUoZG91YmxlIGFuZ2xlKQotewotICAgIG1fbWF0LnJvdGF0ZShhbmdsZSk7Ci0gICAgcmV0
dXJuIHRoaXM7Ci19Ci0KLVNWR01hdHJpeCogU1ZHTWF0cml4Ojpyb3RhdGVGcm9tVmVjdG9yKGRv
dWJsZSB4LCBkb3VibGUgeSwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKHggPT0gMCB8
fCB5ID09IDApIHsKLSAgICAgICAgZWMgPSBTVkdfSU5WQUxJRF9WQUxVRV9FUlI7Ci0gICAgICAg
IHJldHVybiB0aGlzOwotICAgIH0KLSAgICBtX21hdC5yb3RhdGUoU1ZHQW5nbGU6OnRvZGVnKGF0
YW4yKHksIHgpKSk7Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0KLVNWR01hdHJpeCogU1ZHTWF0cml4
OjpmbGlwWCgpCi17Ci0gICAgbV9tYXQuc2NhbGUoLTEuMGYsIDEuMGYpOwotICAgIHJldHVybiB0
aGlzOwotfQotCi1TVkdNYXRyaXgqIFNWR01hdHJpeDo6ZmxpcFkoKQotewotICAgIG1fbWF0LnNj
YWxlKDEuMGYsIC0xLjBmKTsKLSAgICByZXR1cm4gdGhpczsKLX0KLQotU1ZHTWF0cml4KiBTVkdN
YXRyaXg6OnNrZXdYKGRvdWJsZSBhbmdsZSkKLXsKLSAgICBtX21hdC5zaGVhcih0YW4oU1ZHQW5n
bGU6OnRvcmFkKGFuZ2xlKSksIDAuMEYpOwotICAgIHJldHVybiB0aGlzOwotfQotCi1TVkdNYXRy
aXgqIFNWR01hdHJpeDo6c2tld1koZG91YmxlIGFuZ2xlKQotewotICAgIG1fbWF0LnNoZWFyKDAu
MEYsIHRhbihTVkdBbmdsZTo6dG9yYWQoYW5nbGUpKSk7Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0K
LXZvaWQgU1ZHTWF0cml4OjpzZXRNYXRyaXgoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBtYXQpCi17
Ci0gICAgbV9tYXQgPSBtYXQ7Ci19Ci0KLUFmZmluZVRyYW5zZm9ybSYgU1ZHTWF0cml4OjptYXRy
aXgoKQotewotICAgIHJldHVybiBtX21hdDsKLX0KLQotY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBT
VkdNYXRyaXg6Om1hdHJpeCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbWF0OwotfQotCi12b2lk
IFNWR01hdHJpeDo6cmVzZXQoKQotewotICAgIG1fbWF0LnJlc2V0KCk7Ci19Ci0KLXZvaWQgU1ZH
TWF0cml4OjpyZW1vdmVTY2FsZShkb3VibGUqIHhTY2FsZSwgZG91YmxlKiB5U2NhbGUpCi17Ci0g
ICAgZG91YmxlIHN4ID0gc3FydChhKCkgKiBhKCkgKyBiKCkgKiBiKCkpOwotICAgIGRvdWJsZSBz
eSA9IHNxcnQoYygpICogYygpICsgZCgpICogZCgpKTsKLQotICAgIC8vIFJlbW92ZSB0aGUgc2Nh
bGluZyBmcm9tIHRoZSBtYXRyaXguCi0gICAgc2V0QShhKCkgLyBzeCk7IHNldEIoYigpIC8gc3gp
OwotICAgIHNldEMoYygpIC8gc3kpOyBzZXREKGQoKSAvIHN5KTsKLQotICAgICp4U2NhbGUgPSBz
eDsKLSAgICAqeVNjYWxlID0gc3k7Ci19Ci0KLS8vIHZpbTp0cz00Om5vZXQKLSNlbmRpZiAvLyBT
VkdfU1VQUE9SVAotCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXRyaXguaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXRyaXguaAkocmV2aXNpb24gMTgxNDkpCisr
KyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXRyaXguaAkod29ya2luZyBjb3B5KQpAQCAtMSwxMDcg
KzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJt
YW5uIDx3aWxkZm94QGtkZS5vcmc+Ci0gICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1IFJvYiBC
dWlzIDxidWlzQGtkZS5vcmc+Ci0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHBy
b2plY3QKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRl
bXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4K
LSovCi0KLSNpZm5kZWYgS1NWR19TVkdNYXRyaXhJbXBsX0gKLSNkZWZpbmUgS1NWR19TVkdNYXRy
aXhJbXBsX0gKLSNpZmRlZiBTVkdfU1VQUE9SVAotCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3Jt
LmgiCi0jaW5jbHVkZSAiU2hhcmVkLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotICAgIHR5
cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0KLSAgICBjbGFzcyBTVkdNYXRyaXggOiBwdWJsaWMg
U2hhcmVkPFNWR01hdHJpeD4geyAKLSAgICBwdWJsaWM6Ci0gICAgICAgIFNWR01hdHJpeCgpOwot
ICAgICAgICBTVkdNYXRyaXgoZG91YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUgYywgZG91YmxlIGQs
IGRvdWJsZSBlLCBkb3VibGUgZik7Ci0gICAgICAgIFNWR01hdHJpeChjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIG1hdCk7Ci0gICAgICAgIHZpcnR1YWwgflNWR01hdHJpeCgpOwotCi0gICAgICAgIHZv
aWQgc2V0QShkb3VibGUpOwotICAgICAgICBkb3VibGUgYSgpIGNvbnN0OwotCi0gICAgICAgIHZv
aWQgc2V0Qihkb3VibGUpOwotICAgICAgICBkb3VibGUgYigpIGNvbnN0OwotCi0gICAgICAgIHZv
aWQgc2V0Qyhkb3VibGUpOwotICAgICAgICBkb3VibGUgYygpIGNvbnN0OwotCi0gICAgICAgIHZv
aWQgc2V0RChkb3VibGUpOwotICAgICAgICBkb3VibGUgZCgpIGNvbnN0OwotCi0gICAgICAgIHZv
aWQgc2V0RShkb3VibGUpOwotICAgICAgICBkb3VibGUgZSgpIGNvbnN0OwotCi0gICAgICAgIHZv
aWQgc2V0Rihkb3VibGUpOwotICAgICAgICBkb3VibGUgZigpIGNvbnN0OwotCi0gICAgICAgIHZv
aWQgY29weShjb25zdCBTVkdNYXRyaXgqKTsKLQotICAgICAgICBTVkdNYXRyaXgqIGludmVyc2Uo
RXhjZXB0aW9uQ29kZSYpOwotCi0gICAgICAgIC8vIFByZS1tdWx0aXBsaWVkIG9wZXJhdGlvbnMs
IGFzIHBlciB0aGUgc3BlY3MuCi0gICAgICAgIFNWR01hdHJpeCogbXVsdGlwbHkoY29uc3QgU1ZH
TWF0cml4Kik7Ci0gICAgICAgIFNWR01hdHJpeCogdHJhbnNsYXRlKGRvdWJsZSB4LCBkb3VibGUg
eSk7Ci0gICAgICAgIFNWR01hdHJpeCogc2NhbGUoZG91YmxlIHNjYWxlRmFjdG9yKTsKLSAgICAg
ICAgU1ZHTWF0cml4KiBzY2FsZU5vblVuaWZvcm0oZG91YmxlIHNjYWxlRmFjdG9yWCwgZG91Ymxl
IHNjYWxlRmFjdG9yWSk7Ci0gICAgICAgIFNWR01hdHJpeCogcm90YXRlKGRvdWJsZSBhbmdsZSk7
Ci0gICAgICAgIFNWR01hdHJpeCogcm90YXRlRnJvbVZlY3Rvcihkb3VibGUgeCwgZG91YmxlIHks
IEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgU1ZHTWF0cml4KiBmbGlwWCgpOwotICAgICAgICBT
VkdNYXRyaXgqIGZsaXBZKCk7Ci0gICAgICAgIFNWR01hdHJpeCogc2tld1goZG91YmxlIGFuZ2xl
KTsKLSAgICAgICAgU1ZHTWF0cml4KiBza2V3WShkb3VibGUgYW5nbGUpOwotCi0gICAgICAgIC8v
IFBvc3QtbXVsdGlwbGllZCBvcGVyYXRpb25zCi0gICAgICAgIFNWR01hdHJpeCogcG9zdE11bHRp
cGx5KGNvbnN0IFNWR01hdHJpeCopOwotICAgICAgICBTVkdNYXRyaXgqIHBvc3RUcmFuc2xhdGUo
ZG91YmxlIHgsIGRvdWJsZSB5KTsKLSAgICAgICAgU1ZHTWF0cml4KiBwb3N0U2NhbGUoZG91Ymxl
IHNjYWxlRmFjdG9yKTsKLSAgICAgICAgU1ZHTWF0cml4KiBwb3N0U2NhbGVOb25Vbmlmb3JtKGRv
dWJsZSBzY2FsZUZhY3RvclgsIGRvdWJsZSBzY2FsZUZhY3RvclkpOwotICAgICAgICBTVkdNYXRy
aXgqIHBvc3RSb3RhdGUoZG91YmxlIGFuZ2xlKTsKLSAgICAgICAgU1ZHTWF0cml4KiBwb3N0Um90
YXRlRnJvbVZlY3Rvcihkb3VibGUgeCwgZG91YmxlIHkpOwotICAgICAgICBTVkdNYXRyaXgqIHBv
c3RGbGlwWCgpOwotICAgICAgICBTVkdNYXRyaXgqIHBvc3RGbGlwWSgpOwotICAgICAgICBTVkdN
YXRyaXgqIHBvc3RTa2V3WChkb3VibGUgYW5nbGUpOwotICAgICAgICBTVkdNYXRyaXgqIHBvc3RT
a2V3WShkb3VibGUgYW5nbGUpOwotCi0gICAgICAgIHZvaWQgcmVzZXQoKTsKLQotICAgICAgICAv
LyBLU1ZHIGhlbHBlciBtZXRob2QKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtJiBtYXRyaXgoKTsK
LSAgICAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBtYXRyaXgoKSBjb25zdDsKLQotICAgICAg
ICAvLyBEZXRlcm1pbmUgdGhlIHNjYWxpbmcgY29tcG9uZW50IG9mIHRoZSBtYXRyaXggYW5kIGZh
Y3RvciBpdCBvdXQuIEFmdGVyCi0gICAgICAgIC8vIHRoaXMgb3BlcmF0aW9uLCB0aGUgbWF0cml4
IGhhcyB4IGFuZCB5IHNjYWxlIG9mIG9uZS4KLSAgICAgICAgdm9pZCByZW1vdmVTY2FsZShkb3Vi
bGUqIHhTY2FsZSwgZG91YmxlKiB5U2NhbGUpOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgdm9p
ZCBzZXRNYXRyaXgoY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7Ci0gICAgICAgIEFmZmluZVRyYW5z
Zm9ybSBtX21hdDsKLSAgICB9OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBTVkdfU1VQUE9SVAotI2VuZGlmIC8vIEtTVkdfU1ZHTWF0cml4SW1wbF9ICi0KLS8vIHZpbTp0
cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hdHJpeC5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWF0cml4LmlkbAkocmV2aXNpb24gMTgxNDkpCisr
KyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXRyaXguaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3
ICsyNCw3IEBACiAKIG1vZHVsZSBzdmcgewogCi0gICAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD1T
VkddIFNWR01hdHJpeCB7IAorICAgIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9U1ZHLCBPYmpDQ3Vz
dG9tSW1wbGVtZW50YXRpb25dIFNWR01hdHJpeCB7IAogICAgICAgICBhdHRyaWJ1dGUgZmxvYXQg
YTsKICAgICAgICAgYXR0cmlidXRlIGZsb2F0IGI7CiAgICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBj
OwpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTnVtYmVyTGlzdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTnVtYmVyTGlzdC5jcHAJKHJldmlzaW9uIDE4MTQ5KQor
KysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTnVtYmVyTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDcgKzI1LDYgQEAKICNpZmRlZiBTVkdfU1VQUE9SVAogI2luY2x1ZGUgIlNWR051bWJlckxp
c3QuaCIKIAotI2luY2x1ZGUgIlNWR01hdHJpeC5oIgogI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0
dGVybkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdHRl
cm5FbGVtZW50LmNwcAkocmV2aXNpb24gMTgxNDkpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQ
YXR0ZXJuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNs
dWRlICJSZW5kZXJTVkdDb250YWluZXIuaCIKICNpbmNsdWRlICJTVkdIZWxwZXIuaCIKICNpbmNs
dWRlICJTVkdMZW5ndGguaCIKLSNpbmNsdWRlICJTVkdNYXRyaXguaCIKKyNpbmNsdWRlICJBZmZp
bmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1NWR0Vs
ZW1lbnQuaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0LmgiCkBAIC0yOTcsNyArMjk3LDcg
QEAgdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6bm90aWZ5QXR0cmlidXRlQwogCiAgICAgQWZmaW5l
VHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm1NYXRyaXg7CiAgICAgaWYgKHBhdHRlcm5UcmFuc2Zv
cm0oKS0+bnVtYmVyT2ZJdGVtcygpID4gMCkKLSAgICAgICAgcGF0dGVyblRyYW5zZm9ybU1hdHJp
eCA9IHBhdHRlcm5UcmFuc2Zvcm0oKS0+Y29uc29saWRhdGUoKS0+bWF0cml4KCktPm1hdHJpeCgp
OworICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtTWF0cml4ID0gcGF0dGVyblRyYW5zZm9ybSgpLT5j
b25zb2xpZGF0ZSgpLT5tYXRyaXgoKTsKIAogCiAgICAgU1ZHUGF0dGVybkVsZW1lbnQqIG5vbkNv
bnN0VGhpcyA9IGNvbnN0X2Nhc3Q8U1ZHUGF0dGVybkVsZW1lbnQqPih0aGlzKTsKQEAgLTMyOCwx
NCArMzI4LDExIEBAIFNWR1Jlc291cmNlKiBTVkdQYXR0ZXJuRWxlbWVudDo6Y2FudmFzUmUKICAg
ICByZXR1cm4gbV9wYWludFNlcnZlci5nZXQoKTsKIH0KIAotU1ZHTWF0cml4KiBTVkdQYXR0ZXJu
RWxlbWVudDo6Z2V0Q1RNKCkgY29uc3QKK0FmZmluZVRyYW5zZm9ybSBTVkdQYXR0ZXJuRWxlbWVu
dDo6Z2V0Q1RNKCkgY29uc3QKIHsKLSAgICBTVkdNYXRyaXgqIG1hdCA9IFNWR1NWR0VsZW1lbnQ6
OmNyZWF0ZVNWR01hdHJpeCgpOwotICAgIGlmIChtYXQpIHsKLSAgICAgICAgUmVmUHRyPFNWR01h
dHJpeD4gdmlld0JveCA9IHZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0od2lkdGgoKS0+dmFsdWUoKSwg
aGVpZ2h0KCktPnZhbHVlKCkpOwotICAgICAgICBtYXQtPm11bHRpcGx5KHZpZXdCb3guZ2V0KCkp
OwotICAgIH0KLQorICAgIEFmZmluZVRyYW5zZm9ybSBtYXQ7CisgICAgQWZmaW5lVHJhbnNmb3Jt
IHZpZXdCb3ggPSB2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKHdpZHRoKCktPnZhbHVlKCksIGhlaWdo
dCgpLT52YWx1ZSgpKTsKKyAgICBtYXQgKj0gdmlld0JveDsKICAgICByZXR1cm4gbWF0OwogfQog
CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgJKHJldmlzaW9uIDE4MTQ5
KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNjYsNyArNjYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIFNW
R1Jlc291cmNlKiBjYW52YXNSZXNvdXJjZSgpOwogCiAgICAgICAgIC8vICd2aXJ0dWFsIFNWR0xv
Y2F0YWJsZScgZnVuY3Rpb25zCi0gICAgICAgIHZpcnR1YWwgU1ZHTWF0cml4KiBnZXRDVE0oKSBj
b25zdDsKKyAgICAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gZ2V0Q1RNKCkgY29uc3Q7CiAK
ICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFS
QVRJT05TKFNWR1VSSVJlZmVyZW5jZSwgU3RyaW5nLCBIcmVmLCBocmVmKQpJbmRleDogV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHAJKHJldmlzaW9uIDE4MTQ5
KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI0LDcgKzI0LDYgQEAKICNpZmRlZiBTVkdfU1VQUE9SVAogI2luY2x1ZGUg
IlNWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaCIKIAotI2luY2x1ZGUgIlNWR01hdHJpeC5oIgogI2lu
Y2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTAxLDEy
ICsxMDAsMTIgQEAgdm9pZCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpwYXJzZVByZXNlcgogICAg
ICAgICBtX2NvbnRleHQtPm5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpOwogfQogCi1TVkdNYXRyaXgq
IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OmdldENUTShmbG9hdCBsb2dpY1gsIGZsb2F0IGxvZ2lj
WSwKK0FmZmluZVRyYW5zZm9ybSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpnZXRDVE0oZmxvYXQg
bG9naWNYLCBmbG9hdCBsb2dpY1ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbG9hdCBsb2dpY1dpZHRoLCBmbG9hdCBsb2dpY0hlaWdodCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IC8qcGh5c1gqLywgZmxvYXQgLypw
aHlzWSovLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQg
cGh5c1dpZHRoLCBmbG9hdCBwaHlzSGVpZ2h0KQogewotICAgIFNWR01hdHJpeCogdGVtcCA9IFNW
R1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR01hdHJpeCgpOworICAgIEFmZmluZVRyYW5zZm9ybSB0ZW1w
OwogCiAgICAgaWYgKGFsaWduKCkgPT0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fVU5LTk9XTikK
ICAgICAgICAgcmV0dXJuIHRlbXA7CkBAIC0xMTUsMjYgKzExNCwyNiBAQCBTVkdNYXRyaXgqIFNW
R1ByZXNlcnZlQXNwZWN0UmF0aW86OmdldENUCiAgICAgZmxvYXQgc3ZnYXIgPSBwaHlzV2lkdGgg
LyBwaHlzSGVpZ2h0OwogCiAgICAgaWYgKGFsaWduKCkgPT0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFU
SU9fTk9ORSkgewotICAgICAgICB0ZW1wLT5zY2FsZU5vblVuaWZvcm0ocGh5c1dpZHRoIC8gbG9n
aWNXaWR0aCwgcGh5c0hlaWdodCAvIGxvZ2ljSGVpZ2h0KTsKLSAgICAgICAgdGVtcC0+dHJhbnNs
YXRlKC1sb2dpY1gsIC1sb2dpY1kpOworICAgICAgICB0ZW1wLnNjYWxlKHBoeXNXaWR0aCAvIGxv
Z2ljV2lkdGgsIHBoeXNIZWlnaHQgLyBsb2dpY0hlaWdodCk7CisgICAgICAgIHRlbXAudHJhbnNs
YXRlKC1sb2dpY1gsIC1sb2dpY1kpOwogICAgIH0gZWxzZSBpZiAodnBhciA8IHN2Z2FyICYmICht
ZWV0T3JTbGljZSgpID09IFNWR19NRUVUT1JTTElDRV9NRUVUKSB8fCB2cGFyID49IHN2Z2FyICYm
IChtZWV0T3JTbGljZSgpID09IFNWR19NRUVUT1JTTElDRV9TTElDRSkpIHsKLSAgICAgICAgdGVt
cC0+c2NhbGUocGh5c0hlaWdodCAvIGxvZ2ljSGVpZ2h0KTsKKyAgICAgICAgdGVtcC5zY2FsZShw
aHlzSGVpZ2h0IC8gbG9naWNIZWlnaHQsIHBoeXNIZWlnaHQgLyBsb2dpY0hlaWdodCk7CiAKICAg
ICAgICAgaWYgKGFsaWduKCkgPT0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNSU4gfHwg
YWxpZ24oKSA9PSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1JRCB8fCBhbGlnbigpID09
IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUFYKQotICAgICAgICAgICAgdGVtcC0+dHJh
bnNsYXRlKC1sb2dpY1gsIC1sb2dpY1kpOworICAgICAgICAgICAgdGVtcC50cmFuc2xhdGUoLWxv
Z2ljWCwgLWxvZ2ljWSk7CiAgICAgICAgIGVsc2UgaWYgKGFsaWduKCkgPT0gU1ZHX1BSRVNFUlZF
QVNQRUNUUkFUSU9fWE1JRFlNSU4gfHwgYWxpZ24oKSA9PSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJ
T19YTUlEWU1JRCB8fCBhbGlnbigpID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUFY
KQotICAgICAgICAgICAgdGVtcC0+dHJhbnNsYXRlKC1sb2dpY1ggLSAobG9naWNXaWR0aCAtIHBo
eXNXaWR0aCAqIGxvZ2ljSGVpZ2h0IC8gcGh5c0hlaWdodCkgLyAyLCAtbG9naWNZKTsKKyAgICAg
ICAgICAgIHRlbXAudHJhbnNsYXRlKC1sb2dpY1ggLSAobG9naWNXaWR0aCAtIHBoeXNXaWR0aCAq
IGxvZ2ljSGVpZ2h0IC8gcGh5c0hlaWdodCkgLyAyLCAtbG9naWNZKTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgdGVtcC0+dHJhbnNsYXRlKC1sb2dpY1ggLSAobG9naWNXaWR0aCAtIHBoeXNX
aWR0aCAqIGxvZ2ljSGVpZ2h0IC8gcGh5c0hlaWdodCksIC1sb2dpY1kpOworICAgICAgICAgICAg
dGVtcC50cmFuc2xhdGUoLWxvZ2ljWCAtIChsb2dpY1dpZHRoIC0gcGh5c1dpZHRoICogbG9naWNI
ZWlnaHQgLyBwaHlzSGVpZ2h0KSwgLWxvZ2ljWSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgdGVt
cC0+c2NhbGUocGh5c1dpZHRoIC8gbG9naWNXaWR0aCk7CisgICAgICAgIHRlbXAuc2NhbGUocGh5
c1dpZHRoIC8gbG9naWNXaWR0aCwgcGh5c1dpZHRoIC8gbG9naWNXaWR0aCk7CiAKICAgICAgICAg
aWYgKGFsaWduKCkgPT0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNSU4gfHwgYWxpZ24o
KSA9PSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JTiB8fCBhbGlnbigpID09IFNWR19Q
UkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUlOKQotICAgICAgICAgICAgdGVtcC0+dHJhbnNsYXRl
KC1sb2dpY1gsIC1sb2dpY1kpOworICAgICAgICAgICAgdGVtcC50cmFuc2xhdGUoLWxvZ2ljWCwg
LWxvZ2ljWSk7CiAgICAgICAgIGVsc2UgaWYgKGFsaWduKCkgPT0gU1ZHX1BSRVNFUlZFQVNQRUNU
UkFUSU9fWE1JTllNSUQgfHwgYWxpZ24oKSA9PSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlE
WU1JRCB8fCBhbGlnbigpID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUlEKQotICAg
ICAgICAgICAgdGVtcC0+dHJhbnNsYXRlKC1sb2dpY1gsIC1sb2dpY1kgLSAobG9naWNIZWlnaHQg
LSBwaHlzSGVpZ2h0ICogbG9naWNXaWR0aCAvIHBoeXNXaWR0aCkgLyAyKTsKKyAgICAgICAgICAg
IHRlbXAudHJhbnNsYXRlKC1sb2dpY1gsIC1sb2dpY1kgLSAobG9naWNIZWlnaHQgLSBwaHlzSGVp
Z2h0ICogbG9naWNXaWR0aCAvIHBoeXNXaWR0aCkgLyAyKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgdGVtcC0+dHJhbnNsYXRlKC1sb2dpY1gsIC1sb2dpY1kgLSAobG9naWNIZWlnaHQgLSBw
aHlzSGVpZ2h0ICogbG9naWNXaWR0aCAvIHBoeXNXaWR0aCkpOworICAgICAgICAgICAgdGVtcC50
cmFuc2xhdGUoLWxvZ2ljWCwgLWxvZ2ljWSAtIChsb2dpY0hlaWdodCAtIHBoeXNIZWlnaHQgKiBs
b2dpY1dpZHRoIC8gcGh5c1dpZHRoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRlbXA7CkluZGV4
OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oCShyZXZpc2lvbiAx
ODE0OSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
Y2xhc3MgU3RyaW5nOwotICAgIGNsYXNzIFNWR01hdHJpeDsKKyAgICBjbGFzcyBBZmZpbmVUcmFu
c2Zvcm07CiAgICAgY2xhc3MgU1ZHU3R5bGVkRWxlbWVudDsKIAogICAgIGNsYXNzIFNWR1ByZXNl
cnZlQXNwZWN0UmF0aW8gOiBwdWJsaWMgU2hhcmVkPFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8+IHsg
CkBAIC02NCwxMCArNjQsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNl
dE1lZXRPclNsaWNlKHVuc2lnbmVkIHNob3J0KTsKICAgICAgICAgdW5zaWduZWQgc2hvcnQgbWVl
dE9yU2xpY2UoKSBjb25zdDsKICAgICAgICAgCi0gICAgICAgIFNWR01hdHJpeCogZ2V0Q1RNKGZs
b2F0IGxvZ2ljWCwgZmxvYXQgbG9naWNZLAotICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9h
dCBsb2dpY1dpZHRoLCBmbG9hdCBsb2dpY0hlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmxvYXQgcGh5c1gsIGZsb2F0IHBoeXNZLAotICAgICAgICAgICAgICAgICAgICAgICAgICBm
bG9hdCBwaHlzV2lkdGgsIGZsb2F0IHBoeXNIZWlnaHQpOworICAgICAgICBBZmZpbmVUcmFuc2Zv
cm0gZ2V0Q1RNKGZsb2F0IGxvZ2ljWCwgZmxvYXQgbG9naWNZLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZsb2F0IGxvZ2ljV2lkdGgsIGZsb2F0IGxvZ2ljSGVpZ2h0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHBoeXNYLCBmbG9hdCBwaHlzWSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBwaHlzV2lkdGgsIGZsb2F0IHBoeXNIZWln
aHQpOwogCiAgICAgICAgIC8vIEhlbHBlcgogICAgICAgICB2b2lkIHBhcnNlUHJlc2VydmVBc3Bl
Y3RSYXRpbyhjb25zdCBTdHJpbmcmKTsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1JhZGlh
bEdyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNpb24gMTgxNDkpCisrKyBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiU1ZHUGFpbnRTZXJ2ZXJSYWRpYWxHcmFkaWVudC5oIgog
I2luY2x1ZGUgIlNWR0hlbHBlci5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgotI2luY2x1ZGUg
IlNWR01hdHJpeC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHU3RvcEVs
ZW1lbnQuaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm0uaCIKQEAgLTk3LDcgKzk2LDcgQEAgdm9p
ZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmJ1aWxkR3JhZAogICAgIFJlZlB0cjxTVkdQYWlu
dFNlcnZlclJhZGlhbEdyYWRpZW50PiBncmFkID0gV1RGOjpzdGF0aWNfcG9pbnRlcl9jYXN0PFNW
R1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnQ+KF9ncmFkKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0g
bWF0OwogICAgIGlmIChncmFkaWVudFRyYW5zZm9ybSgpLT5udW1iZXJPZkl0ZW1zKCkgPiAwKQot
ICAgICAgICBtYXQgPSBncmFkaWVudFRyYW5zZm9ybSgpLT5jb25zb2xpZGF0ZSgpLT5tYXRyaXgo
KS0+bWF0cml4KCk7CisgICAgICAgIG1hdCA9IGdyYWRpZW50VHJhbnNmb3JtKCktPmNvbnNvbGlk
YXRlKCktPm1hdHJpeCgpOwogCiAgICAgRGVwcmVjYXRlZFN0cmluZyByZWYgPSBocmVmKCkuZGVw
cmVjYXRlZFN0cmluZygpOwogICAgIFJlZlB0cjxTVkdQYWludFNlcnZlcj4gcHNlcnZlciA9IGdl
dFBhaW50U2VydmVyQnlJZChkb2N1bWVudCgpLCByZWYubWlkKDEpKTsKSW5kZXg6IFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR1NWR0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxODE0OSkKKysrIFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR1NWR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAj
aW5jbHVkZSAiUmVuZGVyU1ZHQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiU1ZHQW5nbGUuaCIKICNp
bmNsdWRlICJTVkdMZW5ndGguaCIKLSNpbmNsdWRlICJTVkdNYXRyaXguaCIKKyNpbmNsdWRlICJB
ZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1By
ZXNlcnZlQXNwZWN0UmF0aW8uaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm0uaCIKQEAgLTEwOCw5
ICsxMDgsOSBAQCBGbG9hdFJlY3QgU1ZHU1ZHRWxlbWVudDo6dmlld3BvcnQoKSBjb25zCiAgICAg
ZG91YmxlIF95ID0geSgpLT52YWx1ZSgpOwogICAgIGRvdWJsZSB3ID0gd2lkdGgoKS0+dmFsdWUo
KTsKICAgICBkb3VibGUgaCA9IGhlaWdodCgpLT52YWx1ZSgpOwotICAgIFJlZlB0cjxTVkdNYXRy
aXg+IHZpZXdCb3ggPSB2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKHcsIGgpOwotICAgIHZpZXdCb3gt
Pm1hdHJpeCgpLm1hcChfeCwgX3ksICZfeCwgJl95KTsKLSAgICB2aWV3Qm94LT5tYXRyaXgoKS5t
YXAodywgaCwgJncsICZoKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gdmlld0JveCA9IHZpZXdCb3hU
b1ZpZXdUcmFuc2Zvcm0odywgaCk7CisgICAgdmlld0JveC5tYXAoX3gsIF95LCAmX3gsICZfeSk7
CisgICAgdmlld0JveC5tYXAodywgaCwgJncsICZoKTsKICAgICByZXR1cm4gRmxvYXRSZWN0KF94
LCBfeSwgdywgaCk7CiB9CiAKQEAgLTI5MSw5ICsyOTEsOSBAQCBGbG9hdFBvaW50IFNWR1NWR0Vs
ZW1lbnQ6OmNyZWF0ZVNWR1BvaW50CiAgICAgcmV0dXJuIEZsb2F0UG9pbnQoKTsKIH0KIAotU1ZH
TWF0cml4KiBTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdNYXRyaXgoKQorQWZmaW5lVHJhbnNmb3Jt
IFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR01hdHJpeCgpCiB7Ci0gICAgcmV0dXJuIG5ldyBTVkdN
YXRyaXgoKTsKKyAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7CiB9CiAKIEZsb2F0UmVjdCBT
VkdTVkdFbGVtZW50OjpjcmVhdGVTVkdSZWN0KCkKQEAgLTMwNiwzOCArMzA2LDM0IEBAIFNWR1Ry
YW5zZm9ybSogU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHVHIKICAgICByZXR1cm4gbmV3IFNWR1Ry
YW5zZm9ybSgpOwogfQogCi1TVkdUcmFuc2Zvcm0qIFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR1Ry
YW5zZm9ybUZyb21NYXRyaXgoU1ZHTWF0cml4KiBtYXRyaXgpCitTVkdUcmFuc2Zvcm0qIFNWR1NW
R0VsZW1lbnQ6OmNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgoY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBtYXRyaXgpCiB7ICAgIAogICAgIFNWR1RyYW5zZm9ybSogb2JqID0gU1ZHU1ZHRWxlbWVu
dDo6Y3JlYXRlU1ZHVHJhbnNmb3JtKCk7CiAgICAgb2JqLT5zZXRNYXRyaXgobWF0cml4KTsKICAg
ICByZXR1cm4gb2JqOwogfQogCi1TVkdNYXRyaXgqIFNWR1NWR0VsZW1lbnQ6OmdldENUTSgpIGNv
bnN0CitBZmZpbmVUcmFuc2Zvcm0gU1ZHU1ZHRWxlbWVudDo6Z2V0Q1RNKCkgY29uc3QKIHsKLSAg
ICBTVkdNYXRyaXgqIG1hdCA9IGNyZWF0ZVNWR01hdHJpeCgpOwotICAgIGlmIChtYXQpIHsKLSAg
ICAgICAgbWF0LT50cmFuc2xhdGUoeCgpLT52YWx1ZSgpLCB5KCktPnZhbHVlKCkpOwotCi0gICAg
ICAgIGlmIChhdHRyaWJ1dGVzKCktPmdldE5hbWVkSXRlbShTVkdOYW1lczo6dmlld0JveEF0dHIp
KSB7Ci0gICAgICAgICAgICBSZWZQdHI8U1ZHTWF0cml4PiB2aWV3Qm94ID0gdmlld0JveFRvVmll
d1RyYW5zZm9ybSh3aWR0aCgpLT52YWx1ZSgpLCBoZWlnaHQoKS0+dmFsdWUoKSk7Ci0gICAgICAg
ICAgICBtYXQtPm11bHRpcGx5KHZpZXdCb3guZ2V0KCkpOwotICAgICAgICB9CisgICAgQWZmaW5l
VHJhbnNmb3JtIG1hdDsKKyAgICBtYXQudHJhbnNsYXRlKHgoKS0+dmFsdWUoKSwgeSgpLT52YWx1
ZSgpKTsKKworICAgIGlmIChhdHRyaWJ1dGVzKCktPmdldE5hbWVkSXRlbShTVkdOYW1lczo6dmll
d0JveEF0dHIpKSB7CisgICAgICAgIEFmZmluZVRyYW5zZm9ybSB2aWV3Qm94ID0gdmlld0JveFRv
Vmlld1RyYW5zZm9ybSh3aWR0aCgpLT52YWx1ZSgpLCBoZWlnaHQoKS0+dmFsdWUoKSk7CisgICAg
ICAgIG1hdCA9IHZpZXdCb3ggKiBtYXQ7CiAgICAgfQogCiAgICAgcmV0dXJuIG1hdDsKIH0KIAot
U1ZHTWF0cml4KiBTVkdTVkdFbGVtZW50OjpnZXRTY3JlZW5DVE0oKSBjb25zdAorQWZmaW5lVHJh
bnNmb3JtIFNWR1NWR0VsZW1lbnQ6OmdldFNjcmVlbkNUTSgpIGNvbnN0CiB7Ci0gICAgU1ZHTWF0
cml4KiBtYXQgPSBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50OjpnZXRTY3JlZW5DVE0oKTsKLSAg
ICBpZiAobWF0KSB7Ci0gICAgICAgIG1hdC0+dHJhbnNsYXRlKHgoKS0+dmFsdWUoKSwgeSgpLT52
YWx1ZSgpKTsKLQotICAgICAgICBpZiAoYXR0cmlidXRlcygpLT5nZXROYW1lZEl0ZW0oU1ZHTmFt
ZXM6OnZpZXdCb3hBdHRyKSkgewotICAgICAgICAgICAgUmVmUHRyPFNWR01hdHJpeD4gdmlld0Jv
eCA9IHZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0od2lkdGgoKS0+dmFsdWUoKSwgaGVpZ2h0KCktPnZh
bHVlKCkpOwotICAgICAgICAgICAgbWF0LT5tdWx0aXBseSh2aWV3Qm94LmdldCgpKTsKLSAgICAg
ICAgfQorICAgIEFmZmluZVRyYW5zZm9ybSBtYXQgPSBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50
OjpnZXRTY3JlZW5DVE0oKTsKKyAgICBtYXQudHJhbnNsYXRlKHgoKS0+dmFsdWUoKSwgeSgpLT52
YWx1ZSgpKTsKKworICAgIGlmIChhdHRyaWJ1dGVzKCktPmdldE5hbWVkSXRlbShTVkdOYW1lczo6
dmlld0JveEF0dHIpKSB7CisgICAgICAgIEFmZmluZVRyYW5zZm9ybSB2aWV3Qm94ID0gdmlld0Jv
eFRvVmlld1RyYW5zZm9ybSh3aWR0aCgpLT52YWx1ZSgpLCBoZWlnaHQoKS0+dmFsdWUoKSk7Cisg
ICAgICAgIG1hdCA9IHZpZXdCb3ggKiBtYXQ7CiAgICAgfQogCiAgICAgcmV0dXJuIG1hdDsKSW5k
ZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmgJKHJldmlzaW9uIDE4MTQ5KQorKysgV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiB7CiAgICAgY2xhc3MgU1ZHQW5nbGU7CiAgICAgY2xhc3Mg
U1ZHTGVuZ3RoOwotICAgIGNsYXNzIFNWR01hdHJpeDsKICAgICBjbGFzcyBTVkdUcmFuc2Zvcm07
CiAgICAgY2xhc3MgU1ZHTGVuZ3RoOwogICAgIGNsYXNzIFRpbWVTY2hlZHVsZXI7CkBAIC0xMDgs
MTYgKzEwNywxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBzdGF0aWMgU1ZHTGVuZ3Ro
KiBjcmVhdGVTVkdMZW5ndGgoKTsKICAgICAgICAgc3RhdGljIFNWR0FuZ2xlKiBjcmVhdGVTVkdB
bmdsZSgpOwogICAgICAgICBzdGF0aWMgRmxvYXRQb2ludCBjcmVhdGVTVkdQb2ludCgpOwotICAg
ICAgICBzdGF0aWMgU1ZHTWF0cml4KiBjcmVhdGVTVkdNYXRyaXgoKTsKKyAgICAgICAgc3RhdGlj
IEFmZmluZVRyYW5zZm9ybSBjcmVhdGVTVkdNYXRyaXgoKTsKICAgICAgICAgc3RhdGljIEZsb2F0
UmVjdCBjcmVhdGVTVkdSZWN0KCk7CiAgICAgICAgIHN0YXRpYyBTVkdUcmFuc2Zvcm0qIGNyZWF0
ZVNWR1RyYW5zZm9ybSgpOwotICAgICAgICBzdGF0aWMgU1ZHVHJhbnNmb3JtKiBjcmVhdGVTVkdU
cmFuc2Zvcm1Gcm9tTWF0cml4KFNWR01hdHJpeCopOworICAgICAgICBzdGF0aWMgU1ZHVHJhbnNm
b3JtKiBjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYp
OwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRy
aWJ1dGUqKTsKIAogICAgICAgICAvLyAndmlydHVhbCBTVkdMb2NhdGFibGUnIGZ1bmN0aW9ucwot
ICAgICAgICB2aXJ0dWFsIFNWR01hdHJpeCogZ2V0Q1RNKCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1
YWwgU1ZHTWF0cml4KiBnZXRTY3JlZW5DVE0oKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBBZmZp
bmVUcmFuc2Zvcm0gZ2V0Q1RNKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNm
b3JtIGdldFNjcmVlbkNUTSgpIGNvbnN0OwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJl
cklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVu
ZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KICAgICAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNy
ZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKSW5kZXg6IFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODE0OSkKKysrIFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICsz
Myw2IEBACiAjaW5jbHVkZSAiUmVuZGVyUGF0aC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIK
ICNpbmNsdWRlICJTVkdIZWxwZXIuaCIKLSNpbmNsdWRlICJTVkdNYXRyaXguaCIKICNpbmNsdWRl
ICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiU1ZH
U1ZHRWxlbWVudC5oIgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkTG9jYXRhYmxl
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkTG9j
YXRhYmxlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MTQ5KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4
LDcgQEAKIAogI2luY2x1ZGUgIlJlbmRlclBhdGguaCIKICNpbmNsdWRlICJTVkdFbGVtZW50Lmgi
Ci0jaW5jbHVkZSAiU1ZHTWF0cml4LmgiCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAj
aW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01OCwx
MiArNTgsMTIgQEAgRmxvYXRSZWN0IFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQ6OmdldAogICAg
IHJldHVybiBTVkdMb2NhdGFibGU6OmdldEJCb3godGhpcyk7CiB9CiAKLVNWR01hdHJpeCogU1ZH
U3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6Z2V0Q1RNKCkgY29uc3QKK0FmZmluZVRyYW5zZm9ybSBT
VkdTdHlsZWRMb2NhdGFibGVFbGVtZW50OjpnZXRDVE0oKSBjb25zdAogewogICAgIHJldHVybiBT
VkdMb2NhdGFibGU6OmdldENUTSh0aGlzKTsKIH0KIAotU1ZHTWF0cml4KiBTVkdTdHlsZWRMb2Nh
dGFibGVFbGVtZW50OjpnZXRTY3JlZW5DVE0oKSBjb25zdAorQWZmaW5lVHJhbnNmb3JtIFNWR1N0
eWxlZExvY2F0YWJsZUVsZW1lbnQ6OmdldFNjcmVlbkNUTSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IFNWR0xvY2F0YWJsZTo6Z2V0U2NyZWVuQ1RNKHRoaXMpOwogfQpJbmRleDogV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQuaAkocmV2aXNpb24gMTgxNDkpCisr
KyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDcgKzI5LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xh
c3MgU1ZHTWF0cml4OwogICAgIGNsYXNzIFNWR0VsZW1lbnQ7CiAKICAgICBjbGFzcyBTVkdTdHls
ZWRMb2NhdGFibGVFbGVtZW50IDogcHVibGljIFNWR1N0eWxlZEVsZW1lbnQsIHZpcnR1YWwgcHVi
bGljIFNWR0xvY2F0YWJsZSB7CkBAIC00NCw4ICs0Myw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCBTVkdFbGVtZW50KiBmYXJ0aGVzdFZpZXdwb3J0RWxlbWVudCgpIGNv
bnN0OwogCiAgICAgICAgIHZpcnR1YWwgRmxvYXRSZWN0IGdldEJCb3goKSBjb25zdDsKLSAgICAg
ICAgdmlydHVhbCBTVkdNYXRyaXgqIGdldENUTSgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIFNW
R01hdHJpeCogZ2V0U2NyZWVuQ1RNKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgQWZmaW5lVHJh
bnNmb3JtIGdldENUTSgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBn
ZXRTY3JlZW5DVE0oKSBjb25zdDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAxODE0OSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBA
QAogI2luY2x1ZGUgIlJlbmRlclBhdGguaCIKICNpbmNsdWRlICJTVkdEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIlNWR0hlbHBlci5oIgotI2luY2x1ZGUgIlNWR01hdHJpeC5oIgorI2luY2x1ZGUgIkFm
ZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJTVkdUcmFuc2Zvcm1MaXN0LmgiCiAKQEAgLTUwLDE3ICs1MCwxNyBAQCBTVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudDo6flNWR1N0eWxlCiAKIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJ
T05TKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LCBTVkdUcmFuc2Zvcm1MaXN0KiwgVHJh
bnNmb3JtTGlzdCwgdHJhbnNmb3JtTGlzdCwgVHJhbnNmb3JtLCB0cmFuc2Zvcm0sIFNWR05hbWVz
Ojp0cmFuc2Zvcm1BdHRyLmxvY2FsTmFtZSgpLCBtX3RyYW5zZm9ybS5nZXQoKSkKIAotU1ZHTWF0
cml4KiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6bG9jYWxNYXRyaXgoKSBjb25zdAor
QWZmaW5lVHJhbnNmb3JtIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojpsb2NhbE1hdHJp
eCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGxhenlfY3JlYXRlPFNWR01hdHJpeD4obV9sb2NhbE1h
dHJpeCk7CisgICAgcmV0dXJuIG1fbG9jYWxNYXRyaXg7CiB9CiAKLVNWR01hdHJpeCogU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmdldENUTSgpIGNvbnN0CitBZmZpbmVUcmFuc2Zvcm0g
U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmdldENUTSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIFNWR1RyYW5zZm9ybWFibGU6OmdldENUTSh0aGlzKTsKIH0KIAotU1ZHTWF0cml4KiBTVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6Z2V0U2NyZWVuQ1RNKCkgY29uc3QKK0FmZmluZVRy
YW5zZm9ybSBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6Z2V0U2NyZWVuQ1RNKCkgY29u
c3QKIHsKICAgICByZXR1cm4gU1ZHVHJhbnNmb3JtYWJsZTo6Z2V0U2NyZWVuQ1RNKHRoaXMpOwog
fQpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojp1
cGRhCiAgICAgaWYobG9jYWxUcmFuc2Zvcm0pIHsKICAgICAgICAgbV9sb2NhbE1hdHJpeCA9IGxv
Y2FsVHJhbnNmb3JtLT5tYXRyaXgoKTsKICAgICAgICAgaWYgKHJlbmRlcmVyKCkpIHsKLSAgICAg
ICAgICAgIHJlbmRlcmVyKCktPnNldExvY2FsVHJhbnNmb3JtKG1fbG9jYWxNYXRyaXgtPm1hdHJp
eCgpKTsKKyAgICAgICAgICAgIHJlbmRlcmVyKCktPnNldExvY2FsVHJhbnNmb3JtKG1fbG9jYWxN
YXRyaXgpOwogICAgICAgICAgICAgcmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiAg
ICAgICAgIH0KICAgICB9CkBAIC0xMTMsOCArMTEzLDggQEAgdm9pZCBTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudDo6YXR0YQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmF0dGFjaCgpOwog
Ci0gICAgaWYgKHJlbmRlcmVyKCkgJiYgbV9sb2NhbE1hdHJpeCkKLSAgICAgICAgcmVuZGVyZXIo
KS0+c2V0TG9jYWxUcmFuc2Zvcm0obV9sb2NhbE1hdHJpeC0+bWF0cml4KCkpOworICAgIGlmIChy
ZW5kZXJlcigpICYmICFtX2xvY2FsTWF0cml4LmlzSWRlbnRpdHkoKSkKKyAgICAgICAgcmVuZGVy
ZXIoKS0+c2V0TG9jYWxUcmFuc2Zvcm0obV9sb2NhbE1hdHJpeCk7CiB9CiAKIH0KSW5kZXg6IFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaAko
cmV2aXNpb24gMTgxNDkpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1h
YmxlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw4ICszNCw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBjbGFzcyBOb2RlOwogICAgIGNsYXNzIFN0cmluZ0ltcGw7CiAgICAgY2xh
c3MgU1ZHVHJhbnNmb3JtTGlzdDsKLSAgICBjbGFzcyBTVkdNYXRyaXg7Ci0gICAgY2xhc3MgU1ZH
VHJhbnNmb3JtTGlzdDsKIAogICAgIGNsYXNzIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50
IDogcHVibGljIFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQsIHB1YmxpYyBTVkdUcmFuc2Zvcm1h
YmxlIHsKICAgICBwdWJsaWM6CkBAIC00NSwxMSArNDMsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTdHlsZWRUcmFuc2Zvcm1hYmxlKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQogCiAgICAgICAgIC8vICdTVkdUcmFuc2Zvcm1hYmxlJyBmdW5jdGlvbnMK
LSAgICAgICAgdmlydHVhbCBTVkdNYXRyaXgqIGxvY2FsTWF0cml4KCkgY29uc3Q7CisgICAgICAg
IHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGxvY2FsTWF0cml4KCkgY29uc3Q7CiAKICAgICAgICAg
Ly8gRGVyaXZlZCBmcm9tOiAnU1ZHTG9jYXRhYmxlJwotICAgICAgICB2aXJ0dWFsIFNWR01hdHJp
eCogZ2V0Q1RNKCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgU1ZHTWF0cml4KiBnZXRTY3JlZW5D
VE0oKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gZ2V0Q1RNKCkgY29u
c3Q7CisgICAgICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGdldFNjcmVlbkNUTSgpIGNvbnN0
OwogICAgICAgICB2aXJ0dWFsIFNWR0VsZW1lbnQqIG5lYXJlc3RWaWV3cG9ydEVsZW1lbnQoKSBj
b25zdDsKICAgICAgICAgdmlydHVhbCBTVkdFbGVtZW50KiBmYXJ0aGVzdFZpZXdwb3J0RWxlbWVu
dCgpIGNvbnN0OwogCkBAIC02Miw3ICs2MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBtdXRh
YmxlIFJlZlB0cjxTVkdNYXRyaXg+IG1fbG9jYWxNYXRyaXg7CisgICAgICAgIG11dGFibGUgQWZm
aW5lVHJhbnNmb3JtIG1fbG9jYWxNYXRyaXg7CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RF
Q0xBUkFUSU9OUyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCwgU1ZHVHJhbnNmb3JtTGlz
dCosIFJlZlB0cjxTVkdUcmFuc2Zvcm1MaXN0PiwgVHJhbnNmb3JtLCB0cmFuc2Zvcm0pCiAgICAg
fTsKIApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAkocmV2aXNpb24gMTgx
NDkpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI0LDEwICsyNCwxMCBAQAogI2lmZGVmIFNWR19TVVBQT1JUCiAjaW5jbHVkZSAiU1ZH
VGV4dEVsZW1lbnQuaCIKIAorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUg
IkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1RleHQuaCIKICNpbmNsdWRlICJTVkdM
ZW5ndGhMaXN0LmgiCi0jaW5jbHVkZSAiU1ZHTWF0cml4LmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVy
U3R5bGUuaCIKICNpbmNsdWRlICJTVkdUU3BhbkVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdUcmFu
c2Zvcm1MaXN0LmgiCkBAIC00Nyw5ICs0Nyw5IEBAIFNWR1RleHRFbGVtZW50Ojp+U1ZHVGV4dEVs
ZW1lbnQoKQogCiBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdUZXh0RWxlbWVudCwg
U1ZHVHJhbnNmb3JtTGlzdCosIFRyYW5zZm9ybUxpc3QsIHRyYW5zZm9ybUxpc3QsIFRyYW5zZm9y
bSwgdHJhbnNmb3JtLCBTVkdOYW1lczo6dHJhbnNmb3JtQXR0ci5sb2NhbE5hbWUoKSwgbV90cmFu
c2Zvcm0uZ2V0KCkpCiAKLVNWR01hdHJpeCogU1ZHVGV4dEVsZW1lbnQ6OmxvY2FsTWF0cml4KCkg
Y29uc3QKK0FmZmluZVRyYW5zZm9ybSBTVkdUZXh0RWxlbWVudDo6bG9jYWxNYXRyaXgoKSBjb25z
dAogewotICAgIHJldHVybiBsYXp5X2NyZWF0ZTxTVkdNYXRyaXg+KG1fbG9jYWxNYXRyaXgpOwor
ICAgIHJldHVybiBtX2xvY2FsTWF0cml4OwogfQogCiB2b2lkIFNWR1RleHRFbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCkBAIC03NSw3ICs3NSw3IEBA
IHZvaWQgU1ZHVGV4dEVsZW1lbnQ6OnVwZGF0ZUxvY2FsVHJhbnNmb3IKICAgICBpZiAobG9jYWxU
cmFuc2Zvcm0pIHsKICAgICAgICAgbV9sb2NhbE1hdHJpeCA9IGxvY2FsVHJhbnNmb3JtLT5tYXRy
aXgoKTsKICAgICAgICAgaWYgKHJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgIHJlbmRlcmVyKCkt
PnNldExvY2FsVHJhbnNmb3JtKG1fbG9jYWxNYXRyaXgtPm1hdHJpeCgpKTsKKyAgICAgICAgICAg
IHJlbmRlcmVyKCktPnNldExvY2FsVHJhbnNmb3JtKG1fbG9jYWxNYXRyaXgpOwogICAgICAgICAg
ICAgcmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiAgICAgICAgIH0KICAgICB9CkBA
IC04NSw4ICs4NSw4IEBAIHZvaWQgU1ZHVGV4dEVsZW1lbnQ6OmF0dGFjaCgpCiB7CiAgICAgU1ZH
U3R5bGVkRWxlbWVudDo6YXR0YWNoKCk7CiAKLSAgICBpZiAocmVuZGVyZXIoKSAmJiBtX2xvY2Fs
TWF0cml4KQotICAgICAgICByZW5kZXJlcigpLT5zZXRMb2NhbFRyYW5zZm9ybShtX2xvY2FsTWF0
cml4LT5tYXRyaXgoKSk7CisgICAgaWYgKHJlbmRlcmVyKCkgJiYgIW1fbG9jYWxNYXRyaXguaXNJ
ZGVudGl0eSgpKQorICAgICAgICByZW5kZXJlcigpLT5zZXRMb2NhbFRyYW5zZm9ybShtX2xvY2Fs
TWF0cml4KTsKIH0KIAogU1ZHRWxlbWVudCogU1ZHVGV4dEVsZW1lbnQ6Om5lYXJlc3RWaWV3cG9y
dEVsZW1lbnQoKSBjb25zdApAQCAtMTA0LDEyICsxMDQsMTIgQEAgRmxvYXRSZWN0IFNWR1RleHRF
bGVtZW50OjpnZXRCQm94KCkgY29ucwogICAgIHJldHVybiBTVkdUcmFuc2Zvcm1hYmxlOjpnZXRC
Qm94KHRoaXMpOwogfQogCi1TVkdNYXRyaXgqIFNWR1RleHRFbGVtZW50OjpnZXRTY3JlZW5DVE0o
KSBjb25zdAorQWZmaW5lVHJhbnNmb3JtIFNWR1RleHRFbGVtZW50OjpnZXRTY3JlZW5DVE0oKSBj
b25zdAogewogICAgIHJldHVybiBTVkdUcmFuc2Zvcm1hYmxlOjpnZXRTY3JlZW5DVE0odGhpcyk7
CiB9CiAKLVNWR01hdHJpeCogU1ZHVGV4dEVsZW1lbnQ6OmdldENUTSgpIGNvbnN0CitBZmZpbmVU
cmFuc2Zvcm0gU1ZHVGV4dEVsZW1lbnQ6OmdldENUTSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNW
R1RyYW5zZm9ybWFibGU6OmdldENUTSh0aGlzKTsKIH0KSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR1RleHRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVGV4
dEVsZW1lbnQuaAkocmV2aXNpb24gMTgxNDkpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUZXh0
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywxNCArNDMsMTQgQEAgbmFtZXNwYWNlIFdl
YkNvcmUKICAgICAgICAgdmlydHVhbCBTVkdFbGVtZW50KiBmYXJ0aGVzdFZpZXdwb3J0RWxlbWVu
dCgpIGNvbnN0OwogCiAgICAgICAgIHZpcnR1YWwgRmxvYXRSZWN0IGdldEJCb3goKSBjb25zdDsK
LSAgICAgICAgdmlydHVhbCBTVkdNYXRyaXgqIGdldENUTSgpIGNvbnN0OwotICAgICAgICB2aXJ0
dWFsIFNWR01hdHJpeCogZ2V0U2NyZWVuQ1RNKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgQWZm
aW5lVHJhbnNmb3JtIGdldENUTSgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIEFmZmluZVRyYW5z
Zm9ybSBnZXRTY3JlZW5DVE0oKSBjb25zdDsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVy
ZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6OnJl
bmRlcmVySXNOZWVkZWQoc3R5bGUpOyB9CiAgICAgICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBj
cmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKICAgICAgICAg
dmlydHVhbCB2b2lkIGF0dGFjaCgpOwotICAgICAgICB2aXJ0dWFsIFNWR01hdHJpeCogbG9jYWxN
YXRyaXgoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxNYXRy
aXgoKSBjb25zdDsKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMb2NhbFRy
YW5zZm9ybShTVkdUcmFuc2Zvcm1MaXN0Kik7CiAgICAgICAgIApAQCAtNTgsNyArNTgsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRl
eHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgbXV0YWJsZSBSZWZQdHI8U1ZHTWF0cml4PiBtX2xvY2FsTWF0cml4OworICAgICAgICBtdXRh
YmxlIEFmZmluZVRyYW5zZm9ybSBtX2xvY2FsTWF0cml4OwogICAgICAgICBBTklNQVRFRF9QUk9Q
RVJUWV9ERUNMQVJBVElPTlMoU1ZHVGV4dEVsZW1lbnQsIFNWR1RyYW5zZm9ybUxpc3QqLCBSZWZQ
dHI8U1ZHVHJhbnNmb3JtTGlzdD4sIFRyYW5zZm9ybSwgdHJhbnNmb3JtKQogICAgIH07CiAKSW5k
ZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtLmNwcAkocmV2aXNpb24gMTgxNDkpCisrKyBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsy
Myw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAotI2luY2x1
ZGUgIlNWR01hdHJpeC5oIgorI2luY2x1ZGUgIlNWR0FuZ2xlLmgiCiAjaW5jbHVkZSAiU1ZHVHJh
bnNmb3JtLmgiCiAjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgogCkBAIC0zMSw3ICszMSw2IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBTVkdUcmFuc2Zvcm06OlNWR1RyYW5zZm9ybSgp
CiAgICAgOiBTaGFyZWQ8U1ZHVHJhbnNmb3JtPigpCi0gICAgLCBtX21hdHJpeChTVkdTVkdFbGVt
ZW50OjpjcmVhdGVTVkdNYXRyaXgoKSkKIHsKICAgICBtX3R5cGUgPSBTVkdfVFJBTlNGT1JNX1VO
S05PV047CiAgICAgbV9hbmdsZSA9IDA7CkBAIC00Niw5ICs0NSw5IEBAIHVuc2lnbmVkIHNob3J0
IFNWR1RyYW5zZm9ybTo6dHlwZSgpIGNvbnMKICAgICByZXR1cm4gbV90eXBlOwogfQogCi1TVkdN
YXRyaXggKlNWR1RyYW5zZm9ybTo6bWF0cml4KCkgY29uc3QKK0FmZmluZVRyYW5zZm9ybSBTVkdU
cmFuc2Zvcm06Om1hdHJpeCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fbWF0cml4LmdldCgpOwor
ICAgIHJldHVybiBtX21hdHJpeDsKIH0KIAogZG91YmxlIFNWR1RyYW5zZm9ybTo6YW5nbGUoKSBj
b25zdApAQCAtNTYsMTEgKzU1LDExIEBAIGRvdWJsZSBTVkdUcmFuc2Zvcm06OmFuZ2xlKCkgY29u
c3QKICAgICByZXR1cm4gbV9hbmdsZTsKIH0KIAotdm9pZCBTVkdUcmFuc2Zvcm06OnNldE1hdHJp
eChTVkdNYXRyaXggKm1hdHJpeCkKK3ZvaWQgU1ZHVHJhbnNmb3JtOjpzZXRNYXRyaXgoY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBtYXRyaXgpCiB7CiAgICAgbV90eXBlID0gU1ZHX1RSQU5TRk9STV9N
QVRSSVg7CiAgICAgbV9hbmdsZSA9IDA7Ci0gICAgCisKICAgICBtX21hdHJpeCA9IG1hdHJpeDsK
IH0KIApAQCAtNjgsNDggKzY3LDQ4IEBAIHZvaWQgU1ZHVHJhbnNmb3JtOjpzZXRUcmFuc2xhdGUo
ZG91YmxlIHQKIHsKICAgICBtX3R5cGUgPSBTVkdfVFJBTlNGT1JNX1RSQU5TTEFURTsKICAgICBt
X2FuZ2xlID0gMDsKLSAgICAKLSAgICBtX21hdHJpeC0+cmVzZXQoKTsKLSAgICBtX21hdHJpeC0+
dHJhbnNsYXRlKHR4LCB0eSk7CisKKyAgICBtX21hdHJpeC5yZXNldCgpOworICAgIG1fbWF0cml4
LnRyYW5zbGF0ZSh0eCwgdHkpOwogfQogCiB2b2lkIFNWR1RyYW5zZm9ybTo6c2V0U2NhbGUoZG91
YmxlIHN4LCBkb3VibGUgc3kpCiB7CiAgICAgbV90eXBlID0gU1ZHX1RSQU5TRk9STV9TQ0FMRTsK
ICAgICBtX2FuZ2xlID0gMDsKLSAgICAKLSAgICBtX21hdHJpeC0+cmVzZXQoKTsKLSAgICBtX21h
dHJpeC0+c2NhbGVOb25Vbmlmb3JtKHN4LCBzeSk7CisKKyAgICBtX21hdHJpeC5yZXNldCgpOwor
ICAgIG1fbWF0cml4LnNjYWxlKHN4LCBzeSk7CiB9CiAKIHZvaWQgU1ZHVHJhbnNmb3JtOjpzZXRS
b3RhdGUoZG91YmxlIGFuZ2xlLCBkb3VibGUgY3gsIGRvdWJsZSBjeSkKIHsKICAgICBtX3R5cGUg
PSBTVkdfVFJBTlNGT1JNX1JPVEFURTsKICAgICBtX2FuZ2xlID0gYW5nbGU7Ci0gICAgCisKICAg
ICAvLyBUT0RPOiB0b1N0cmluZygpIGltcGxlbWVudGF0aW9uLCB3aGljaCBjYW4gc2hvdyBjeCwg
Y3kgKG5lZWQgdG8gYmUgc3RvcmVkPykKLSAgICBtX21hdHJpeC0+cmVzZXQoKTsKLSAgICBtX21h
dHJpeC0+dHJhbnNsYXRlKGN4LCBjeSk7Ci0gICAgbV9tYXRyaXgtPnJvdGF0ZShhbmdsZSk7Ci0g
ICAgbV9tYXRyaXgtPnRyYW5zbGF0ZSgtY3gsIC1jeSk7CisgICAgbV9tYXRyaXgucmVzZXQoKTsK
KyAgICBtX21hdHJpeC50cmFuc2xhdGUoY3gsIGN5KTsKKyAgICBtX21hdHJpeC5yb3RhdGUoYW5n
bGUpOworICAgIG1fbWF0cml4LnRyYW5zbGF0ZSgtY3gsIC1jeSk7CiB9CiAKIHZvaWQgU1ZHVHJh
bnNmb3JtOjpzZXRTa2V3WChkb3VibGUgYW5nbGUpCiB7CiAgICAgbV90eXBlID0gU1ZHX1RSQU5T
Rk9STV9TS0VXWDsKICAgICBtX2FuZ2xlID0gYW5nbGU7Ci0gICAgCi0gICAgbV9tYXRyaXgtPnJl
c2V0KCk7Ci0gICAgbV9tYXRyaXgtPnNrZXdYKGFuZ2xlKTsKKworICAgIG1fbWF0cml4LnJlc2V0
KCk7CisgICAgbV9tYXRyaXguc2hlYXIodGFuKFNWR0FuZ2xlOjp0b3JhZChhbmdsZSkpLCAwLjBG
KTsKIH0KIAogdm9pZCBTVkdUcmFuc2Zvcm06OnNldFNrZXdZKGRvdWJsZSBhbmdsZSkKIHsKICAg
ICBtX3R5cGUgPSBTVkdfVFJBTlNGT1JNX1NLRVdZOwogICAgIG1fYW5nbGUgPSBhbmdsZTsKLSAg
ICAKLSAgICBtX21hdHJpeC0+cmVzZXQoKTsKLSAgICBtX21hdHJpeC0+c2tld1koYW5nbGUpOwor
CisgICAgbV9tYXRyaXgucmVzZXQoKTsKKyAgICBtX21hdHJpeC5zaGVhcigwLjBGLCB0YW4oU1ZH
QW5nbGU6OnRvcmFkKGFuZ2xlKSkpOwogfQogCiAvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdUcmFuc2Zvcm0uaAkocmV2aXNpb24gMTgxNDkpCisrKyBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdUcmFuc2Zvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTIgKzI0LDEyIEBACiAjZGVm
aW5lIEtTVkdfU1ZHVHJhbnNmb3JtSW1wbF9ICiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAorI2luY2x1
ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIlNoYXJlZC5oIgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgU1ZHTWF0cml4
OwogICAgIGNsYXNzIFNWR1RyYW5zZm9ybSA6IHB1YmxpYyBTaGFyZWQ8U1ZHVHJhbnNmb3JtPiB7
CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIFNWR1RyYW5zZm9ybVR5cGUgewpAQCAtNDcsMTEg
KzQ3LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICAgIAogICAgICAgICB1
bnNpZ25lZCBzaG9ydCB0eXBlKCkgY29uc3Q7CiAKLSAgICAgICAgU1ZHTWF0cml4KiBtYXRyaXgo
KSBjb25zdDsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIG1hdHJpeCgpIGNvbnN0OwogICAgIAog
ICAgICAgICBkb3VibGUgYW5nbGUoKSBjb25zdDsKIAotICAgICAgICB2b2lkIHNldE1hdHJpeChT
VkdNYXRyaXgqKTsKKyAgICAgICAgdm9pZCBzZXRNYXRyaXgoY29uc3QgQWZmaW5lVHJhbnNmb3Jt
Jik7CiAgICAgICAgIHZvaWQgc2V0VHJhbnNsYXRlKGRvdWJsZSB0eCwgZG91YmxlIHR5KTsKICAg
ICAgICAgdm9pZCBzZXRTY2FsZShkb3VibGUgc3gsIGRvdWJsZSBzeSk7CiAgICAgICAgIHZvaWQg
c2V0Um90YXRlKGRvdWJsZSBhbmdsZSwgZG91YmxlIGN4LCBkb3VibGUgY3kpOwpAQCAtNjEsNyAr
NjEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgZG91Ymxl
IG1fYW5nbGU7CiAgICAgICAgIHVuc2lnbmVkIHNob3J0IG1fdHlwZTsKLSAgICAgICAgUmVmUHRy
PFNWR01hdHJpeD4gbV9tYXRyaXg7CisgICAgICAgIEFmZmluZVRyYW5zZm9ybSBtX21hdHJpeDsK
ICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdUcmFuc2Zvcm1MaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdUcmFuc2Zvcm1MaXN0LmNwcAkocmV2aXNpb24gMTgxNDkpCisrKyBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdUcmFuc2Zvcm1MaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAog
CiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAotI2luY2x1ZGUgIlNWR01hdHJpeC5oIgorI2luY2x1ZGUg
IkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIlNWR1RyYW5zZm9ybS5oIgogI2luY2x1ZGUg
IlNWR1NWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0LmgiCkBAIC00MCw3
ICs0MCw3IEBAIFNWR1RyYW5zZm9ybUxpc3Q6On5TVkdUcmFuc2Zvcm1MaXN0KCkKIHsKIH0KIAot
UmVmUHRyPFNWR1RyYW5zZm9ybT4gU1ZHVHJhbnNmb3JtTGlzdDo6Y3JlYXRlU1ZHVHJhbnNmb3Jt
RnJvbU1hdHJpeChTVkdNYXRyaXgqIG1hdHJpeCkgY29uc3QKK1JlZlB0cjxTVkdUcmFuc2Zvcm0+
IFNWR1RyYW5zZm9ybUxpc3Q6OmNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgoY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBtYXRyaXgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNWR1NWR0VsZW1lbnQ6
OmNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgobWF0cml4KTsKIH0KQEAgLTYyLDExICs2Miwx
MSBAQCBTVkdUcmFuc2Zvcm0qIFNWR1RyYW5zZm9ybUxpc3Q6OmNvbmNhdGVuCiAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICAKICAgICBTVkdUcmFuc2Zvcm0qIG9iaiA9IFNWR1NWR0VsZW1lbnQ6
OmNyZWF0ZVNWR1RyYW5zZm9ybSgpOwotICAgIFNWR01hdHJpeCogbWF0cml4ID0gU1ZHU1ZHRWxl
bWVudDo6Y3JlYXRlU1ZHTWF0cml4KCk7CisgICAgQWZmaW5lVHJhbnNmb3JtIG1hdHJpeDsKIAog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGZvcih1bnNpZ25lZCBpbnQgaSA9IDA7IGkg
PCBsZW5ndGg7IGkrKykKLSAgICAgICAgbWF0cml4LT5tdWx0aXBseShnZXRJdGVtKGksIGVjKS0+
bWF0cml4KCkpOworICAgICAgICBtYXRyaXggPSBnZXRJdGVtKGksIGVjKS0+bWF0cml4KCkgKiBt
YXRyaXg7CiAKICAgICBvYmotPnNldE1hdHJpeChtYXRyaXgpOwogICAgIHJldHVybiBvYmo7Cklu
ZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtTGlzdC5oCShyZXZpc2lvbiAxODE0OSkKKysr
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFNWR1RyYW5zZm9ybUxp
c3QoKTsKICAgICAgICAgdmlydHVhbCB+U1ZHVHJhbnNmb3JtTGlzdCgpOwogCi0gICAgICAgIFJl
ZlB0cjxTVkdUcmFuc2Zvcm0+IGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgoU1ZHTWF0cml4
KikgY29uc3Q7CisgICAgICAgIFJlZlB0cjxTVkdUcmFuc2Zvcm0+IGNyZWF0ZVNWR1RyYW5zZm9y
bUZyb21NYXRyaXgoY29uc3QgQWZmaW5lVHJhbnNmb3JtJikgY29uc3Q7CiAgICAgICAgIFJlZlB0
cjxTVkdUcmFuc2Zvcm0+IGNvbnNvbGlkYXRlKCk7CiAKICAgICAgICAgLy8gSW50ZXJuYWwgdXNl
IG9ubHkKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwCShyZXZpc2lv
biAxODE0OSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAKICNpbmNsdWRlICJSZWd1bGFyRXhwcmVzc2lv
bi5oIgogI2luY2x1ZGUgIlNWR0hlbHBlci5oIgotI2luY2x1ZGUgIlNWR01hdHJpeC5oIgorI2lu
Y2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVk
ZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3QuaCIKQEAg
LTQxLDE4ICs0MSwxNiBAQCBTVkdUcmFuc2Zvcm1hYmxlOjp+U1ZHVHJhbnNmb3JtYWJsZSgpCiB7
CiB9CiAKLVNWR01hdHJpeCogU1ZHVHJhbnNmb3JtYWJsZTo6Z2V0Q1RNKGNvbnN0IFNWR0VsZW1l
bnQqIGVsZW1lbnQpIGNvbnN0CitBZmZpbmVUcmFuc2Zvcm0gU1ZHVHJhbnNmb3JtYWJsZTo6Z2V0
Q1RNKGNvbnN0IFNWR0VsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7Ci0gICAgU1ZHTWF0cml4KiBj
dG0gPSBTVkdMb2NhdGFibGU6OmdldENUTShlbGVtZW50KTsKLSAgICBjdG0tPm11bHRpcGx5KGxv
Y2FsTWF0cml4KCkpOwotICAgIHJldHVybiBjdG07CisgICAgQWZmaW5lVHJhbnNmb3JtIGN0bSA9
IFNWR0xvY2F0YWJsZTo6Z2V0Q1RNKGVsZW1lbnQpOworICAgIHJldHVybiBsb2NhbE1hdHJpeCgp
ICogY3RtOwogfQogCi1TVkdNYXRyaXgqIFNWR1RyYW5zZm9ybWFibGU6OmdldFNjcmVlbkNUTShj
b25zdCBTVkdFbGVtZW50KiBlbGVtZW50KSBjb25zdAorQWZmaW5lVHJhbnNmb3JtIFNWR1RyYW5z
Zm9ybWFibGU6OmdldFNjcmVlbkNUTShjb25zdCBTVkdFbGVtZW50KiBlbGVtZW50KSBjb25zdAog
ewotICAgIFNWR01hdHJpeCogY3RtID0gU1ZHTG9jYXRhYmxlOjpnZXRTY3JlZW5DVE0oZWxlbWVu
dCk7Ci0gICAgY3RtLT5tdWx0aXBseShsb2NhbE1hdHJpeCgpKTsKLSAgICByZXR1cm4gY3RtOwor
ICAgIEFmZmluZVRyYW5zZm9ybSBjdG0gPSBTVkdMb2NhdGFibGU6OmdldFNjcmVlbkNUTShlbGVt
ZW50KTsKKyAgICByZXR1cm4gbG9jYWxNYXRyaXgoKSAqIGN0bTsKIH0KIAogYm9vbCBTVkdUcmFu
c2Zvcm1hYmxlOjpwYXJzZVRyYW5zZm9ybUF0dHJpYnV0ZShTVkdUcmFuc2Zvcm1MaXN0KiBsaXN0
LCBjb25zdCBBdG9taWNTdHJpbmcmIHRyYW5zZm9ybSkKQEAgLTExMiwxMiArMTEwLDEyIEBAIGJv
b2wgU1ZHVHJhbnNmb3JtYWJsZTo6cGFyc2VUcmFuc2Zvcm1BdHQKICAgICAgICAgZWxzZSBpZiAo
c3VidHJhbnNmb3JtWzBdID09ICJza2V3eSIgJiYgbnBhcmFtcyA9PSAxKQogICAgICAgICAgICAg
dC0+c2V0U2tld1kocGFyYW1zWzBdLnRvRG91YmxlKCkpOwogICAgICAgICBlbHNlIGlmIChzdWJ0
cmFuc2Zvcm1bMF0gPT0gIm1hdHJpeCIgJiYgbnBhcmFtcyA9PSA2KSB7Ci0gICAgICAgICAgICBT
VkdNYXRyaXgqIHJldCA9IG5ldyBTVkdNYXRyaXgocGFyYW1zWzBdLnRvRG91YmxlKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzFdLnRvRG91Ymxl
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzJd
LnRvRG91YmxlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFyYW1zWzNdLnRvRG91YmxlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGFyYW1zWzRdLnRvRG91YmxlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGFyYW1zWzVdLnRvRG91YmxlKCkpOworICAgICAgICAgICAgQWZm
aW5lVHJhbnNmb3JtIHJldChwYXJhbXNbMF0udG9Eb3VibGUoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGFyYW1zWzFdLnRvRG91YmxlKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBhcmFtc1syXS50b0RvdWJsZSgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJhbXNbM10udG9Eb3VibGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGFyYW1zWzRdLnRvRG91YmxlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhcmFtc1s1XS50b0RvdWJsZSgpKTsKICAgICAgICAgICAgIHQtPnNldE1hdHJpeChy
ZXQpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZGVsZXRlIHQ7CkluZGV4OiBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5oCShyZXZpc2lvbiAxODE0OSkKKysrIFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybWFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjks
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogICAgIGNsYXNzIEF0b21pY1N0cmluZzsK
LSAgICBjbGFzcyBTVkdNYXRyaXg7CisgICAgY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogICAgIGNs
YXNzIFNWR1RyYW5zZm9ybUxpc3Q7CiAKICAgICBjbGFzcyBTVkdUcmFuc2Zvcm1hYmxlIDogdmly
dHVhbCBwdWJsaWMgU1ZHTG9jYXRhYmxlIHsKQEAgLTM4LDEzICszOCwxMyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgflNWR1RyYW5zZm9ybWFibGUoKTsKIAogICAgICAg
ICAvLyAnU1ZHVHJhbnNmb3JtYWJsZScgZnVuY3Rpb25zCi0gICAgICAgIHZpcnR1YWwgU1ZHTWF0
cml4KiBsb2NhbE1hdHJpeCgpIGNvbnN0ID0gMDsKKyAgICAgICAgdmlydHVhbCBBZmZpbmVUcmFu
c2Zvcm0gbG9jYWxNYXRyaXgoKSBjb25zdCA9IDA7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUxvY2FsVHJhbnNmb3JtKFNWR1RyYW5zZm9ybUxpc3QqKSA9IDA7CiAKICAgICAgICAgc3Rh
dGljIGJvb2wgcGFyc2VUcmFuc2Zvcm1BdHRyaWJ1dGUoU1ZHVHJhbnNmb3JtTGlzdCosIGNvbnN0
IEF0b21pY1N0cmluZyYgdHJhbnNmb3JtKTsKLSAgICAgICAgU1ZHTWF0cml4KiBnZXRDVE0oY29u
c3QgU1ZHRWxlbWVudCopIGNvbnN0OwotICAgICAgICBTVkdNYXRyaXgqIGdldFNjcmVlbkNUTShj
b25zdCBTVkdFbGVtZW50KikgY29uc3Q7CisgICAgICAgIEFmZmluZVRyYW5zZm9ybSBnZXRDVE0o
Y29uc3QgU1ZHRWxlbWVudCopIGNvbnN0OworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gZ2V0U2Ny
ZWVuQ1RNKGNvbnN0IFNWR0VsZW1lbnQqKSBjb25zdDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11811</attachid>
            <date>2006-12-11 15:55:19 -0800</date>
            <delta_ts>2006-12-11 17:07:19 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>KillSVGMatrix.diff</filename>
            <type>text/plain</type>
            <size>107403</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE4MTYyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDYtMTItMTIgIE5pa29sYXMgWmltbWVybWFu
biAgPHppbW1lcm1hbm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTVkdQb2ludC1tYXRyaXhUcmFuc2Zvcm0gd29ya3MgYWdhaW4gYXMg
ZXhwZWN0ZWQsIG5vdyB0aGF0IFNWR01hdHJpeAorICAgICAgICBpcyBjb252ZXJ0ZWQgdG8gdGhl
IEFmZmluZVRyYW5zZm9ybSBQT0QgdHlwZS4gVXBkYXRpbmcgbGF5b3V0IHRlc3QgcmVzdWx0Lgor
CisgICAgICAgICogc3ZnL2N1c3RvbS9TVkdQb2ludC1tYXRyaXhUcmFuc2Zvcm0tZXhwZWN0ZWQu
dHh0OgorCiAyMDA2LTEyLTExICBOaWtvbGFzIFppbW1lcm1hbm4gIDx6aW1tZXJtYW5uQGtkZS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6IExheW91dFRlc3Rz
L3N2Zy9jdXN0b20vU1ZHUG9pbnQtbWF0cml4VHJhbnNmb3JtLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL1NWR1BvaW50LW1hdHJpeFRyYW5zZm9ybS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDE4MTYyKQorKysgTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9T
VkdQb2ludC1tYXRyaXhUcmFuc2Zvcm0tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
LDYgKzEsNiBAQAogbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgIFJlbmRlclZpZXcgYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCi0gICAgS0NhbnZhc0NvbnRhaW5lciB7c3ZnfSBhdCAoODAsMjQp
IHNpemUgMTU2eDcyCisgICAgS0NhbnZhc0NvbnRhaW5lciB7c3ZnfSBhdCAoODAsMjQpIHNpemUg
MTcyeDcyCiAgICAgICBSZW5kZXJTVkdUZXh0IHt0ZXh0fSBhdCAoMjAsMjApIHNpemUgODAweDE4
Ci0gICAgICAgIFJlbmRlclNWR0lubGluZVRleHQgeyN0ZXh0fSBhdCAoMCwtMTQpIHNpemUgMzl4
MTgKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwtMTQpIHdpZHRoIDM5OiAiRmFpbGVkIgorICAg
ICAgICBSZW5kZXJTVkdJbmxpbmVUZXh0IHsjdGV4dH0gYXQgKDAsLTE0KSBzaXplIDQzeDE4Cisg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsLTE0KSB3aWR0aCA0MzogIlBhc3NlZCIKSW5kZXg6IFdl
YkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lv
biAxODE2MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTczIEBACisyMDA2LTEyLTEyICBOaWtvbGFzIFppbW1lcm1hbm4gIDx6aW1tZXJtYW5uQGtkZS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4
ZXM6IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzk3CisKKyAgICAg
ICAgUmVtb3ZlIFNWR01hdHJpeCwgcmVwbGFjZSBpdCBieSBBZmZpbmVUcmFuc2Zvcm0gdXNhZ2Ug
ZXZlcnl3aGVyZS4KKyAgICAgICAgQ2hhbmdlZCBBZmZpbmVUcmFuc2Zvcm0gQVBJIHRvIGJlIGFi
bGUgdG8gYmUgdXNlZCB3aXRoaW4gZ2VuZXJhdGlvbgorICAgICAgICAobTExKCkgLT4gYSgpLCBt
MTIoKSAtPiBiKCksIC4uLikuIEFkZCBzb21lIG1ldGhvZHMgbmVlZGVkIGZvciBTVkcuCisKKyAg
ICAgICAgVGhlIGFjdHVhbCBTVkdNYXRyaXggLT4gQWZmaW5lVHJhbnNmb3JtYXRpb24gcGF0Y2gg
aGFzIGJlZW4gY3JlYXRlZAorICAgICAgICBieSBSb2IgLSBJIGp1c3QgYWRhcHRlZCBpdCB0byB0
aGUgYXV0b2dlbmVyYXRlZCBQT0Qgc3R5bGUuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTVkdNYXRyaXhDdXN0
b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHTWF0cml4OjppbnZlcnNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHTWF0cml4Ojpyb3RhdGVGcm9tVmVjdG9yKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9vYmpjL0RPTUludGVybmFsLmg6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yT2JqQy5wbToKKyAgICAgICAgKiBrc3ZnMi9taXNjL0tTVkdUaW1lU2NoZWR1bGVy
LmNwcDoKKyAgICAgICAgKiBrc3ZnMi9taXNjL1NWR0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAg
KiBrc3ZnMi9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmhhbmRsZVRpbWVyRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmNhbGN1bGF0ZVJvdGF0
aW9uRnJvbU1hdHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlVHJhbnNmb3JtRWxl
bWVudDo6aW5pdGlhbE1hdHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlVHJhbnNm
b3JtRWxlbWVudDo6dHJhbnNmb3JtTWF0cml4KToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQW5p
bWF0ZVRyYW5zZm9ybUVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQ2xpcFBhdGhF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6Y2FudmFz
UmVzb3VyY2UpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRml0VG9WaWV3Qm94Ojp2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKToK
KyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRml0VG9WaWV3Qm94Lmg6CisgICAgICAgICoga3N2ZzIv
c3ZnL1NWR0xlbmd0aExpc3QuY3BwOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdMaW5lYXJHcmFk
aWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZWFyR3JhZGllbnRFbGVt
ZW50OjpidWlsZEdyYWRpZW50KToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTG9jYXRhYmxlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xvY2F0YWJsZTo6Z2V0Q1RNKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0xvY2F0YWJsZTo6Z2V0U2NyZWVuQ1RNKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0xvY2F0YWJsZTo6Z2V0VHJhbnNmb3JtVG9FbGVtZW50KToKKyAgICAgICAgKiBrc3ZnMi9zdmcv
U1ZHTG9jYXRhYmxlLmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3Bw
OgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdNYXRyaXguY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IGtzdmcyL3N2Zy9TVkdNYXRyaXguaDogUmVtb3ZlZC4KKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZH
TWF0cml4LmlkbDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTnVtYmVyTGlzdC5jcHA6CisgICAg
ICAgICoga3N2ZzIvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1BhdHRlcm5FbGVtZW50Ojpub3RpZnlBdHRyaWJ1dGVDaGFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OmdldENUTSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NW
R1BhdHRlcm5FbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1BvaW50LmlkbDoKKyAg
ICAgICAgKiBrc3ZnMi9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpnZXRDVE0pOgorICAgICAgICAqIGtzdmcy
L3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1Jh
ZGlhbEdyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQ6OmJ1aWxkR3JhZGllbnQpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdTVkdF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnZpZXdwb3J0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR01hdHJpeCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmdldENUTSk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpnZXRTY3JlZW5DVE0pOgorICAgICAgICAqIGtzdmcyL3N2
Zy9TVkdTVkdFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQu
Y3BwOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQ6OmdldENUTSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50OjpnZXRTY3JlZW5DVE0p
OgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50Lmg6CisgICAg
ICAgICoga3N2ZzIvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojpsb2NhbE1hdHJpeCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6Z2V0Q1RN
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpnZXRT
Y3JlZW5DVE0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQ6OnVwZGF0ZUxvY2FsVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZFRy
YW5zZm9ybWFibGVFbGVtZW50OjphdHRhY2gpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdUZXh0RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0RWxlbWVudDo6bG9jYWxNYXRyaXgp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dEVsZW1lbnQ6OnVwZGF0ZUxvY2FsVHJhbnNmb3Jt
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRFbGVtZW50OjphdHRhY2gpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVGV4dEVsZW1lbnQ6OmdldFNjcmVlbkNUTSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdUZXh0RWxlbWVudDo6Z2V0Q1RNKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHVGV4dEVs
ZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtLmNwcDoKKyAgICAgICAg
KFNWR1RyYW5zZm9ybTo6U1ZHVHJhbnNmb3JtKToKKyAgICAgICAgKFNWR1RyYW5zZm9ybTo6bWF0
cml4KToKKyAgICAgICAgKFNWR1RyYW5zZm9ybTo6c2V0TWF0cml4KToKKyAgICAgICAgKFNWR1Ry
YW5zZm9ybTo6c2V0VHJhbnNsYXRlKToKKyAgICAgICAgKFNWR1RyYW5zZm9ybTo6c2V0U2NhbGUp
OgorICAgICAgICAoU1ZHVHJhbnNmb3JtOjpzZXRSb3RhdGUpOgorICAgICAgICAoU1ZHVHJhbnNm
b3JtOjpzZXRTa2V3WCk6CisgICAgICAgIChTVkdUcmFuc2Zvcm06OnNldFNrZXdZKToKKyAgICAg
ICAgKiBrc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtLmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1Ry
YW5zZm9ybUxpc3QuY3BwOgorICAgICAgICAoU1ZHVHJhbnNmb3JtTGlzdDo6Y3JlYXRlU1ZHVHJh
bnNmb3JtRnJvbU1hdHJpeCk6CisgICAgICAgIChTVkdUcmFuc2Zvcm1MaXN0Ojpjb25jYXRlbmF0
ZSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuaDoKKyAgICAgICAgKiBr
c3ZnMi9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFu
c2Zvcm1hYmxlOjpnZXRDVE0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtYWJsZTo6
Z2V0U2NyZWVuQ1RNKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybWFibGU6OnBhcnNl
VHJhbnNmb3JtQXR0cmlidXRlKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtYWJs
ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0FmZmluZVRyYW5zZm9ybS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06Om11bHRpcGx5KToKKyAgICAgICAgKFdl
YkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6c2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5l
VHJhbnNmb3JtOjpzY2FsZU5vblVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJh
bnNmb3JtOjpyb3RhdGVGcm9tVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5z
Zm9ybTo6ZmxpcFgpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjpmbGlwWSk6
CisgICAgICAgIChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06OnNrZXdYKToKKyAgICAgICAgKFdl
YkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6c2tld1kpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0FmZmluZVRyYW5zZm9ybS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0FmZmluZVRyYW5zZm9ybUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5z
Zm9ybTo6YSk6CisgICAgICAgIChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06OnNldEEpOgorICAg
ICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjpiKToKKyAgICAgICAgKFdlYkNvcmU6OkFm
ZmluZVRyYW5zZm9ybTo6c2V0Qik6CisgICAgICAgIChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06
OmMpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjpzZXRDKToKKyAgICAgICAg
KFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6ZCk6CisgICAgICAgIChXZWJDb3JlOjpBZmZpbmVU
cmFuc2Zvcm06OnNldEQpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjplKToK
KyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6c2V0RSk6CisgICAgICAgIChXZWJD
b3JlOjpBZmZpbmVUcmFuc2Zvcm06OmYpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNm
b3JtOjpzZXRGKToKKyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6aW52ZXJzZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQWZmaW5lVHJhbnNmb3JtQ0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjphKToKKyAgICAgICAgKFdlYkNvcmU6
OkFmZmluZVRyYW5zZm9ybTo6c2V0QSk6CisgICAgICAgIChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zv
cm06OmIpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjpzZXRCKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6Yyk6CisgICAgICAgIChXZWJDb3JlOjpBZmZp
bmVUcmFuc2Zvcm06OnNldEMpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjpk
KToKKyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6c2V0RCk6CisgICAgICAgIChX
ZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06OmUpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJh
bnNmb3JtOjpzZXRFKToKKyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6Zik6Cisg
ICAgICAgIChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06OnNldEYpOgorICAgICAgICAoV2ViQ29y
ZTo6QWZmaW5lVHJhbnNmb3JtOjppbnZlcnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9xdC9BZmZpbmVUcmFuc2Zvcm1RdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBZmZpbmVUcmFu
c2Zvcm06OmEpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjpzZXRBKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6Yik6CisgICAgICAgIChXZWJDb3JlOjpB
ZmZpbmVUcmFuc2Zvcm06OnNldEIpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3Jt
OjpjKToKKyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6c2V0Qyk6CisgICAgICAg
IChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06OmQpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5l
VHJhbnNmb3JtOjpzZXREKToKKyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06OnNldEUpOgorICAgICAgICAoV2Vi
Q29yZTo6QWZmaW5lVHJhbnNmb3JtOjpmKToKKyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5z
Zm9ybTo6c2V0Rik6CisgICAgICAgIChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06OmludmVyc2Up
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckZvcmVpZ25PYmplY3Q6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckZvcmVpZ25PYmplY3Q6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyUGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJQYXRoOjptYXBBYnNvbHV0
ZVBvaW50VG9Mb2NhbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpwYWludCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdJbWFnZTo6bm9kZUF0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJTVkdUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OmNvbXB1
dGVBYnNvbHV0ZVJlcGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6
Om5vZGVBdFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OnBhaW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvU1ZHSW5saW5lRmxvd0JveC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpwYWludFNWR0lubGluZUZsb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9TVkdSZW5kZXJU
cmVlQXNUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorCiAyMDA2LTEy
LTExICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggZmFpbGlu
ZyBsYXlvdXQgdGVzdC4gIFJlbW92ZSBXVEY6OlVuaWNvZGU6OmlzU3BhY2UgYW5kIGp1c3QgcmV2
ZXJ0CkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMTgxNjIpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMTk1Niw4ICsxOTU2LDYgQEAKIAkJQTg4QUQ0OUYwOTUyNDhG
MDAwMUREMTk2IC8qIFNWR0xvY2F0YWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQThDMEY4ODEwODk3MDFGMzAwQkE1MTE0IC8qIFNWR0xvY2F0YWJs
ZS5oICovOyB9OwogCQlBODhBRDRBMDA5NTI0OEYwMDAxREQxOTYgLyogU1ZHTWFya2VyRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEMw
Rjg4MjA4OTcwMUYzMDBCQTUxMTQgLyogU1ZHTWFya2VyRWxlbWVudC5jcHAgKi87IH07CiAJCUE4
OEFENEExMDk1MjQ4RjAwMDFERDE5NiAvKiBTVkdNYXJrZXJFbGVtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEMwRjg4MzA4OTcwMUYzMDBCQTUx
MTQgLyogU1ZHTWFya2VyRWxlbWVudC5oICovOyB9OwotCQlBODhBRDRBMjA5NTI0OEYwMDAxREQx
OTYgLyogU1ZHTWF0cml4LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE4QzBGODg0MDg5NzAxRjMwMEJBNTExNCAvKiBTVkdNYXRyaXguY3BwICovOyB9
OwotCQlBODhBRDRBMzA5NTI0OEYwMDAxREQxOTYgLyogU1ZHTWF0cml4LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEMwRjg4NTA4OTcwMUYzMDBCQTUx
MTQgLyogU1ZHTWF0cml4LmggKi87IH07CiAJCUE4OEFENEE2MDk1MjQ4RjAwMDFERDE5NiAvKiBT
VkdOdW1iZXJMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE4QzBGODg4MDg5NzAxRjMwMEJBNTExNCAvKiBTVkdOdW1iZXJMaXN0LmNwcCAqLzsg
fTsKIAkJQTg4QUQ0QTcwOTUyNDhGMDAwMUREMTk2IC8qIFNWR051bWJlckxpc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzBGODg5MDg5NzAxRjMw
MEJBNTExNCAvKiBTVkdOdW1iZXJMaXN0LmggKi87IH07CiAJCUE4OEFENEE4MDk1MjQ4RjAwMDFE
RDE5NiAvKiBTVkdQYWludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBOEMwRjg4QTA4OTcwMUYzMDBCQTUxMTQgLyogU1ZHUGFpbnQuY3BwICovOyB9
OwpAQCAtMjIyOSw2ICsyMjI3LDcgQEAKIAkJQjIzMTBCNzYwQjFGNDZBMjAwRDU1RDg3IC8qIENn
U3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMjMxMEI3MzBCMUY0NkEyMDBENTVEODcgLyogQ2dTdXBwb3J0LmNwcCAqLzsgfTsKIAkJQjIz
MTBCNzcwQjFGNDZBMjAwRDU1RDg3IC8qIENnU3VwcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIzMTBCNzQwQjFGNDZBMjAwRDU1RDg3IC8qIENn
U3VwcG9ydC5oICovOyB9OwogCQlCMjMxMEI3ODBCMUY0NkEzMDBENTVEODcgLyogUmVuZGVyUGF0
aENnLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIy
MzEwQjc1MEIxRjQ2QTIwMEQ1NUQ4NyAvKiBSZW5kZXJQYXRoQ2cuY3BwICovOyB9OworCQlCMjRF
QkM1RDBCMkUxNzcxMDA0ODU4RTggLyogSlNTVkdNYXRyaXhDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI0RUJDNUMwQjJFMTc3MTAwNDg1
OEU4IC8qIEpTU1ZHTWF0cml4Q3VzdG9tLmNwcCAqLzsgfTsKIAkJQjI3NTM1NTYwQjA1MzgxNDAw
MkNFNjRGIC8qIEFmZmluZVRyYW5zZm9ybS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUyNzBCMDUzODE0MDAyQ0U2NEYgLyogQWZmaW5lVHJh
bnNmb3JtLmNwcCAqLzsgfTsKIAkJQjI3NTM1NTcwQjA1MzgxNDAwMkNFNjRGIC8qIEFmZmluZVRy
YW5zZm9ybS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjI3NTM1MjgwQjA1MzgxNDAwMkNFNjRGIC8qIEFmZmluZVRyYW5zZm9ybS5oICovOyB9OwogCQlC
Mjc1MzU1ODBCMDUzODE0MDAyQ0U2NEYgLyogQWZmaW5lVHJhbnNmb3JtQ0cuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MkEwQjA1MzgxNDAw
MkNFNjRGIC8qIEFmZmluZVRyYW5zZm9ybUNHLmNwcCAqLzsgfTsKQEAgLTQ5MDQsOCArNDkwMyw2
IEBACiAJCUE4QzBGODgxMDg5NzAxRjMwMEJBNTExNCAvKiBTVkdMb2NhdGFibGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdMb2NhdGFibGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07
CiAJCUE4QzBGODgyMDg5NzAxRjMwMEJBNTExNCAvKiBTVkdNYXJrZXJFbGVtZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHTWFy
a2VyRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNl
c1RhYnMgPSAwOyB9OwogCQlBOEMwRjg4MzA4OTcwMUYzMDBCQTUxMTQgLyogU1ZHTWFya2VyRWxl
bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGlu
ZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNWR01hcmtlckVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4
OyB1c2VzVGFicyA9IDA7IH07Ci0JCUE4QzBGODg0MDg5NzAxRjMwMEJBNTExNCAvKiBTVkdNYXRy
aXguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGlu
ZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTVkdNYXRyaXguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IHVzZXNUYWJzID0gMDsgfTsKLQkJQThDMEY4ODUwODk3MDFGMzAwQkE1MTE0IC8qIFNWR01hdHJp
eC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNW
R01hdHJpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJz
ID0gMDsgfTsKIAkJQThDMEY4ODgwODk3MDFGMzAwQkE1MTE0IC8qIFNWR051bWJlckxpc3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
VkdOdW1iZXJMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1
c2VzVGFicyA9IDA7IH07CiAJCUE4QzBGODg5MDg5NzAxRjMwMEJBNTExNCAvKiBTVkdOdW1iZXJM
aXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5k
ZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U1ZHTnVtYmVyTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVz
ZXNUYWJzID0gMDsgfTsKIAkJQThDMEY4OEEwODk3MDFGMzAwQkE1MTE0IC8qIFNWR1BhaW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U1ZHUGFpbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNU
YWJzID0gMDsgfTsKQEAgLTUxODgsNiArNTE4NSw3IEBACiAJCUIyMzEwQjczMEIxRjQ2QTIwMEQ1
NUQ4NyAvKiBDZ1N1cHBvcnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENnU3VwcG9ydC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMzEwQjc0
MEIxRjQ2QTIwMEQ1NUQ4NyAvKiBDZ1N1cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENnU3VwcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjMx
MEI3NTBCMUY0NkEyMDBENTVEODcgLyogUmVuZGVyUGF0aENnLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJQYXRoQ2cuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlCMjRFQkM1QzBCMkUxNzcxMDA0ODU4RTggLyogSlNTVkdNYXRyaXhDdXN0
b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHTWF0cml4
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1MjcwQjA1Mzgx
NDAwMkNFNjRGIC8qIEFmZmluZVRyYW5zZm9ybS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQWZmaW5lVHJhbnNmb3JtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjI3NTM1MjgwQjA1MzgxNDAwMkNFNjRGIC8qIEFmZmluZVRyYW5zZm9ybS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWZmaW5lVHJhbnNmb3JtLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTJBMEIwNTM4MTQwMDJDRTY0RiAvKiBBZmZp
bmVUcmFuc2Zvcm1DRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QWZmaW5lVHJhbnNmb3JtQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODI0
NCw4ICs4MjQyLDYgQEAKIAkJCQlBOEMwRjg4MzA4OTcwMUYzMDBCQTUxMTQgLyogU1ZHTWFya2Vy
RWxlbWVudC5oICovLAogCQkJCUE4MTY1NUUyMDk2QkMxMzkwMDYwMTA1OCAvKiBTVkdNYXNrRWxl
bWVudC5jcHAgKi8sCiAJCQkJQTgxNjU1RTMwOTZCQzEzOTAwNjAxMDU4IC8qIFNWR01hc2tFbGVt
ZW50LmggKi8sCi0JCQkJQThDMEY4ODQwODk3MDFGMzAwQkE1MTE0IC8qIFNWR01hdHJpeC5jcHAg
Ki8sCi0JCQkJQThDMEY4ODUwODk3MDFGMzAwQkE1MTE0IC8qIFNWR01hdHJpeC5oICovLAogCQkJ
CUE4MzNCRUREMEEyQzM0NEIwMEQ1NzY2NCAvKiBTVkdNYXRyaXguaWRsICovLAogCQkJCUE4MzNC
RUEyMEEyQzMyOTMwMEQ1NzY2NCAvKiBTVkdOdW1iZXIuaWRsICovLAogCQkJCUE4QzBGODg4MDg5
NzAxRjMwMEJBNTExNCAvKiBTVkdOdW1iZXJMaXN0LmNwcCAqLywKQEAgLTg2NTEsNiArODY0Nyw3
IEBACiAJCQkJMUE3NTBERDMwQTkwRTcyOTAwMEZGMjE1IC8qIEpTTm9kZUl0ZXJhdG9yQ3VzdG9t
LmNwcCAqLywKIAkJCQk4NTc0RDFGMTBBREU2MTIyMDA0Q0JBMTEgLyogSlNTVkdFbGVtZW50V3Jh
cHBlckZhY3RvcnkuY3BwICovLAogCQkJCTg1NzREMUYyMEFERTYxMjIwMDRDQkExMSAvKiBKU1NW
R0VsZW1lbnRXcmFwcGVyRmFjdG9yeS5oICovLAorCQkJCUIyNEVCQzVDMEIyRTE3NzEwMDQ4NThF
OCAvKiBKU1NWR01hdHJpeEN1c3RvbS5jcHAgKi8sCiAJCQkJMUE3NTBFMzMwQTkwRjg5RjAwMEZG
MjE1IC8qIEpTVHJlZVdhbGtlckN1c3RvbS5jcHAgKi8sCiAJCQkJOTNCNzBENDEwOUVCMEM3QzAw
OUQ4NDY4IC8qIEpTWE1MSHR0cFJlcXVlc3QuY3BwICovLAogCQkJCTkzQjcwRDQyMDlFQjBDN0Mw
MDlEODQ2OCAvKiBKU1hNTEh0dHBSZXF1ZXN0LmggKi8sCkBAIC05NTExLDcgKzk1MDgsNiBAQAog
CQkJCUE4OEFENDlEMDk1MjQ4RjAwMDFERDE5NiAvKiBTVkdMaXN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBODhBRDQ5RjA5NTI0OEYwMDAxREQxOTYgLyogU1ZHTG9jYXRhYmxlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBODhBRDRBMTA5NTI0OEYwMDAxREQxOTYgLyogU1ZHTWFya2VyRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJQTg4QUQ0QTMwOTUyNDhGMDAwMUREMTk2IC8qIFNWR01hdHJp
eC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg4QUQ0QTcwOTUyNDhGMDAwMUREMTk2IC8qIFNWR051
bWJlckxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4OEFENEE5MDk1MjQ4RjAwMDFERDE5NiAv
KiBTVkdQYWludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg4QUQ0QUIwOTUyNDhGMDAwMUREMTk2
IC8qIFNWR1BhdGhFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTExMDkwLDcgKzExMDg2LDYg
QEAKIAkJCQlBODhBRDQ5QjA5NTI0OEYwMDAxREQxOTYgLyogU1ZHTGluZUVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTg4QUQ0OUUwOTUyNDhGMDAwMUREMTk2IC8qIFNWR0xvY2F0YWJs
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODhBRDRBMDA5NTI0OEYwMDAxREQxOTYgLyogU1ZH
TWFya2VyRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBODhBRDRBMjA5NTI0OEYwMDAx
REQxOTYgLyogU1ZHTWF0cml4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4OEFENEE2MDk1MjQ4
RjAwMDFERDE5NiAvKiBTVkdOdW1iZXJMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4OEFE
NEE4MDk1MjQ4RjAwMDFERDE5NiAvKiBTVkdQYWludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
ODhBRDRBQTA5NTI0OEYwMDAxREQxOTYgLyogU1ZHUGF0aEVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC0xMjE0OCw2ICsxMjE0Myw3IEBACiAJCQkJRTFEOEUzMUEwQjI5RTNCNjAwRjRCQUY2
IC8qIEhUVFBQYXJzZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMThDNUQxMEIyQTg4NkYw
MDE4NDYxRCAvKiBUZXh0QnJlYWtJdGVyYXRvcklDVS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
QTRDM0E3NjBCMkIxNjc5MDAyMzM0QTIgLyogU3R5bGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUIyNEVCQzVEMEIyRTE3NzEwMDQ4NThFOCAvKiBKU1NWR01hdHJpeEN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdNYXRyaXhDdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdNYXRyaXhDdXN0
b20uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR01hdHJpeEN1
c3RvbS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUg
MzMwLAorICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkpTU1ZHTWF0cml4LmgiCisKKyNpbmNsdWRlICJBZmZpbmVUcmFu
c2Zvcm0uaCIKKyNpbmNsdWRlICJTVkdFeGNlcHRpb24uaCIKKwordXNpbmcgbmFtZXNwYWNlIEtK
UzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitKU1ZhbHVlKiBKU1NWR01hdHJpeDo6aW52ZXJz
ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IExpc3QmKQoreworICAgIEFmZmluZVRyYW5zZm9ybSYg
aW1wKGltcGwoKSk7CisgICAgS0pTOjpKU1ZhbHVlKiByZXN1bHQgPSB0b0pTKGV4ZWMsIGltcC5p
bnZlcnNlKCkpOworCisgICAgaWYgKCFpbXAuaXNJbnZlcnRpYmxlKCkpCisgICAgICAgIHNldERP
TUV4Y2VwdGlvbihleGVjLCBTVkdfTUFUUklYX05PVF9JTlZFUlRBQkxFKTsKKworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK0pTVmFsdWUqIEpTU1ZHTWF0cml4Ojpyb3RhdGVGcm9tVmVjdG9yKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgTGlzdCYgYXJncykKK3sKKyAgICBBZmZpbmVUcmFuc2Zvcm0m
IGltcChpbXBsKCkpOworIAorICAgIGZsb2F0IHggPSBhcmdzWzBdLT50b051bWJlcihleGVjKTsK
KyAgICBmbG9hdCB5ID0gYXJnc1sxXS0+dG9OdW1iZXIoZXhlYyk7CisKKyAgICBLSlM6OkpTVmFs
dWUqIHJlc3VsdCA9IHRvSlMoZXhlYywgaW1wLnJvdGF0ZUZyb21WZWN0b3IoeCwgeSkpOworCisg
ICAgaWYgKHggPT0gMC4wIHx8IHkgPT0gMC4wKQorICAgICAgICBzZXRET01FeGNlcHRpb24oZXhl
YywgU1ZHX0lOVkFMSURfVkFMVUVfRVJSKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisgICAg
Cit9CisKKy8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01J
bnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01JbnRlcm5h
bC5oCShyZXZpc2lvbiAxODE2MikKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01JbnRlcm5h
bC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMiArMzEsNiBAQAogI2ltcG9ydCAiRE9NT2JqZWN0
LmgiCiAjaW1wb3J0ICJET01SR0JDb2xvci5oIgogCi0jaWZkZWYgU1ZHX1NVUFBPUlQKLSNpbXBv
cnQgIkRPTVNWR051bWJlci5oIgotI2ltcG9ydCAiRE9NU1ZHUG9pbnQuaCIKLSNpbXBvcnQgIkRP
TVNWR1JlY3QuaCIKLSNlbmRpZiAvLyBTVkdfU1VQUE9SVAotCiAjaWZkZWYgWFBBVEhfU1VQUE9S
VAogI2ltcG9ydCAiRE9NWFBhdGhOU1Jlc29sdmVyLmgiCiAjZW5kaWYgLy8gWFBBVEhfU1VQUE9S
VApAQCAtMjEyLDYgKzIwNiw3IEBACiAjaW1wb3J0ICJET01TVkdNYXNrRWxlbWVudEludGVybmFs
LmgiCiAjaW1wb3J0ICJET01TVkdNYXRyaXhJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NU1ZHTWV0
YWRhdGFFbGVtZW50SW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTVNWR051bWJlckludGVybmFsLmgi
CiAjaW1wb3J0ICJET01TVkdOdW1iZXJMaXN0SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVNWR1Bh
aW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVNWR1BhdGhFbGVtZW50SW50ZXJuYWwuaCIKQEAg
LTIzNywxMiArMjMyLDE0IEBACiAjaW1wb3J0ICJET01TVkdQYXRoU2VnTW92ZXRvQWJzSW50ZXJu
YWwuaCIKICNpbXBvcnQgIkRPTVNWR1BhdGhTZWdNb3ZldG9SZWxJbnRlcm5hbC5oIgogI2ltcG9y
dCAiRE9NU1ZHUGF0dGVybkVsZW1lbnRJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NU1ZHUG9pbnRJ
bnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NU1ZHUG9pbnRMaXN0SW50ZXJuYWwuaCIKICNpbXBvcnQg
IkRPTVNWR1BvbHlnb25FbGVtZW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVNWR1BvbHlsaW5l
RWxlbWVudEludGVybmFsLmgiCiAjaW1wb3J0ICJET01TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvSW50
ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVNWR1JhZGlhbEdyYWRpZW50RWxlbWVudEludGVybmFsLmgi
CiAjaW1wb3J0ICJET01TVkdSZWN0RWxlbWVudEludGVybmFsLmgiCisjaW1wb3J0ICJET01TVkdS
ZWN0SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVNWR1JlbmRlcmluZ0ludGVudEludGVybmFsLmgi
CiAjaW1wb3J0ICJET01TVkdTVkdFbGVtZW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVNWR1Nj
cmlwdEVsZW1lbnRJbnRlcm5hbC5oIgpAQCAtMjc1LDYgKzI3Miw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBjbGFzcyBOb2RlRmlsdGVyOwogCiAjaWZkZWYgU1ZHX1NVUFBPUlQKKyAgICBj
bGFzcyBBZmZpbmVUcmFuc2Zvcm07CiAgICAgY2xhc3MgRmxvYXRQb2ludDsKICAgICBjbGFzcyBG
bG9hdFJlY3Q7CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKQEAgLTMwNCwyNyArMzAyLDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogQGVuZAogCiAKLSNpZmRlZiBTVkdfU1VQUE9SVAotLy8gU1ZHIElu
dGVybmFsIEludGVyZmFjZXMKLQotQGludGVyZmFjZSBET01TVkdOdW1iZXIgKFdlYkNvcmVJbnRl
cm5hbCkKLSsgKERPTVNWR051bWJlciAqKV9TVkdOdW1iZXJXaXRoOihmbG9hdCl2YWx1ZTsKLS0g
KGZsb2F0KV9TVkdOdW1iZXI7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NU1ZHUG9pbnQgKFdlYkNv
cmVJbnRlcm5hbCkKLSsgKERPTVNWR1BvaW50ICopX1NWR1BvaW50V2l0aDooV2ViQ29yZTo6Rmxv
YXRQb2ludClpbXBsOwotLSAoV2ViQ29yZTo6RmxvYXRQb2ludClfU1ZHUG9pbnQ7Ci1AZW5kCi0K
LUBpbnRlcmZhY2UgRE9NU1ZHUmVjdCAoV2ViQ29yZUludGVybmFsKQotKyAoRE9NU1ZHUmVjdCAq
KV9TVkdSZWN0V2l0aDooV2ViQ29yZTo6RmxvYXRSZWN0KWltcGw7Ci0tIChXZWJDb3JlOjpGbG9h
dFJlY3QpX1NWR1JlY3Q7Ci1AZW5kCi0KLSNlbmRpZiAvLyBTVkdfU1VQUE9SVAotCi0KICNpZmRl
ZiBYUEFUSF9TVVBQT1JUCiAvLyBYUGF0aCBJbnRlcm5hbCBJbnRlcmZhY2VzCiAKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMTgx
NjIpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDcgKzEsNSBAQAogIwotIyBLRE9NIElETCBwYXJzZXIKLSMKLSMgQ29w
eXJpZ2h0IChDKSAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorIyBD
b3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtk
ZS5vcmc+CiAjIENvcHlyaWdodCAoQykgMjAwNiBBbmRlcnMgQ2FybHNzb24gPGFuZGVyc2NhQG1h
Yy5jb20+CiAjIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdt
YWlsLmNvbT4KICMgQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgPGFwQHdl
YmtpdC5vcmc+CkBAIC0xNTUsOCArMTUzLDggQEAgc3ViIEF2b2lkSW5jbHVzaW9uT2ZUeXBlCiB7
CiAgICAgbXkgJHR5cGUgPSBzaGlmdDsKIAotICAgICMgU3BlY2lhbCBjYXNlOiBTVkdSZWN0Lmgg
LyBTVkdQb2ludC5oIC8gU1ZHTnVtYmVyLmggZG8gbm90IGV4aXN0LgotICAgIHJldHVybiAxIGlm
ICR0eXBlIGVxICJTVkdSZWN0IiBvciAkdHlwZSBlcSAiU1ZHUG9pbnQiIG9yICR0eXBlIGVxICJT
VkdOdW1iZXIiOworICAgICMgU3BlY2lhbCBjYXNlOiBTVkdSZWN0LmggLyBTVkdQb2ludC5oIC8g
U1ZHTnVtYmVyLmggLyBTVkdNYXRyaXguaCBkbyBub3QgZXhpc3QuCisgICAgcmV0dXJuIDEgaWYg
JHR5cGUgZXEgIlNWR1JlY3QiIG9yICR0eXBlIGVxICJTVkdQb2ludCIgb3IgJHR5cGUgZXEgIlNW
R051bWJlciIgb3IgJHR5cGUgZXEgIlNWR01hdHJpeCI7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAg
LTEwNzYsNyArMTA3NCw4IEBAIHN1YiBHZXROYXRpdmVUeXBlCiAgICAgcmV0dXJuICJFdmVudFRh
cmdldE5vZGUqIiBpZiAkdHlwZSBlcSAiRXZlbnRUYXJnZXQiOwogICAgIHJldHVybiAiRmxvYXRS
ZWN0IiBpZiAkdHlwZSBlcSAiU1ZHUmVjdCI7CiAgICAgcmV0dXJuICJGbG9hdFBvaW50IiBpZiAk
dHlwZSBlcSAiU1ZHUG9pbnQiOwotICAgIHJldHVybiAiZG91YmxlIiBpZiAkdHlwZSBlcSAiU1ZH
TnVtYmVyIjsKKyAgICByZXR1cm4gIkFmZmluZVRyYW5zZm9ybSIgaWYgJHR5cGUgZXEgIlNWR01h
dHJpeCI7CisgICAgcmV0dXJuICJmbG9hdCIgaWYgJHR5cGUgZXEgIlNWR051bWJlciI7CiAgICAg
cmV0dXJuICJTVkdQYWludDo6U1ZHUGFpbnRUeXBlIiBpZiAkdHlwZSBlcSAiU1ZHUGFpbnRUeXBl
IjsKIAogICAgICMgRGVmYXVsdCwgYXNzdW1lIG5hdGl2ZSB0eXBlIGlzIGEgcG9pbnRlciB3aXRo
IHNhbWUgdHlwZSBuYW1lIGFzIGlkbCB0eXBlCkBAIC0xMjI0LDcgKzEyMjMsNyBAQCBzdWIgTmF0
aXZlVG9KU1ZhbHVlCiAgICAgICAgIHJldHVybiAiZ2V0RE9NUkdCQ29sb3IoZXhlYywgJHZhbHVl
KSI7CiAgICAgfQogCi0gICAgaWYgKCR0eXBlIGVxICJTVkdSZWN0IiBvciAkdHlwZSBlcSAiU1ZH
UG9pbnQiIG9yICR0eXBlIGVxICJTVkdOdW1iZXIiKSB7CisgICAgaWYgKCR0eXBlIGVxICJTVkdS
ZWN0IiBvciAkdHlwZSBlcSAiU1ZHUG9pbnQiIG9yICR0eXBlIGVxICJTVkdOdW1iZXIiIG9yICR0
eXBlIGVxICJTVkdNYXRyaXgiKSB7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTJHR5cGUuaCJ9
ID0gMTsKICAgICAgICAgcmV0dXJuICJ0b0pTKGV4ZWMsICR2YWx1ZSkiOwogICAgIH0KSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0JKHJldmlz
aW9uIDE4MTYyKQorKysgV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpD
LnBtCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogIyAKLSMgQ29weXJpZ2h0IChDKSAy
MDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorIyBDb3B5cmlnaHQgKEMp
IDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAjIENv
cHlyaWdodCAoQykgMjAwNiBBbmRlcnMgQ2FybHNzb24gPGFuZGVyc2NhQG1hYy5jb20+IAogIyBD
b3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAj
IENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IDxhcEB3ZWJraXQub3JnPgpA
QCAtNTI3LDYgKzUyNywxMyBAQCBzdWIgQWRkSW5jbHVkZXNGb3JUeXBlCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKKyAgICBpZiAoJHR5cGUgZXEgIlNWR01hdHJpeCIpIHsKKyAgICAgICAgJGlt
cGxJbmNsdWRlc3siQWZmaW5lVHJhbnNmb3JtLmgifSA9IDE7CisgICAgICAgICRpbXBsSW5jbHVk
ZXN7IkRPTSR0eXBlLmgifSA9IDE7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IlNWR0V4Y2VwdGlv
bi5oIn0gPSAxOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKCR0eXBlIGVxICJT
VkdOdW1iZXIiKSB7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IkRPTSR0eXBlLmgifSA9IDE7CiAg
ICAgICAgIHJldHVybjsKQEAgLTk5MCw3ICs5OTcsMTEgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudFRhaWwgLj0gIildIjsKICAgICAg
ICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkNvbnZlcnRGcm9tU3RyaW5nIn0pIHsKICAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVu
dFRhaWwgLj0gIi50b0ludCgpIjsKLSAgICAgICAgICAgIH0gZWxzaWYgKCRpZGxUeXBlIGVxICJS
R0JDb2xvciIgb3IgJGlkbFR5cGUgZXEgIlNWR1BvaW50IiBvciAkaWRsVHlwZSBlcSAiU1ZHUmVj
dCIgb3IgJGlkbFR5cGUgZXEgIlNWR051bWJlciIpIHsKKyAgICAgICAgICAgIH0gZWxzaWYgKCRp
ZGxUeXBlIGVxICJSR0JDb2xvciIgb3IKKyAgICAgICAgICAgICAgICAgICAgICRpZGxUeXBlIGVx
ICJTVkdQb2ludCIgb3IKKyAgICAgICAgICAgICAgICAgICAgICRpZGxUeXBlIGVxICJTVkdSZWN0
IiBvcgorICAgICAgICAgICAgICAgICAgICAgJGlkbFR5cGUgZXEgIlNWR051bWJlciIgb3IKKyAg
ICAgICAgICAgICAgICAgICAgICRpZGxUeXBlIGVxICJTVkdNYXRyaXgiKSB7ICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudEhlYWQgPSAiWyRhdHRyaWJ1dGVUeXBlU2Fu
c1B0ciAkdHlwZU1ha2VyOiIgLiAkZ2V0dGVyQ29udGVudEhlYWQ7CiAgICAgICAgICAgICAgICAg
JGdldHRlckNvbnRlbnRUYWlsIC49ICJdIjsKICAgICAgICAgICAgIH0gZWxzaWYgKCR0eXBlTWFr
ZXIgbmUgIiIpIHsKQEAgLTEwNTAsOCArMTA2MSw4IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVCgk
YXJnTmFtZSk7XG5cbiIpOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICMg
U3BlY2lhbCBjYXNlIGZvciBET01TVkdOdW1iZXIKICAgICAgICAgICAgICAgICBpZiAoJHBvZFR5
cGUpIHsKKyAgICAgICAgICAgICAgICAgICAgIyBTcGVjaWFsIGNhc2UgZm9yIERPTVNWR051bWJl
cgogICAgICAgICAgICAgICAgICAgICBpZiAoJHBvZFR5cGUgZXEgImZsb2F0IikgewogICAgICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgKklNUEwgPSAkYXJnO1xu
Iik7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0xMTIwLDggKzExMzEsNiBAQCBz
dWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJJbmRl
eCsrOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBwdXNoKEBwYXJhbWV0ZXJOYW1lcywg
ImVjIikgaWYgJHJhaXNlc0V4Y2VwdGlvbnM7Ci0KICAgICAgICAgICAgIG15IEBmdW5jdGlvbkNv
bnRlbnQgPSAoKTsKICAgICAgICAgICAgIG15ICRjYWxsZXIgPSAiSU1QTCI7CiAKQEAgLTExNTEs
MTAgKzExNjAsMjQgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAg
ICAkY2FsbGVyID0gImR2IjsKICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgbXkgJGNvbnRl
bnRXaXRob3V0RXhjZXB0aW9uID0gJGNhbGxlciAuICItPiIgLiAkZnVuY3Rpb25OYW1lIC4gIigi
IC4gam9pbigiLCAiLCBAcGFyYW1ldGVyTmFtZXMpIC4gIikiOwogCi0gICAgICAgICAgICBteSAk
Y29udGVudCA9ICRjYWxsZXIgLiAiLT4iIC4gJGZ1bmN0aW9uTmFtZSAuICIoIiAuIGpvaW4oIiwg
IiwgQHBhcmFtZXRlck5hbWVzKSAuICIpIjsKKyAgICAgICAgICAgIHB1c2goQHBhcmFtZXRlck5h
bWVzLCAiZWMiKSBpZiAkcmFpc2VzRXhjZXB0aW9uczsKKyAgICAgICAgICAgIG15ICRjb250ZW50
ID0gJGNhbGxlciAuICItPiIgLiAkZnVuY3Rpb25OYW1lIC4gIigiIC4gam9pbigiLCAiLCBAcGFy
YW1ldGVyTmFtZXMpIC4gIikiOyAKIAotICAgICAgICAgICAgaWYgKCRyZXR1cm5UeXBlIGVxICJ2
b2lkIikgeworICAgICAgICAgICAgaWYgKCRwb2RUeXBlIGFuZCAkcG9kVHlwZSBlcSAiQWZmaW5l
VHJhbnNmb3JtIiBhbmQgJGZ1bmN0aW9uTmFtZSBlcSAicm90YXRlRnJvbVZlY3RvciIpIHsKKyAg
ICAgICAgICAgICAgICAjIFNwZWNpYWwgY2FzZSB3aXRoIHJvdGF0ZUZyb21WZWN0b3IgJiBTVkdN
YXRyaXggICAgICAgIAorICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uQ29udGVudCwgIiAg
ICAkZXhjZXB0aW9uSW5pdFxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAZnVuY3Rpb25Db250
ZW50LCAiICAgIGlmICh4ID09IDAuMCB8fCB5ID09IDAuMClcbiAgICAgICAgZWMgPSBXZWJDb3Jl
OjpTVkdfSU5WQUxJRF9WQUxVRV9FUlI7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBmdW5j
dGlvbkNvbnRlbnQsICIgICAgJGV4Y2VwdGlvblJhaXNlT25FcnJvclxuIik7CisgICAgICAgICAg
ICAgICAgcHVzaChAZnVuY3Rpb25Db250ZW50LCAiICAgIHJldHVybiBbRE9NU1ZHTWF0cml4IF9T
VkdNYXRyaXhXaXRoOiRjb250ZW50V2l0aG91dEV4Y2VwdGlvbl07XG4iKTsKKyAgICAgICAgICAg
IH0gZWxzaWYgKCRwb2RUeXBlIGFuZCAkcG9kVHlwZSBlcSAiQWZmaW5lVHJhbnNmb3JtIiBhbmQg
JGZ1bmN0aW9uTmFtZSBlcSAiaW52ZXJzZSIpIHsKKyAgICAgICAgICAgICAgICAjIFNwZWNpYWwg
Y2FzZSB3aXRoIGludmVyc2UgJiBTVkdNYXRyaXgKKyAgICAgICAgICAgICAgICBwdXNoKEBmdW5j
dGlvbkNvbnRlbnQsICIgICAgJGV4Y2VwdGlvbkluaXRcbiIpOworICAgICAgICAgICAgICAgIHB1
c2goQGZ1bmN0aW9uQ29udGVudCwgIiAgICBpZiAoISRjYWxsZXItPmlzSW52ZXJ0aWJsZSgpKVxu
ICAgICAgICBlYyA9IFdlYkNvcmU6OlNWR19NQVRSSVhfTk9UX0lOVkVSVEFCTEU7XG4iKTsKKyAg
ICAgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIgICAgJGV4Y2VwdGlvblJhaXNl
T25FcnJvclxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAZnVuY3Rpb25Db250ZW50LCAiICAg
IHJldHVybiBbRE9NU1ZHTWF0cml4IF9TVkdNYXRyaXhXaXRoOiRjb250ZW50V2l0aG91dEV4Y2Vw
dGlvbl07XG4iKTsKKyAgICAgICAgICAgIH0gZWxzaWYgKCRyZXR1cm5UeXBlIGVxICJ2b2lkIikg
ewogICAgICAgICAgICAgICAgICMgU3BlY2lhbCBjYXNlICd2b2lkJyByZXR1cm4gdHlwZS4KICAg
ICAgICAgICAgICAgICBpZiAoJHJhaXNlc0V4Y2VwdGlvbnMpIHsKICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAZnVuY3Rpb25Db250ZW50LCAiICAgICRleGNlcHRpb25Jbml0XG4iKTsKQEAgLTEx
OTIsNyArMTIxNSwxMSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgIyBTdXJyb3VuZCBnZXR0ZXIgd2l0aCBU
eXBlTWFrZXIKLSAgICAgICAgICAgICAgICAgICAgaWYgKCRyZXR1cm5UeXBlQ2xhc3MgZXEgIkRP
TVJHQkNvbG9yIiBvciAkcmV0dXJuVHlwZUNsYXNzIGVxICJET01TVkdQb2ludCIgb3IgJHJldHVy
blR5cGVDbGFzcyBlcSAiRE9NU1ZHUmVjdCIgb3IgJHJldHVyblR5cGVDbGFzcyBlcSAiRE9NU1ZH
TnVtYmVyIikgeworICAgICAgICAgICAgICAgICAgICBpZiAoJHJldHVyblR5cGVDbGFzcyBlcSAi
RE9NUkdCQ29sb3IiIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAkcmV0dXJuVHlwZUNsYXNz
IGVxICJET01TVkdQb2ludCIgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICRyZXR1cm5UeXBl
Q2xhc3MgZXEgIkRPTVNWR1JlY3QiIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAkcmV0dXJu
VHlwZUNsYXNzIGVxICJET01TVkdOdW1iZXIiIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAk
cmV0dXJuVHlwZUNsYXNzIGVxICJET01TVkdNYXRyaXgiKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAkY29udGVudCA9ICJbJHJldHVyblR5cGVDbGFzcyAkdHlwZU1ha2VyOiIgLiAkY29udGVu
dCAuICJdIjsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICRjb250ZW50ID0gIlskcmV0dXJuVHlwZUNsYXNzICR0eXBlTWFrZXI6V1RGOjpnZXRQ
dHIoIiAuICRjb250ZW50IC4gIildIjsKQEAgLTEyODYsOCArMTMxMywxMyBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNTVkdBbmltYXRlZFR5
cGUoJGludGVyZmFjZU5hbWUpKSB7CiAgICAgICAgIHB1c2goQGludGVuYWxIZWFkZXJDb250ZW50
LCAiI2ltcG9ydCA8V2ViQ29yZS9TVkdBbmltYXRlZFRlbXBsYXRlLmg+XG5cbiIpOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIHB1c2goQGludGVuYWxIZWFkZXJDb250ZW50LCAiXG5uYW1lc3BhY2Ug
V2ViQ29yZSB7IGNsYXNzICRpbXBsQ2xhc3NOYW1lOyB9XG5cbiIpOworICAgICAgICBpZiAoJHBv
ZFR5cGUgYW5kICRwb2RUeXBlIG5lICJmbG9hdCIpIHsKKyAgICAgICAgICAgIHB1c2goQGludGVu
YWxIZWFkZXJDb250ZW50LCAiXG5uYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzICRwb2RUeXBlOyB9
XG5cbiIpOworICAgICAgICB9IGVsc2UgeyAKKyAgICAgICAgICAgIHB1c2goQGludGVuYWxIZWFk
ZXJDb250ZW50LCAiXG5uYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzICRpbXBsQ2xhc3NOYW1lOyB9
XG5cbiIpOworICAgICAgICB9CiAgICAgfQorCiAgICAgcHVzaChAaW50ZW5hbEhlYWRlckNvbnRl
bnQsICJcQGludGVyZmFjZSAkY2xhc3NOYW1lIChXZWJDb3JlSW50ZXJuYWwpXG4iKTsKICAgICBw
dXNoKEBpbnRlbmFsSGVhZGVyQ29udGVudCwgJHR5cGVHZXR0ZXJTaWcgLiAiO1xuIik7CiAgICAg
cHVzaChAaW50ZW5hbEhlYWRlckNvbnRlbnQsICR0eXBlTWFrZXJTaWcgLiAiO1xuIik7CkluZGV4
OiBXZWJDb3JlL2tzdmcyL21pc2MvS1NWR1RpbWVTY2hlZHVsZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUva3N2ZzIvbWlzYy9LU1ZHVGltZVNjaGVkdWxlci5jcHAJKHJldmlzaW9uIDE4MTYy
KQorKysgV2ViQ29yZS9rc3ZnMi9taXNjL0tTVkdUaW1lU2NoZWR1bGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIlNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVt
ZW50LmgiCiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgogI2luY2x1ZGUgIlNWR0RPTUlt
cGxlbWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiU1ZHTWF0cml4LmgiCiAjaW5jbHVkZSAiU1ZHTmFt
ZXMuaCIKICNpbmNsdWRlICJTVkdTdHlsZWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVk
VHJhbnNmb3JtYWJsZUVsZW1lbnQuaCIKSW5kZXg6IFdlYkNvcmUva3N2ZzIvbWlzYy9TVkdJbWFn
ZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9taXNjL1NWR0ltYWdlTG9h
ZGVyLmNwcAkocmV2aXNpb24gMTgxNjIpCisrKyBXZWJDb3JlL2tzdmcyL21pc2MvU1ZHSW1hZ2VM
b2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMCArMjYsOSBAQAogI2luY2x1ZGUgIkRv
Y0xvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAKLSNpbmNsdWRlICJTVkdOYW1lcy5o
IgogI2luY2x1ZGUgIlNWR0ltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgot
I2luY2x1ZGUgIlNWR01hdHJpeC5oIgorI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAKICNpbmNsdWRl
ICJSZW5kZXJJbWFnZS5oIgogCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlVHJh
bnNmb3JtRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5p
bWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODE2MikKKysrIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjYsNyArMjYsNyBAQAogCiAjaW5jbHVkZSAiS1NWR1RpbWVTY2hlZHVsZXIuaCIKICNpbmNsdWRl
ICJTVkdBbmdsZS5oIgotI2luY2x1ZGUgIlNWR01hdHJpeC5oIgorI2luY2x1ZGUgIkFmZmluZVRy
YW5zZm9ybS5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmgiCiAj
aW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1RyYW5zZm9ybS5oIgpAQCAt
MTM5LDEwICsxMzksMTAgQEAgdm9pZCBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6aGFuZGxl
VAogICAgICAgICAgICAgICAgIGlmICghbV9mcm9tVHJhbnNmb3JtKQogICAgICAgICAgICAgICAg
ICAgICBtX2Zyb21UcmFuc2Zvcm0gPSBuZXcgU1ZHVHJhbnNmb3JtKCk7CiAKLSAgICAgICAgICAg
ICAgICBTVkdNYXRyaXgqIGJ5TWF0cml4ID0gbV90b1RyYW5zZm9ybS0+bWF0cml4KCk7Ci0gICAg
ICAgICAgICAgICAgU1ZHTWF0cml4KiBmcm9tTWF0cml4ID0gbV9mcm9tVHJhbnNmb3JtLT5tYXRy
aXgoKTsKKyAgICAgICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gYnlNYXRyaXggPSBtX3RvVHJh
bnNmb3JtLT5tYXRyaXgoKTsKKyAgICAgICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gZnJvbU1h
dHJpeCA9IG1fZnJvbVRyYW5zZm9ybS0+bWF0cml4KCk7CiAKLSAgICAgICAgICAgICAgICBieU1h
dHJpeC0+bXVsdGlwbHkoZnJvbU1hdHJpeCk7CisgICAgICAgICAgICAgICAgYnlNYXRyaXggKj0g
ZnJvbU1hdHJpeDsKIAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAt
MTg2LDggKzE4Niw4IEBAIHZvaWQgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmhhbmRsZVQK
ICAgICAgICAgICAgIGlmICghdmFsdWUxLmlzRW1wdHkoKSAmJiAhdmFsdWUyLmlzRW1wdHkoKSkg
ewogICAgICAgICAgICAgICAgIGJvb2wgYXBwbHkgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBp
ZiAobV90b1RyYW5zZm9ybSAmJiBtX2Zyb21UcmFuc2Zvcm0pIHsgICAgCi0gICAgICAgICAgICAg
ICAgICAgIHFUb01hdHJpeCA9IG1fdG9UcmFuc2Zvcm0tPm1hdHJpeCgpLT5tYXRyaXgoKTsKLSAg
ICAgICAgICAgICAgICAgICAgcUZyb21NYXRyaXggPSBtX2Zyb21UcmFuc2Zvcm0tPm1hdHJpeCgp
LT5tYXRyaXgoKTsKKyAgICAgICAgICAgICAgICAgICAgcVRvTWF0cml4ID0gbV90b1RyYW5zZm9y
bS0+bWF0cml4KCk7CisgICAgICAgICAgICAgICAgICAgIHFGcm9tTWF0cml4ID0gbV9mcm9tVHJh
bnNmb3JtLT5tYXRyaXgoKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
ICAgIGFwcGx5ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgdXNlVGltZVBlcmNlbnRhZ2Ug
PSAxLjA7CkBAIC0yMDksMzYgKzIwOSwzNiBAQCB2b2lkIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVt
ZW50OjpoYW5kbGVUCiAgICAgICAgICAgICB1c2VUaW1lUGVyY2VudGFnZSA9IGNhbGN1bGF0ZVJl
bGF0aXZlVGltZVBlcmNlbnRhZ2UodGltZVBlcmNlbnRhZ2UsIG1fY3VycmVudEl0ZW0pOwogICAg
IH0KIAotICAgIGlmIChtX3RvVHJhbnNmb3JtICYmIG1fdG9UcmFuc2Zvcm0tPm1hdHJpeCgpICYm
IHFUb01hdHJpeC5pc0lkZW50aXR5KCkpCi0gICAgICAgIHFUb01hdHJpeCA9IG1fdG9UcmFuc2Zv
cm0tPm1hdHJpeCgpLT5tYXRyaXgoKTsKKyAgICBpZiAobV90b1RyYW5zZm9ybSAmJiBxVG9NYXRy
aXguaXNJZGVudGl0eSgpKQorICAgICAgICBxVG9NYXRyaXggPSBtX3RvVHJhbnNmb3JtLT5tYXRy
aXgoKTsKIAotICAgIGlmIChtX2Zyb21UcmFuc2Zvcm0gJiYgbV9mcm9tVHJhbnNmb3JtLT5tYXRy
aXgoKSAmJiBxRnJvbU1hdHJpeC5pc0lkZW50aXR5KCkpCi0gICAgICAgIHFGcm9tTWF0cml4ID0g
bV9mcm9tVHJhbnNmb3JtLT5tYXRyaXgoKS0+bWF0cml4KCk7Ci0KLSAgICBpZiAoIW1fdHJhbnNm
b3JtTWF0cml4KQorICAgIGlmIChtX2Zyb21UcmFuc2Zvcm0gJiYgcUZyb21NYXRyaXguaXNJZGVu
dGl0eSgpKQorICAgICAgICBxRnJvbU1hdHJpeCA9IG1fZnJvbVRyYW5zZm9ybS0+bWF0cml4KCk7
CisvKgorICAgIGlmIChtX3RyYW5zZm9ybU1hdHJpeCkKICAgICAgICAgbV90cmFuc2Zvcm1NYXRy
aXggPSBuZXcgU1ZHTWF0cml4KCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIG1fdHJhbnNmb3JtTWF0
cml4LT5yZXNldCgpOworICAgICAgICBtX3RyYW5zZm9ybU1hdHJpeC5yZXNldCgpOwogCiAgICAg
ICAgIGlmIChpc0FjY3VtdWxhdGVkKCkgJiYgcmVwZWF0aW9ucygpICE9IDAuMCAmJiBtX2xhc3RN
YXRyaXgpCiAgICAgICAgICAgICBtX3RyYW5zZm9ybU1hdHJpeC0+bXVsdGlwbHkobV9sYXN0TWF0
cml4LmdldCgpKTsKICAgICB9Ci0gICAgCisgKi8gICAKICAgICBzd2l0Y2ggKG1fdHlwZSkgewog
ICAgICAgICBjYXNlIFNWR1RyYW5zZm9ybTo6U1ZHX1RSQU5TRk9STV9UUkFOU0xBVEU6CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGRvdWJsZSBkeCA9ICgocVRvTWF0cml4LmR4KCkgLSBxRnJvbU1h
dHJpeC5keCgpKSAqIHVzZVRpbWVQZXJjZW50YWdlKSArIHFGcm9tTWF0cml4LmR4KCk7Ci0gICAg
ICAgICAgICBkb3VibGUgZHkgPSAoKHFUb01hdHJpeC5keSgpIC0gcUZyb21NYXRyaXguZHkoKSkg
KiB1c2VUaW1lUGVyY2VudGFnZSkgKyBxRnJvbU1hdHJpeC5keSgpOworICAgICAgICAgICAgZG91
YmxlIGR4ID0gKChxVG9NYXRyaXguZSgpIC0gcUZyb21NYXRyaXguZSgpKSAqIHVzZVRpbWVQZXJj
ZW50YWdlKSArIHFGcm9tTWF0cml4LmUoKTsKKyAgICAgICAgICAgIGRvdWJsZSBkeSA9ICgocVRv
TWF0cml4LmYoKSAtIHFGcm9tTWF0cml4LmYoKSkgKiB1c2VUaW1lUGVyY2VudGFnZSkgKyBxRnJv
bU1hdHJpeC5mKCk7CiAKLSAgICAgICAgICAgIG1fdHJhbnNmb3JtTWF0cml4LT50cmFuc2xhdGUo
ZHgsIGR5KTsKKyAgICAgICAgICAgIG1fdHJhbnNmb3JtTWF0cml4LnRyYW5zbGF0ZShkeCwgZHkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBTVkdUcmFuc2Zv
cm06OlNWR19UUkFOU0ZPUk1fU0NBTEU6CiAgICAgICAgIHsKLSAgICAgICAgICAgIGRvdWJsZSBz
eCA9ICgocVRvTWF0cml4Lm0xMSgpIC0gcUZyb21NYXRyaXgubTExKCkpICogdXNlVGltZVBlcmNl
bnRhZ2UpICsgcUZyb21NYXRyaXgubTExKCk7Ci0gICAgICAgICAgICBkb3VibGUgc3kgPSAoKHFU
b01hdHJpeC5tMjIoKSAtIHFGcm9tTWF0cml4Lm0yMigpKSAqIHVzZVRpbWVQZXJjZW50YWdlKSAr
IHFGcm9tTWF0cml4Lm0yMigpOworICAgICAgICAgICAgZG91YmxlIHN4ID0gKChxVG9NYXRyaXgu
YSgpIC0gcUZyb21NYXRyaXguYSgpKSAqIHVzZVRpbWVQZXJjZW50YWdlKSArIHFGcm9tTWF0cml4
LmEoKTsKKyAgICAgICAgICAgIGRvdWJsZSBzeSA9ICgocVRvTWF0cml4LmQoKSAtIHFGcm9tTWF0
cml4LmQoKSkgKiB1c2VUaW1lUGVyY2VudGFnZSkgKyBxRnJvbU1hdHJpeC5kKCk7CiAKLSAgICAg
ICAgICAgIG1fdHJhbnNmb3JtTWF0cml4LT5zY2FsZU5vblVuaWZvcm0oc3gsIHN5KTsKKyAgICAg
ICAgICAgIG1fdHJhbnNmb3JtTWF0cml4LnNjYWxlKHN4LCBzeSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBjYXNlIFNWR1RyYW5zZm9ybTo6U1ZHX1RSQU5TRk9STV9S
T1RBVEU6CkBAIC0yNjUsMjUgKzI2NSwyNSBAQCB2b2lkIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVt
ZW50OjpoYW5kbGVUCiAgICAgICAgICAgICBkb3VibGUgY3ggPSAodG9DeCAtIGZyb21DeCkgKiB1
c2VUaW1lUGVyY2VudGFnZSArIGZyb21DeDsKICAgICAgICAgICAgIGRvdWJsZSBjeSA9ICh0b0N5
IC0gZnJvbUN5KSAqIHVzZVRpbWVQZXJjZW50YWdlICsgZnJvbUN5OwogCi0gICAgICAgICAgICBt
X3RyYW5zZm9ybU1hdHJpeC0+dHJhbnNsYXRlKGN4LCBjeSk7Ci0gICAgICAgICAgICBtX3RyYW5z
Zm9ybU1hdHJpeC0+cm90YXRlKGFuZ2xlKTsKLSAgICAgICAgICAgIG1fdHJhbnNmb3JtTWF0cml4
LT50cmFuc2xhdGUoLWN4LCAtY3kpOworICAgICAgICAgICAgbV90cmFuc2Zvcm1NYXRyaXgudHJh
bnNsYXRlKGN4LCBjeSk7CisgICAgICAgICAgICBtX3RyYW5zZm9ybU1hdHJpeC5yb3RhdGUoYW5n
bGUpOworICAgICAgICAgICAgbV90cmFuc2Zvcm1NYXRyaXgudHJhbnNsYXRlKC1jeCwgLWN5KTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgU1ZHVHJhbnNmb3Jt
OjpTVkdfVFJBTlNGT1JNX1NLRVdYOgogICAgICAgICB7Ci0gICAgICAgICAgICBkb3VibGUgc3gg
PSAoU1ZHQW5nbGU6OnRvZGVnKGF0YW4ocVRvTWF0cml4Lm0yMSgpKSAtIGF0YW4ocUZyb21NYXRy
aXgubTIxKCkpKSAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgdXNlVGltZVBlcmNlbnRhZ2Up
ICsgU1ZHQW5nbGU6OnRvZGVnKGF0YW4ocUZyb21NYXRyaXgubTIxKCkpKTsKKyAgICAgICAgICAg
IGRvdWJsZSBzeCA9IChTVkdBbmdsZTo6dG9kZWcoYXRhbihxVG9NYXRyaXguYygpKSAtIGF0YW4o
cUZyb21NYXRyaXguYygpKSkgKgorICAgICAgICAgICAgICAgICAgICAgICAgIHVzZVRpbWVQZXJj
ZW50YWdlKSArIFNWR0FuZ2xlOjp0b2RlZyhhdGFuKHFGcm9tTWF0cml4LmMoKSkpOwogCi0gICAg
ICAgICAgICBtX3RyYW5zZm9ybU1hdHJpeC0+c2tld1goc3gpOworICAgICAgICAgICAgbV90cmFu
c2Zvcm1NYXRyaXguc2hlYXIoc3gsIDEuKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgU1ZHVHJhbnNmb3JtOjpTVkdfVFJBTlNGT1JNX1NLRVdZOgogICAgICAg
ICB7Ci0gICAgICAgICAgICBkb3VibGUgc3kgPSAoU1ZHQW5nbGU6OnRvZGVnKGF0YW4ocVRvTWF0
cml4Lm0xMigpKSAtIGF0YW4ocUZyb21NYXRyaXgubTEyKCkpKSAqCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgdXNlVGltZVBlcmNlbnRhZ2UpICsgU1ZHQW5nbGU6OnRvZGVnKGF0YW4ocUZyb21N
YXRyaXgubTEyKCkpKTsKKyAgICAgICAgICAgIGRvdWJsZSBzeSA9IChTVkdBbmdsZTo6dG9kZWco
YXRhbihxVG9NYXRyaXguYigpKSAtIGF0YW4ocUZyb21NYXRyaXguYigpKSkgKgorICAgICAgICAg
ICAgICAgICAgICAgICAgIHVzZVRpbWVQZXJjZW50YWdlKSArIFNWR0FuZ2xlOjp0b2RlZyhhdGFu
KHFGcm9tTWF0cml4LmIoKSkpOwogCi0gICAgICAgICAgICBtX3RyYW5zZm9ybU1hdHJpeC0+c2tl
d1koc3kpOworICAgICAgICAgICAgbV90cmFuc2Zvcm1NYXRyaXguc2hlYXIoMS4sIHN5KTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0yOTUsMTAg
KzI5NSwxMCBAQCB2b2lkIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpoYW5kbGVUCiAgICAg
ewogICAgICAgICBpZiAoKG1fcmVwZWF0Q291bnQgPiAwICYmIG1fcmVwZWF0aW9ucyA8IG1fcmVw
ZWF0Q291bnQgLSAxKSB8fCBpc0luZGVmaW5pdGUobV9yZXBlYXRDb3VudCkpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIG1fbGFzdE1hdHJpeCA9IG5ldyBTVkdNYXRyaXgoKTsKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgaWYgKG1fdHJhbnNmb3JtTWF0cml4KQotICAgICAgICAgICAgICAgIG1f
bGFzdE1hdHJpeC0+Y29weShtX3RyYW5zZm9ybU1hdHJpeC5nZXQoKSk7CisgICAgICAgICAgICBt
X2xhc3RNYXRyaXgucmVzZXQoKTsKKworICAgICAgICAgICAgaWYgKCFtX3RyYW5zZm9ybU1hdHJp
eC5pc0lkZW50aXR5KCkpCisgICAgICAgICAgICAgICAgbV9sYXN0TWF0cml4ID0gbV90cmFuc2Zv
cm1NYXRyaXg7CiAKICAgICAgICAgICAgIG1fcmVwZWF0aW9ucysrOwogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMzE0LDExICszMTQsMTEgQEAgdm9pZCBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVu
dDo6aGFuZGxlVAogICAgICAgICBtX2luaXRpYWxUcmFuc2Zvcm0gPSAwOwogCiAgICAgICAgIGlm
ICghaXNGcm96ZW4oKSkgewotICAgICAgICAgICAgU1ZHTWF0cml4KiBpbml0aWFsID0gaW5pdGlh
bE1hdHJpeCgpOwotICAgICAgICAgICAgaWYgKGluaXRpYWwpCisgICAgICAgICAgICBBZmZpbmVU
cmFuc2Zvcm0gaW5pdGlhbCA9IGluaXRpYWxNYXRyaXgoKTsKKyAgICAgICAgICAgIGlmICghaW5p
dGlhbC5pc0lkZW50aXR5KCkpCiAgICAgICAgICAgICAgICAgbV90cmFuc2Zvcm1NYXRyaXggPSBp
bml0aWFsOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fdHJhbnNmb3JtTWF0
cml4ID0gbmV3IFNWR01hdHJpeCgpOworICAgICAgICAgICAgICAgIG1fdHJhbnNmb3JtTWF0cml4
ID0gQWZmaW5lVHJhbnNmb3JtKCk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC00MTQsOCArNDE0
LDggQEAgUmVmUHRyPFNWR1RyYW5zZm9ybT4gU1ZHQW5pbWF0ZVRyYW5zZm9ybQogCiB2b2lkIFNW
R0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpjYWxjdWxhdGVSb3RhdGlvbkZyb21NYXRyaXgoY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBtYXRyaXgsIGRvdWJsZSYgYW5nbGUsIGRvdWJsZSYgY3gsIGRv
dWJsZSYgY3kpIGNvbnN0CiB7Ci0gICAgZG91YmxlIGNvc2EgPSBtYXRyaXgubTExKCk7Ci0gICAg
ZG91YmxlIHNpbmEgPSAtbWF0cml4Lm0yMSgpOworICAgIGRvdWJsZSBjb3NhID0gbWF0cml4LmEo
KTsKKyAgICBkb3VibGUgc2luYSA9IC1tYXRyaXguYygpOwogCiAgICAgaWYgKGNvc2EgIT0gMS4w
KQogICAgIHsKQEAgLTQyNyw4ICs0MjcsOCBAQCB2b2lkIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVt
ZW50OjpjYWxjdWxhCiAgICAgICAgIAogICAgICAgICBkb3VibGUgcmVzID0gKDEgLSBjb3NhKSAr
ICgoc2luYSAqIHNpbmEpIC8gKDEgLSBjb3NhKSk7CiAgICAgICAgIAotICAgICAgICBjeCA9ICht
YXRyaXguZHgoKSAtICgoc2luYSAqIG1hdHJpeC5keSgpKSAvICgxIC0gY29zYSkpKSAvIHJlczsK
LSAgICAgICAgY3kgPSAobWF0cml4LmR5KCkgKyAoKHNpbmEgKiBtYXRyaXguZHgoKSkgLyAoMSAt
IGNvc2EpKSkgLyByZXM7CisgICAgICAgIGN4ID0gKG1hdHJpeC5lKCkgLSAoKHNpbmEgKiBtYXRy
aXguZigpKSAvICgxIC0gY29zYSkpKSAvIHJlczsKKyAgICAgICAgY3kgPSAobWF0cml4LmYoKSAr
ICgoc2luYSAqIG1hdHJpeC5lKCkpIC8gKDEgLSBjb3NhKSkpIC8gcmVzOwogCiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC00MzgsMjggKzQzOCwyNSBAQCB2b2lkIFNWR0FuaW1hdGVUcmFuc2Zv
cm1FbGVtZW50OjpjYWxjdWxhCiAgICAgYW5nbGUgPSAwLjA7CiB9CiAKLVNWR01hdHJpeCogU1ZH
QW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmluaXRpYWxNYXRyaXgoKSBjb25zdAorQWZmaW5lVHJh
bnNmb3JtIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50Ojppbml0aWFsTWF0cml4KCkgY29uc3QK
IHsKICAgICBpZiAoIXRhcmdldEVsZW1lbnQoKS0+aXNTdHlsZWRUcmFuc2Zvcm1hYmxlKCkpCi0g
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7CiAgICAg
U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQqIHRyYW5zZm9ybSA9IHN0YXRpY19jYXN0PFNW
R1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Kj4odGFyZ2V0RWxlbWVudCgpKTsKICAgICBTVkdU
cmFuc2Zvcm1MaXN0KiB0cmFuc2Zvcm1MaXN0ID0gKHRyYW5zZm9ybSA/IHRyYW5zZm9ybS0+dHJh
bnNmb3JtQmFzZVZhbHVlKCkgOiAwKTsKICAgICBpZiAoIXRyYW5zZm9ybUxpc3QpCi0gICAgICAg
IHJldHVybiAwOwotICAgIAorICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7CisKICAg
ICBSZWZQdHI8U1ZHVHJhbnNmb3JtPiByZXN1bHQgPSB0cmFuc2Zvcm1MaXN0LT5jb25jYXRlbmF0
ZSgpOwogICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFNWR01hdHJp
eCogcmV0ID0gcmVzdWx0LT5tYXRyaXgoKTsKLSAgICByZXQtPnJlZigpOworICAgICAgICByZXR1
cm4gQWZmaW5lVHJhbnNmb3JtKCk7CiAKLSAgICByZXR1cm4gcmV0OworICAgIHJldHVybiByZXN1
bHQtPm1hdHJpeCgpOwogfQogCi1TVkdNYXRyaXgqIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50
Ojp0cmFuc2Zvcm1NYXRyaXgoKSBjb25zdAorQWZmaW5lVHJhbnNmb3JtIFNWR0FuaW1hdGVUcmFu
c2Zvcm1FbGVtZW50Ojp0cmFuc2Zvcm1NYXRyaXgoKSBjb25zdAogewotICAgIHJldHVybiBtX3Ry
YW5zZm9ybU1hdHJpeC5nZXQoKTsKKyAgICByZXR1cm4gbV90cmFuc2Zvcm1NYXRyaXg7CiB9CiAK
IH0KSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1l
bnQuaAkocmV2aXNpb24gMTgxNjIpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlVHJh
bnNmb3JtRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw4ICs0NCw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgUmVmUHRyPFNWR1RyYW5zZm9ybT4gcGFyc2VUcmFuc2Zvcm1W
YWx1ZShjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICAgICAgdm9pZCBjYWxjdWxhdGVSb3RhdGlv
bkZyb21NYXRyaXgoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgZG91YmxlJiBhbmdsZSwgZG91Ymxl
JiBjeCwgZG91YmxlJiBjeSkgY29uc3Q7CiAKLSAgICAgICAgU1ZHTWF0cml4KiBpbml0aWFsTWF0
cml4KCkgY29uc3Q7Ci0gICAgICAgIFNWR01hdHJpeCogdHJhbnNmb3JtTWF0cml4KCkgY29uc3Q7
CisgICAgICAgIEFmZmluZVRyYW5zZm9ybSBpbml0aWFsTWF0cml4KCkgY29uc3Q7CisgICAgICAg
IEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm1NYXRyaXgoKSBjb25zdDsKIAogICAgIHByb3RlY3Rl
ZDoKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIHRoaXM7IH0KQEAgLTU4LDggKzU4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBSZWZQdHI8U1ZHVHJhbnNmb3JtPiBtX2Zyb21UcmFuc2Zvcm07CiAgICAgICAg
IFJlZlB0cjxTVkdUcmFuc2Zvcm0+IG1faW5pdGlhbFRyYW5zZm9ybTsKIAotICAgICAgICBSZWZQ
dHI8U1ZHTWF0cml4PiBtX2xhc3RNYXRyaXg7Ci0gICAgICAgIFJlZlB0cjxTVkdNYXRyaXg+IG1f
dHJhbnNmb3JtTWF0cml4OworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gbV9sYXN0TWF0cml4Owor
ICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gbV90cmFuc2Zvcm1NYXRyaXg7CiAKICAgICAgICAgbXV0
YWJsZSBib29sIG1fcm90YXRlU3BlY2lhbENhc2UgOiAxOwogICAgICAgICBib29sIG1fdG9Sb3Rh
dGVTcGVjaWFsQ2FzZSA6IDE7CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDbGlwUGF0aEVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NsaXBQYXRoRWxl
bWVudC5jcHAJKHJldmlzaW9uIDE4MTYyKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ2xpcFBh
dGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNWR0hlbHBl
ci5oIgotI2luY2x1ZGUgIlNWR01hdHJpeC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5j
bHVkZSAiU1ZHVW5pdFR5cGVzLmgiCiAjaW5jbHVkZSAiY3Nzc3R5bGVzZWxlY3Rvci5oIgpAQCAt
ODgsNyArODcsNyBAQCBTVkdSZXNvdXJjZSogU1ZHQ2xpcFBhdGhFbGVtZW50OjpjYW52YXNSCiAg
ICAgICAgICAgICBSZW5kZXJTdHlsZSogcGF0aFN0eWxlID0gZG9jdW1lbnQoKS0+c3R5bGVTZWxl
Y3RvcigpLT5zdHlsZUZvckVsZW1lbnQoc3R5bGVkLCBjbGlwUGF0aFN0eWxlKTsKICAgICAgICAg
ICAgIFBhdGggcGF0aERhdGEgPSBzdHlsZWQtPnRvUGF0aERhdGEoKTsKICAgICAgICAgICAgIGlm
IChlLT5pc1N0eWxlZFRyYW5zZm9ybWFibGUoKSkKLSAgICAgICAgICAgICAgICBwYXRoRGF0YS50
cmFuc2Zvcm0oc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQqPihlKS0+
bG9jYWxNYXRyaXgoKS0+bWF0cml4KCkpOworICAgICAgICAgICAgICAgIHBhdGhEYXRhLnRyYW5z
Zm9ybShzdGF0aWNfY2FzdDxTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCo+KGUpLT5sb2Nh
bE1hdHJpeCgpKTsKICAgICAgICAgICAgIGlmICghcGF0aERhdGEuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgICAgIG1fY2xpcHBlci0+YWRkQ2xpcERhdGEocGF0aERhdGEsIHBhdGhTdHlsZS0+c3Zn
U3R5bGUoKS0+Y2xpcFJ1bGUoKSwgYmJveCk7CiAgICAgICAgICAgICBwYXRoU3R5bGUtPmRlcmVm
KHZpZXcoKS0+cmVuZGVyQXJlbmEoKSk7CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaXRU
b1ZpZXdCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZpdFRvVmll
d0JveC5jcHAJKHJldmlzaW9uIDE4MTYyKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRml0VG9W
aWV3Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsMTEgKzgyLDExIEBAIGJhaWxfb3V0OjsK
ICAgICAvLyBGSVhNRTogUGVyIHRoZSBzcGVjIHdlIGFyZSBzdXBwb3NlZCB0byBzZXQgdGhlIGRv
Y3VtZW50IGludG8gYW4gImVycm9yIHN0YXRlIiBoZXJlLgogfQogCi1TVkdNYXRyaXgqIFNWR0Zp
dFRvVmlld0JveDo6dmlld0JveFRvVmlld1RyYW5zZm9ybShmbG9hdCB2aWV3V2lkdGgsIGZsb2F0
IHZpZXdIZWlnaHQpIGNvbnN0CitBZmZpbmVUcmFuc2Zvcm0gU1ZHRml0VG9WaWV3Qm94Ojp2aWV3
Qm94VG9WaWV3VHJhbnNmb3JtKGZsb2F0IHZpZXdXaWR0aCwgZmxvYXQgdmlld0hlaWdodCkgY29u
c3QKIHsKICAgICBGbG9hdFJlY3Qgdmlld0JveFJlY3QgPSB2aWV3Qm94KCk7CiAgICAgaWYgKCF2
aWV3Qm94UmVjdC53aWR0aCgpIHx8ICF2aWV3Qm94UmVjdC5oZWlnaHQoKSkKLSAgICAgICAgcmV0
dXJuIFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR01hdHJpeCgpOworICAgICAgICByZXR1cm4gQWZm
aW5lVHJhbnNmb3JtKCk7CiAKICAgICByZXR1cm4gcHJlc2VydmVBc3BlY3RSYXRpbygpLT5nZXRD
VE0odmlld0JveFJlY3QueCgpLAogICAgICAgICAgICAgdmlld0JveFJlY3QueSgpLCB2aWV3Qm94
UmVjdC53aWR0aCgpLCB2aWV3Qm94UmVjdC5oZWlnaHQoKSwKSW5kZXg6IFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR0ZpdFRvVmlld0JveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R0ZpdFRvVmlld0JveC5oCShyZXZpc2lvbiAxODE2MikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R0ZpdFRvVmlld0JveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBBdHRyaWJ1dGU7Ci0gICAgY2xhc3MgU1ZHTWF0cml4
OworICAgIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKICAgICBjbGFzcyBTVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvOwogICAgIGNsYXNzIFN0cmluZ0ltcGw7CiAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgICAgIC8vICdTVkdGaXRUb1ZpZXdCb3gnIGZ1bmN0aW9ucwog
ICAgICAgICB2b2lkIHBhcnNlVmlld0JveChjb25zdCBTdHJpbmcmKTsKLSAgICAgICAgU1ZHTWF0
cml4KiB2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKGZsb2F0IHZpZXdXaWR0aCwgZmxvYXQgdmlld0hl
aWdodCkgY29uc3Q7CisgICAgICAgIEFmZmluZVRyYW5zZm9ybSB2aWV3Qm94VG9WaWV3VHJhbnNm
b3JtKGZsb2F0IHZpZXdXaWR0aCwgZmxvYXQgdmlld0hlaWdodCkgY29uc3Q7CiAKICAgICAgICAg
Ym9vbCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKIApJbmRleDogV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHTGVuZ3RoTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHTGVuZ3RoTGlzdC5jcHAJKHJldmlzaW9uIDE4MTYyKQorKysgV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHTGVuZ3RoTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDYg
QEAKIAogI2lmZGVmIFNWR19TVVBQT1JUCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoTGlzdC5oIgotI2lu
Y2x1ZGUgIlNWR01hdHJpeC5oIgogI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGluZWFyR3JhZGllbnRF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMaW5lYXJHcmFk
aWVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODE2MikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYg
QEAKICNpbmNsdWRlICJTVkdQYWludFNlcnZlckxpbmVhckdyYWRpZW50LmgiCiAjaW5jbHVkZSAi
U1ZHSGVscGVyLmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCi0jaW5jbHVkZSAiU1ZHTWF0cml4
LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm0uaCIKICNp
bmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0LmgiCkBAIC04OCw3ICs4Nyw3IEBAIHZvaWQgU1ZHTGlu
ZWFyR3JhZGllbnRFbGVtZW50OjpidWlsZEdyYWQKICAgICBSZWZQdHI8U1ZHUGFpbnRTZXJ2ZXJM
aW5lYXJHcmFkaWVudD4gZ3JhZCA9IFdURjo6c3RhdGljX3BvaW50ZXJfY2FzdDxTVkdQYWludFNl
cnZlckxpbmVhckdyYWRpZW50PihfZ3JhZCk7CiAgICAgQWZmaW5lVHJhbnNmb3JtIG1hdDsKICAg
ICBpZiAoZ3JhZGllbnRUcmFuc2Zvcm0oKS0+bnVtYmVyT2ZJdGVtcygpID4gMCkKLSAgICAgICAg
bWF0ID0gZ3JhZGllbnRUcmFuc2Zvcm0oKS0+Y29uc29saWRhdGUoKS0+bWF0cml4KCktPm1hdHJp
eCgpOworICAgICAgICBtYXQgPSBncmFkaWVudFRyYW5zZm9ybSgpLT5jb25zb2xpZGF0ZSgpLT5t
YXRyaXgoKTsKIAogICAgIERlcHJlY2F0ZWRTdHJpbmcgcmVmID0gaHJlZigpLmRlcHJlY2F0ZWRT
dHJpbmcoKTsKICAgICBSZWZQdHI8U1ZHUGFpbnRTZXJ2ZXI+IHBzZXJ2ZXIgPSBnZXRQYWludFNl
cnZlckJ5SWQoZG9jdW1lbnQoKSwgcmVmLm1pZCgxKSk7CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdMb2NhdGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xv
Y2F0YWJsZS5jcHAJKHJldmlzaW9uIDE4MTYyKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTG9j
YXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsOCArMjQsOSBAQAogI2lmZGVmIFNWR19T
VVBQT1JUCiAjaW5jbHVkZSAiU1ZHTG9jYXRhYmxlLmgiCiAKKyNpbmNsdWRlICJBZmZpbmVUcmFu
c2Zvcm0uaCIKICNpbmNsdWRlICJSZW5kZXJQYXRoLmgiCi0jaW5jbHVkZSAiU1ZHTWF0cml4Lmgi
CisjaW5jbHVkZSAiU1ZHRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04OCw1NyArODksNTYgQEAgRmxvYXRSZWN0IFNWR0xv
Y2F0YWJsZTo6Z2V0QkJveChjb25zdCBTVgogICAgIHJldHVybiBiYm94UmVjdDsKIH0KIAotU1ZH
TWF0cml4KiBTVkdMb2NhdGFibGU6OmdldENUTShjb25zdCBTVkdFbGVtZW50KiBlbGVtZW50KQor
QWZmaW5lVHJhbnNmb3JtIFNWR0xvY2F0YWJsZTo6Z2V0Q1RNKGNvbnN0IFNWR0VsZW1lbnQqIGVs
ZW1lbnQpCiB7CiAgICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpOwogCi0gICAgU1ZHTWF0cml4KiBjdG0gPSBTVkdTVkdF
bGVtZW50OjpjcmVhdGVTVkdNYXRyaXgoKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gY3RtOwogCiAg
ICAgTm9kZSogcGFyZW50ID0gZWxlbWVudC0+cGFyZW50Tm9kZSgpOwogICAgIGlmIChwYXJlbnQg
JiYgcGFyZW50LT5pc0VsZW1lbnROb2RlKCkpIHsKICAgICAgICAgU1ZHRWxlbWVudCogcGFyZW50
RWxlbWVudCA9IHN2Z19keW5hbWljX2Nhc3QocGFyZW50KTsKICAgICAgICAgaWYgKHBhcmVudEVs
ZW1lbnQgJiYgcGFyZW50RWxlbWVudC0+aXNTdHlsZWRMb2NhdGFibGUoKSkgewotICAgICAgICAg
ICAgUmVmUHRyPFNWR01hdHJpeD4gcGFyZW50Q1RNID0gc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkTG9j
YXRhYmxlRWxlbWVudCo+KHBhcmVudEVsZW1lbnQpLT5nZXRDVE0oKTsKLSAgICAgICAgICAgIGN0
bS0+bXVsdGlwbHkocGFyZW50Q1RNLmdldCgpKTsKKyAgICAgICAgICAgIEFmZmluZVRyYW5zZm9y
bSBwYXJlbnRDVE0gPSBzdGF0aWNfY2FzdDxTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50Kj4ocGFy
ZW50RWxlbWVudCktPmdldENUTSgpOworICAgICAgICAgICAgY3RtID0gcGFyZW50Q1RNICogY3Rt
OwogICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIGN0bTsKIH0KIAotU1ZHTWF0cml4KiBT
VkdMb2NhdGFibGU6OmdldFNjcmVlbkNUTShjb25zdCBTVkdFbGVtZW50KiBlbGVtZW50KQorQWZm
aW5lVHJhbnNmb3JtIFNWR0xvY2F0YWJsZTo6Z2V0U2NyZWVuQ1RNKGNvbnN0IFNWR0VsZW1lbnQq
IGVsZW1lbnQpCiB7CiAgICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpOwogCi0gICAgU1ZHTWF0cml4KiBjdG0gPSBTVkdT
VkdFbGVtZW50OjpjcmVhdGVTVkdNYXRyaXgoKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gY3RtOwog
CiAgICAgTm9kZSogcGFyZW50ID0gZWxlbWVudC0+cGFyZW50Tm9kZSgpOwogICAgIGlmIChwYXJl
bnQgJiYgcGFyZW50LT5pc0VsZW1lbnROb2RlKCkpIHsKICAgICAgICAgU1ZHRWxlbWVudCogcGFy
ZW50RWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPihwYXJlbnQpOwogICAgICAgICBp
ZiAocGFyZW50RWxlbWVudC0+aXNTdHlsZWRMb2NhdGFibGUoKSkgewotICAgICAgICAgICAgUmVm
UHRyPFNWR01hdHJpeD4gcGFyZW50Q1RNID0gc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkTG9jYXRhYmxl
RWxlbWVudCo+KHBhcmVudEVsZW1lbnQpLT5nZXRTY3JlZW5DVE0oKTsKLSAgICAgICAgICAgIGN0
bS0+bXVsdGlwbHkocGFyZW50Q1RNLmdldCgpKTsKKyAgICAgICAgICAgIEFmZmluZVRyYW5zZm9y
bSBwYXJlbnRDVE0gPSBzdGF0aWNfY2FzdDxTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50Kj4ocGFy
ZW50RWxlbWVudCktPmdldFNjcmVlbkNUTSgpOworICAgICAgICAgICAgY3RtID0gcGFyZW50Q1RN
ICogY3RtOwogICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIGN0bTsKIH0KIAotU1ZHTWF0
cml4KiBTVkdMb2NhdGFibGU6OmdldFRyYW5zZm9ybVRvRWxlbWVudChTVkdFbGVtZW50KiB0YXJn
ZXQsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAorQWZmaW5lVHJhbnNmb3JtIFNWR0xvY2F0YWJs
ZTo6Z2V0VHJhbnNmb3JtVG9FbGVtZW50KFNWR0VsZW1lbnQqIHRhcmdldCwgRXhjZXB0aW9uQ29k
ZSYgZWMpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPFNWR01hdHJpeD4gc3RhcnRjdG0oZ2V0Q1RNKCkp
OwotICAgIFNWR01hdHJpeCogY3RtID0gU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHTWF0cml4KCk7
Ci0gICAgY3RtLT5tdWx0aXBseShzdGFydGN0bS5nZXQoKSk7CisgICAgQWZmaW5lVHJhbnNmb3Jt
IGN0bSA9IGdldENUTSgpOwogCiAgICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IHN2Z19k
eW5hbWljX2Nhc3QodGFyZ2V0KTsKICAgICBpZiAodGFyZ2V0RWxlbWVudCAmJiB0YXJnZXRFbGVt
ZW50LT5pc1N0eWxlZExvY2F0YWJsZSgpKSB7Ci0gICAgICAgIFJlZlB0cjxTVkdNYXRyaXg+IHRh
cmdldENUTSA9IHN0YXRpY19jYXN0PFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQqPih0YXJnZXRF
bGVtZW50KS0+Z2V0Q1RNKCk7Ci0gICAgICAgIHRhcmdldENUTS5nZXQoKS0+aW52ZXJzZShlYyk7
Ci0gICAgICAgIGlmIChlYykKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRhcmdldENUTSA9IHN0
YXRpY19jYXN0PFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQqPih0YXJnZXRFbGVtZW50KS0+Z2V0
Q1RNKCk7CisgICAgICAgIGlmICghdGFyZ2V0Q1RNLmlzSW52ZXJ0aWJsZSgpKSB7CisgICAgICAg
ICAgICBlYyA9IFNWR19NQVRSSVhfTk9UX0lOVkVSVEFCTEU7CiAgICAgICAgICAgICByZXR1cm4g
Y3RtOwotICAgICAgICBjdG0tPnBvc3RNdWx0aXBseSh0YXJnZXRDVE0uZ2V0KCkpOworICAgICAg
ICB9CisgICAgICAgIGN0bSAqPSB0YXJnZXRDVE0uaW52ZXJzZSgpOwogICAgIH0KIAogICAgIHJl
dHVybiBjdG07CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMb2NhdGFibGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMb2NhdGFibGUuaAkocmV2aXNpb24gMTgxNjIp
CisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMb2NhdGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MjksOSArMjksOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyAgICBjbGFzcyBBZmZpbmVU
cmFuc2Zvcm07CiAgICAgY2xhc3MgRmxvYXRSZWN0OwogICAgIGNsYXNzIFNWR0VsZW1lbnQ7Ci0g
ICAgY2xhc3MgU1ZHTWF0cml4OwogICAgIGNsYXNzIFNWR1N0eWxlZEVsZW1lbnQ7CiAKICAgICBj
bGFzcyBTVkdMb2NhdGFibGUgewpAQCAtNDQsMTYgKzQ0LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdmlydHVhbCBTVkdFbGVtZW50KiBmYXJ0aGVzdFZpZXdwb3J0RWxlbWVudCgp
IGNvbnN0ID0gMDsKIAogICAgICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBnZXRCQm94KCkgY29uc3Qg
PSAwOwotICAgICAgICB2aXJ0dWFsIFNWR01hdHJpeCogZ2V0Q1RNKCkgY29uc3QgPSAwOwotICAg
ICAgICB2aXJ0dWFsIFNWR01hdHJpeCogZ2V0U2NyZWVuQ1RNKCkgY29uc3QgPSAwOwotICAgICAg
ICBTVkdNYXRyaXgqIGdldFRyYW5zZm9ybVRvRWxlbWVudChTVkdFbGVtZW50KiwgRXhjZXB0aW9u
Q29kZSYpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBnZXRDVE0oKSBj
b25zdCA9IDA7CisgICAgICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGdldFNjcmVlbkNUTSgp
IGNvbnN0ID0gMDsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGdldFRyYW5zZm9ybVRvRWxlbWVu
dChTVkdFbGVtZW50KiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogCiAgICAgcHJvdGVjdGVkOgog
ICAgICAgICBzdGF0aWMgU1ZHRWxlbWVudCogbmVhcmVzdFZpZXdwb3J0RWxlbWVudChjb25zdCBT
VkdTdHlsZWRFbGVtZW50Kik7CiAgICAgICAgIHN0YXRpYyBTVkdFbGVtZW50KiBmYXJ0aGVzdFZp
ZXdwb3J0RWxlbWVudChjb25zdCBTVkdTdHlsZWRFbGVtZW50Kik7CiAgICAgICAgIHN0YXRpYyBG
bG9hdFJlY3QgZ2V0QkJveChjb25zdCBTVkdTdHlsZWRFbGVtZW50Kik7Ci0gICAgICAgIHN0YXRp
YyBTVkdNYXRyaXgqIGdldENUTShjb25zdCBTVkdFbGVtZW50Kik7Ci0gICAgICAgIHN0YXRpYyBT
VkdNYXRyaXgqIGdldFNjcmVlbkNUTShjb25zdCBTVkdFbGVtZW50Kik7CisgICAgICAgIHN0YXRp
YyBBZmZpbmVUcmFuc2Zvcm0gZ2V0Q1RNKGNvbnN0IFNWR0VsZW1lbnQqKTsKKyAgICAgICAgc3Rh
dGljIEFmZmluZVRyYW5zZm9ybSBnZXRTY3JlZW5DVE0oY29uc3QgU1ZHRWxlbWVudCopOwogICAg
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R01hcmtlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01h
cmtlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODE2MikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R01hcmtlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw2IEBACiAjaW5j
bHVkZSAiU1ZHRml0VG9WaWV3Qm94LmgiCiAjaW5jbHVkZSAiU1ZHSGVscGVyLmgiCiAjaW5jbHVk
ZSAiU1ZHTGVuZ3RoLmgiCi0jaW5jbHVkZSAiU1ZHTWF0cml4LmgiCiAjaW5jbHVkZSAiU1ZHTmFt
ZXMuaCIKICNpbmNsdWRlICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCiAjaW5jbHVkZSAiU1ZH
U1ZHRWxlbWVudC5oIgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWF0cml4LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXRyaXguY3BwCShyZXZpc2lvbiAxODE2
MikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hdHJpeC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsMzA1ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMg
WmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgotICAgICAgICAgICAgICAgICAgMjAwNCwgMjAw
NSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl
IEtERSBwcm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0K
LSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
Ci0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCi0gICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3
LCBVU0EuCi0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaWZkZWYgU1ZHX1NVUFBPUlQKLSNp
bmNsdWRlICJTVkdNYXRyaXguaCIKLQotI2luY2x1ZGUgIlNWR0FuZ2xlLmgiCi0jaW5jbHVkZSAi
U1ZHRXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiU1ZHSGVscGVyLmgiCi0jaW5jbHVkZSA8bWF0aC5o
PgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotU1ZHTWF0cml4OjpTVkdNYXRyaXgoKSA6
IFNoYXJlZDxTVkdNYXRyaXg+KCkKLXsKLX0KLQotU1ZHTWF0cml4OjpTVkdNYXRyaXgoY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBtYXQpCi0gICAgOiBTaGFyZWQ8U1ZHTWF0cml4PigpCi0gICAgLCBt
X21hdChtYXQpCi17Ci19Ci0KLVNWR01hdHJpeDo6U1ZHTWF0cml4KGRvdWJsZSBhLCBkb3VibGUg
YiwgZG91YmxlIGMsIGRvdWJsZSBkLCBkb3VibGUgZSwgZG91YmxlIGYpIDogU2hhcmVkPFNWR01h
dHJpeD4oKQotewotICAgIG1fbWF0LnNldE1hdHJpeChhLCBiLCBjLCBkLCBlLCBmKTsKLX0KLQot
U1ZHTWF0cml4Ojp+U1ZHTWF0cml4KCkKLXsKLX0KLQotdm9pZCBTVkdNYXRyaXg6OnNldEEoZG91
YmxlIGEpCi17Ci0gICAgbV9tYXQuc2V0TWF0cml4KGEsIG1fbWF0Lm0xMigpLCBtX21hdC5tMjEo
KSwgbV9tYXQubTIyKCksIG1fbWF0LmR4KCksIG1fbWF0LmR5KCkpOwotfQotCi1kb3VibGUgU1ZH
TWF0cml4OjphKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9tYXQubTExKCk7Ci19Ci0KLXZvaWQg
U1ZHTWF0cml4OjpzZXRCKGRvdWJsZSBiKQotewotICAgIG1fbWF0LnNldE1hdHJpeChtX21hdC5t
MTEoKSwgYiwgbV9tYXQubTIxKCksIG1fbWF0Lm0yMigpLCBtX21hdC5keCgpLCBtX21hdC5keSgp
KTsKLX0KLQotZG91YmxlIFNWR01hdHJpeDo6YigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbWF0
Lm0xMigpOwotfQotCi12b2lkIFNWR01hdHJpeDo6c2V0Qyhkb3VibGUgYykKLXsKLSAgICBtX21h
dC5zZXRNYXRyaXgobV9tYXQubTExKCksIG1fbWF0Lm0xMigpLCBjLCBtX21hdC5tMjIoKSwgbV9t
YXQuZHgoKSwgbV9tYXQuZHkoKSk7Ci19Ci0KLWRvdWJsZSBTVkdNYXRyaXg6OmMoKSBjb25zdAot
ewotICAgIHJldHVybiBtX21hdC5tMjEoKTsKLX0KLQotdm9pZCBTVkdNYXRyaXg6OnNldEQoZG91
YmxlIGQpCi17Ci0gICAgbV9tYXQuc2V0TWF0cml4KG1fbWF0Lm0xMSgpLCBtX21hdC5tMTIoKSwg
bV9tYXQubTIxKCksIGQsIG1fbWF0LmR4KCksIG1fbWF0LmR5KCkpOwotfQotCi1kb3VibGUgU1ZH
TWF0cml4OjpkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9tYXQubTIyKCk7Ci19Ci0KLXZvaWQg
U1ZHTWF0cml4OjpzZXRFKGRvdWJsZSBlKQotewotICAgIG1fbWF0LnNldE1hdHJpeChtX21hdC5t
MTEoKSwgbV9tYXQubTEyKCksIG1fbWF0Lm0yMSgpLCBtX21hdC5tMjIoKSwgZSwgbV9tYXQuZHko
KSk7Ci19Ci0KLWRvdWJsZSBTVkdNYXRyaXg6OmUoKSBjb25zdAotewotICAgIHJldHVybiBtX21h
dC5keCgpOwotfQotCi12b2lkIFNWR01hdHJpeDo6c2V0Rihkb3VibGUgZikKLXsKLSAgICBtX21h
dC5zZXRNYXRyaXgobV9tYXQubTExKCksIG1fbWF0Lm0xMigpLCBtX21hdC5tMjEoKSwgbV9tYXQu
bTIyKCksIG1fbWF0LmR4KCksIGYpOwotfQotCi1kb3VibGUgU1ZHTWF0cml4OjpmKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9tYXQuZHkoKTsKLX0KLQotdm9pZCBTVkdNYXRyaXg6OmNvcHkoY29u
c3QgU1ZHTWF0cml4KiBvdGhlcikKLXsKLSAgICBtX21hdC5zZXRNYXRyaXgob3RoZXItPm1fbWF0
Lm0xMSgpLCBvdGhlci0+bV9tYXQubTEyKCksIG90aGVyLT5tX21hdC5tMjEoKSwgb3RoZXItPm1f
bWF0Lm0yMigpLCBvdGhlci0+bV9tYXQuZHgoKSwgb3RoZXItPm1fbWF0LmR5KCkpOwotfQotCi1T
VkdNYXRyaXgqIFNWR01hdHJpeDo6cG9zdE11bHRpcGx5KGNvbnN0IFNWR01hdHJpeCogc2Vjb25k
TWF0cml4KQotewotICAgIEFmZmluZVRyYW5zZm9ybSB0ZW1wKHNlY29uZE1hdHJpeC0+YSgpLCBz
ZWNvbmRNYXRyaXgtPmIoKSwgc2Vjb25kTWF0cml4LT5jKCksIHNlY29uZE1hdHJpeC0+ZCgpLCBz
ZWNvbmRNYXRyaXgtPmUoKSwgc2Vjb25kTWF0cml4LT5mKCkpOwotICAgIG1fbWF0ICo9IHRlbXA7
Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0KLVNWR01hdHJpeCogU1ZHTWF0cml4OjppbnZlcnNlKEV4
Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmICghbV9tYXQuaXNJbnZlcnRpYmxlKCkpCi0gICAg
ICAgIGVjID0gU1ZHX01BVFJJWF9OT1RfSU5WRVJUQUJMRTsKLSAgICBtX21hdCA9IG1fbWF0Lmlu
dmVydCgpOwotICAgIHJldHVybiB0aGlzOwotfQotCi1TVkdNYXRyaXgqIFNWR01hdHJpeDo6cG9z
dFRyYW5zbGF0ZShkb3VibGUgeCwgIGRvdWJsZSB5KQotewotICAgIC8vIENvdWxkIG9wdGltaXNl
IHRoZXNlLgotICAgIEFmZmluZVRyYW5zZm9ybSB0ZW1wOwotICAgIHRlbXAudHJhbnNsYXRlKHgs
IHkpOwotICAgIG1fbWF0ICo9IHRlbXA7Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0KLVNWR01hdHJp
eCogU1ZHTWF0cml4Ojpwb3N0U2NhbGUoZG91YmxlIHNjYWxlRmFjdG9yKQotewotICAgIEFmZmlu
ZVRyYW5zZm9ybSB0ZW1wOwotICAgIHRlbXAuc2NhbGUoc2NhbGVGYWN0b3IsIHNjYWxlRmFjdG9y
KTsKLSAgICBtX21hdCAqPSB0ZW1wOwotICAgIHJldHVybiB0aGlzOwotfQotCi1TVkdNYXRyaXgq
IFNWR01hdHJpeDo6cG9zdFNjYWxlTm9uVW5pZm9ybShkb3VibGUgc2NhbGVGYWN0b3JYLCBkb3Vi
bGUgc2NhbGVGYWN0b3JZKQotewotICAgIEFmZmluZVRyYW5zZm9ybSB0ZW1wOwotICAgIHRlbXAu
c2NhbGUoc2NhbGVGYWN0b3JYLCBzY2FsZUZhY3RvclkpOwotICAgIG1fbWF0ICo9IHRlbXA7Ci0g
ICAgcmV0dXJuIHRoaXM7Ci19Ci0KLVNWR01hdHJpeCogU1ZHTWF0cml4Ojpwb3N0Um90YXRlKGRv
dWJsZSBhbmdsZSkKLXsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gdGVtcDsKLSAgICB0ZW1wLnJvdGF0
ZShhbmdsZSk7Ci0gICAgbV9tYXQgKj0gdGVtcDsKLSAgICByZXR1cm4gdGhpczsKLX0KLQotU1ZH
TWF0cml4KiBTVkdNYXRyaXg6OnBvc3RSb3RhdGVGcm9tVmVjdG9yKGRvdWJsZSB4LCBkb3VibGUg
eSkKLXsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gdGVtcDsKLSAgICB0ZW1wLnJvdGF0ZShTVkdBbmds
ZTo6dG9kZWcoYXRhbjIoeSwgeCkpKTsKLSAgICBtX21hdCAqPSB0ZW1wOwotICAgIHJldHVybiB0
aGlzOwotfQotCi1TVkdNYXRyaXgqIFNWR01hdHJpeDo6cG9zdEZsaXBYKCkKLXsKLSAgICBBZmZp
bmVUcmFuc2Zvcm0gdGVtcCgtMS4wRiwgMC4wRiwgMC4wRiwgMS4wRiwgMC4wRiwgMC4wRik7Ci0g
ICAgbV9tYXQgKj0gdGVtcDsKLSAgICByZXR1cm4gdGhpczsKLX0KLQotU1ZHTWF0cml4KiBTVkdN
YXRyaXg6OnBvc3RGbGlwWSgpCi17Ci0gICAgQWZmaW5lVHJhbnNmb3JtIHRlbXAoMS4wRiwgMC4w
RiwgMC4wRiwgLTEuMEYsIDAuMEYsIDAuMEYpOwotICAgIG1fbWF0ICo9IHRlbXA7Ci0gICAgcmV0
dXJuIHRoaXM7Ci19Ci0KLVNWR01hdHJpeCogU1ZHTWF0cml4Ojpwb3N0U2tld1goZG91YmxlIGFu
Z2xlKQotewotICAgIEFmZmluZVRyYW5zZm9ybSB0ZW1wOwotICAgIHRlbXAuc2hlYXIodGFuKFNW
R0FuZ2xlOjp0b3JhZChhbmdsZSkpLCAwLjBGKTsKLSAgICBtX21hdCAqPSB0ZW1wOwotICAgIHJl
dHVybiB0aGlzOwotfQotCi1TVkdNYXRyaXgqIFNWR01hdHJpeDo6cG9zdFNrZXdZKGRvdWJsZSBh
bmdsZSkKLXsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gdGVtcDsKLSAgICB0ZW1wLnNoZWFyKDAuMEYs
IHRhbihTVkdBbmdsZTo6dG9yYWQoYW5nbGUpKSk7Ci0gICAgbV9tYXQgKj0gdGVtcDsKLSAgICBy
ZXR1cm4gdGhpczsKLX0KLQotU1ZHTWF0cml4KiBTVkdNYXRyaXg6Om11bHRpcGx5KGNvbnN0IFNW
R01hdHJpeCogc2Vjb25kTWF0cml4KQotewotICAgIEFmZmluZVRyYW5zZm9ybSB0ZW1wKHNlY29u
ZE1hdHJpeC0+YSgpLCBzZWNvbmRNYXRyaXgtPmIoKSwgc2Vjb25kTWF0cml4LT5jKCksIHNlY29u
ZE1hdHJpeC0+ZCgpLCBzZWNvbmRNYXRyaXgtPmUoKSwgc2Vjb25kTWF0cml4LT5mKCkpOwotICAg
IHRlbXAgKj0gbV9tYXQ7Ci0gICAgbV9tYXQgPSB0ZW1wOwotICAgIHJldHVybiB0aGlzOwotfQot
Ci1TVkdNYXRyaXgqIFNWR01hdHJpeDo6dHJhbnNsYXRlKGRvdWJsZSB4LCAgZG91YmxlIHkpCi17
Ci0gICAgbV9tYXQudHJhbnNsYXRlKHgsIHkpOwotICAgIHJldHVybiB0aGlzOwotfQotCi1TVkdN
YXRyaXgqIFNWR01hdHJpeDo6c2NhbGUoZG91YmxlIHNjYWxlRmFjdG9yKQotewotICAgIG1fbWF0
LnNjYWxlKHNjYWxlRmFjdG9yLCBzY2FsZUZhY3Rvcik7Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0K
LVNWR01hdHJpeCogU1ZHTWF0cml4OjpzY2FsZU5vblVuaWZvcm0oZG91YmxlIHNjYWxlRmFjdG9y
WCwgZG91YmxlIHNjYWxlRmFjdG9yWSkKLXsKLSAgICBtX21hdC5zY2FsZShzY2FsZUZhY3Rvclgs
IHNjYWxlRmFjdG9yWSk7Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0KLVNWR01hdHJpeCogU1ZHTWF0
cml4Ojpyb3RhdGUoZG91YmxlIGFuZ2xlKQotewotICAgIG1fbWF0LnJvdGF0ZShhbmdsZSk7Ci0g
ICAgcmV0dXJuIHRoaXM7Ci19Ci0KLVNWR01hdHJpeCogU1ZHTWF0cml4Ojpyb3RhdGVGcm9tVmVj
dG9yKGRvdWJsZSB4LCBkb3VibGUgeSwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKHgg
PT0gMCB8fCB5ID09IDApIHsKLSAgICAgICAgZWMgPSBTVkdfSU5WQUxJRF9WQUxVRV9FUlI7Ci0g
ICAgICAgIHJldHVybiB0aGlzOwotICAgIH0KLSAgICBtX21hdC5yb3RhdGUoU1ZHQW5nbGU6OnRv
ZGVnKGF0YW4yKHksIHgpKSk7Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0KLVNWR01hdHJpeCogU1ZH
TWF0cml4OjpmbGlwWCgpCi17Ci0gICAgbV9tYXQuc2NhbGUoLTEuMGYsIDEuMGYpOwotICAgIHJl
dHVybiB0aGlzOwotfQotCi1TVkdNYXRyaXgqIFNWR01hdHJpeDo6ZmxpcFkoKQotewotICAgIG1f
bWF0LnNjYWxlKDEuMGYsIC0xLjBmKTsKLSAgICByZXR1cm4gdGhpczsKLX0KLQotU1ZHTWF0cml4
KiBTVkdNYXRyaXg6OnNrZXdYKGRvdWJsZSBhbmdsZSkKLXsKLSAgICBtX21hdC5zaGVhcih0YW4o
U1ZHQW5nbGU6OnRvcmFkKGFuZ2xlKSksIDAuMEYpOwotICAgIHJldHVybiB0aGlzOwotfQotCi1T
VkdNYXRyaXgqIFNWR01hdHJpeDo6c2tld1koZG91YmxlIGFuZ2xlKQotewotICAgIG1fbWF0LnNo
ZWFyKDAuMEYsIHRhbihTVkdBbmdsZTo6dG9yYWQoYW5nbGUpKSk7Ci0gICAgcmV0dXJuIHRoaXM7
Ci19Ci0KLXZvaWQgU1ZHTWF0cml4OjpzZXRNYXRyaXgoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBt
YXQpCi17Ci0gICAgbV9tYXQgPSBtYXQ7Ci19Ci0KLUFmZmluZVRyYW5zZm9ybSYgU1ZHTWF0cml4
OjptYXRyaXgoKQotewotICAgIHJldHVybiBtX21hdDsKLX0KLQotY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBTVkdNYXRyaXg6Om1hdHJpeCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbWF0OwotfQot
Ci12b2lkIFNWR01hdHJpeDo6cmVzZXQoKQotewotICAgIG1fbWF0LnJlc2V0KCk7Ci19Ci0KLXZv
aWQgU1ZHTWF0cml4OjpyZW1vdmVTY2FsZShkb3VibGUqIHhTY2FsZSwgZG91YmxlKiB5U2NhbGUp
Ci17Ci0gICAgZG91YmxlIHN4ID0gc3FydChhKCkgKiBhKCkgKyBiKCkgKiBiKCkpOwotICAgIGRv
dWJsZSBzeSA9IHNxcnQoYygpICogYygpICsgZCgpICogZCgpKTsKLQotICAgIC8vIFJlbW92ZSB0
aGUgc2NhbGluZyBmcm9tIHRoZSBtYXRyaXguCi0gICAgc2V0QShhKCkgLyBzeCk7IHNldEIoYigp
IC8gc3gpOwotICAgIHNldEMoYygpIC8gc3kpOyBzZXREKGQoKSAvIHN5KTsKLQotICAgICp4U2Nh
bGUgPSBzeDsKLSAgICAqeVNjYWxlID0gc3k7Ci19Ci0KLS8vIHZpbTp0cz00Om5vZXQKLSNlbmRp
ZiAvLyBTVkdfU1VQUE9SVAotCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXRyaXguaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXRyaXguaAkocmV2aXNpb24gMTgx
NjIpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXRyaXguaAkod29ya2luZyBjb3B5KQpAQCAt
MSwxMDcgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBa
aW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+Ci0gICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1
IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
S0RFIHByb2plY3QKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQot
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
LSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcs
IFVTQS4KLSovCi0KLSNpZm5kZWYgS1NWR19TVkdNYXRyaXhJbXBsX0gKLSNkZWZpbmUgS1NWR19T
VkdNYXRyaXhJbXBsX0gKLSNpZmRlZiBTVkdfU1VQUE9SVAotCi0jaW5jbHVkZSAiQWZmaW5lVHJh
bnNmb3JtLmgiCi0jaW5jbHVkZSAiU2hhcmVkLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
ICAgIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0KLSAgICBjbGFzcyBTVkdNYXRyaXggOiBw
dWJsaWMgU2hhcmVkPFNWR01hdHJpeD4geyAKLSAgICBwdWJsaWM6Ci0gICAgICAgIFNWR01hdHJp
eCgpOwotICAgICAgICBTVkdNYXRyaXgoZG91YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUgYywgZG91
YmxlIGQsIGRvdWJsZSBlLCBkb3VibGUgZik7Ci0gICAgICAgIFNWR01hdHJpeChjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIG1hdCk7Ci0gICAgICAgIHZpcnR1YWwgflNWR01hdHJpeCgpOwotCi0gICAg
ICAgIHZvaWQgc2V0QShkb3VibGUpOwotICAgICAgICBkb3VibGUgYSgpIGNvbnN0OwotCi0gICAg
ICAgIHZvaWQgc2V0Qihkb3VibGUpOwotICAgICAgICBkb3VibGUgYigpIGNvbnN0OwotCi0gICAg
ICAgIHZvaWQgc2V0Qyhkb3VibGUpOwotICAgICAgICBkb3VibGUgYygpIGNvbnN0OwotCi0gICAg
ICAgIHZvaWQgc2V0RChkb3VibGUpOwotICAgICAgICBkb3VibGUgZCgpIGNvbnN0OwotCi0gICAg
ICAgIHZvaWQgc2V0RShkb3VibGUpOwotICAgICAgICBkb3VibGUgZSgpIGNvbnN0OwotCi0gICAg
ICAgIHZvaWQgc2V0Rihkb3VibGUpOwotICAgICAgICBkb3VibGUgZigpIGNvbnN0OwotCi0gICAg
ICAgIHZvaWQgY29weShjb25zdCBTVkdNYXRyaXgqKTsKLQotICAgICAgICBTVkdNYXRyaXgqIGlu
dmVyc2UoRXhjZXB0aW9uQ29kZSYpOwotCi0gICAgICAgIC8vIFByZS1tdWx0aXBsaWVkIG9wZXJh
dGlvbnMsIGFzIHBlciB0aGUgc3BlY3MuCi0gICAgICAgIFNWR01hdHJpeCogbXVsdGlwbHkoY29u
c3QgU1ZHTWF0cml4Kik7Ci0gICAgICAgIFNWR01hdHJpeCogdHJhbnNsYXRlKGRvdWJsZSB4LCBk
b3VibGUgeSk7Ci0gICAgICAgIFNWR01hdHJpeCogc2NhbGUoZG91YmxlIHNjYWxlRmFjdG9yKTsK
LSAgICAgICAgU1ZHTWF0cml4KiBzY2FsZU5vblVuaWZvcm0oZG91YmxlIHNjYWxlRmFjdG9yWCwg
ZG91YmxlIHNjYWxlRmFjdG9yWSk7Ci0gICAgICAgIFNWR01hdHJpeCogcm90YXRlKGRvdWJsZSBh
bmdsZSk7Ci0gICAgICAgIFNWR01hdHJpeCogcm90YXRlRnJvbVZlY3Rvcihkb3VibGUgeCwgZG91
YmxlIHksIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgU1ZHTWF0cml4KiBmbGlwWCgpOwotICAg
ICAgICBTVkdNYXRyaXgqIGZsaXBZKCk7Ci0gICAgICAgIFNWR01hdHJpeCogc2tld1goZG91Ymxl
IGFuZ2xlKTsKLSAgICAgICAgU1ZHTWF0cml4KiBza2V3WShkb3VibGUgYW5nbGUpOwotCi0gICAg
ICAgIC8vIFBvc3QtbXVsdGlwbGllZCBvcGVyYXRpb25zCi0gICAgICAgIFNWR01hdHJpeCogcG9z
dE11bHRpcGx5KGNvbnN0IFNWR01hdHJpeCopOwotICAgICAgICBTVkdNYXRyaXgqIHBvc3RUcmFu
c2xhdGUoZG91YmxlIHgsIGRvdWJsZSB5KTsKLSAgICAgICAgU1ZHTWF0cml4KiBwb3N0U2NhbGUo
ZG91YmxlIHNjYWxlRmFjdG9yKTsKLSAgICAgICAgU1ZHTWF0cml4KiBwb3N0U2NhbGVOb25Vbmlm
b3JtKGRvdWJsZSBzY2FsZUZhY3RvclgsIGRvdWJsZSBzY2FsZUZhY3RvclkpOwotICAgICAgICBT
VkdNYXRyaXgqIHBvc3RSb3RhdGUoZG91YmxlIGFuZ2xlKTsKLSAgICAgICAgU1ZHTWF0cml4KiBw
b3N0Um90YXRlRnJvbVZlY3Rvcihkb3VibGUgeCwgZG91YmxlIHkpOwotICAgICAgICBTVkdNYXRy
aXgqIHBvc3RGbGlwWCgpOwotICAgICAgICBTVkdNYXRyaXgqIHBvc3RGbGlwWSgpOwotICAgICAg
ICBTVkdNYXRyaXgqIHBvc3RTa2V3WChkb3VibGUgYW5nbGUpOwotICAgICAgICBTVkdNYXRyaXgq
IHBvc3RTa2V3WShkb3VibGUgYW5nbGUpOwotCi0gICAgICAgIHZvaWQgcmVzZXQoKTsKLQotICAg
ICAgICAvLyBLU1ZHIGhlbHBlciBtZXRob2QKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtJiBtYXRy
aXgoKTsKLSAgICAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBtYXRyaXgoKSBjb25zdDsKLQot
ICAgICAgICAvLyBEZXRlcm1pbmUgdGhlIHNjYWxpbmcgY29tcG9uZW50IG9mIHRoZSBtYXRyaXgg
YW5kIGZhY3RvciBpdCBvdXQuIEFmdGVyCi0gICAgICAgIC8vIHRoaXMgb3BlcmF0aW9uLCB0aGUg
bWF0cml4IGhhcyB4IGFuZCB5IHNjYWxlIG9mIG9uZS4KLSAgICAgICAgdm9pZCByZW1vdmVTY2Fs
ZShkb3VibGUqIHhTY2FsZSwgZG91YmxlKiB5U2NhbGUpOwotCi0gICAgcHJpdmF0ZToKLSAgICAg
ICAgdm9pZCBzZXRNYXRyaXgoY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7Ci0gICAgICAgIEFmZmlu
ZVRyYW5zZm9ybSBtX21hdDsKLSAgICB9OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBTVkdfU1VQUE9SVAotI2VuZGlmIC8vIEtTVkdfU1ZHTWF0cml4SW1wbF9ICi0KLS8v
IHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hdHJpeC5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWF0cml4LmlkbAkocmV2aXNpb24gMTgx
NjIpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXRyaXguaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0yNCw3ICsyNCw3IEBACiAKIG1vZHVsZSBzdmcgewogCi0gICAgaW50ZXJmYWNlIFtDb25kaXRp
b25hbD1TVkddIFNWR01hdHJpeCB7IAorICAgIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9U1ZHLCBQ
T0RUeXBlPUFmZmluZVRyYW5zZm9ybV0gU1ZHTWF0cml4IHsgCiAgICAgICAgIGF0dHJpYnV0ZSBm
bG9hdCBhOwogICAgICAgICBhdHRyaWJ1dGUgZmxvYXQgYjsKICAgICAgICAgYXR0cmlidXRlIGZs
b2F0IGM7CkBAIC0zMywxMyArMzMsMTMgQEAgbW9kdWxlIHN2ZyB7CiAgICAgICAgIGF0dHJpYnV0
ZSBmbG9hdCBmOwogCiAgICAgICAgIFNWR01hdHJpeCBtdWx0aXBseShpbiBTVkdNYXRyaXggc2Vj
b25kTWF0cml4KTsKLSAgICAgICAgU1ZHTWF0cml4IGludmVyc2UoKQorICAgICAgICBbQ3VzdG9t
XSBTVkdNYXRyaXggaW52ZXJzZSgpCiAgICAgICAgICAgICByYWlzZXMoU1ZHRXhjZXB0aW9uKTsK
ICAgICAgICAgU1ZHTWF0cml4IHRyYW5zbGF0ZShpbiBmbG9hdCB4LCBpbiBmbG9hdCB5KTsKICAg
ICAgICAgU1ZHTWF0cml4IHNjYWxlKGluIGZsb2F0IHNjYWxlRmFjdG9yKTsKICAgICAgICAgU1ZH
TWF0cml4IHNjYWxlTm9uVW5pZm9ybShpbiBmbG9hdCBzY2FsZUZhY3RvclgsIGluIGZsb2F0IHNj
YWxlRmFjdG9yWSk7CiAgICAgICAgIFNWR01hdHJpeCByb3RhdGUoaW4gZmxvYXQgYW5nbGUpOwot
ICAgICAgICBTVkdNYXRyaXggcm90YXRlRnJvbVZlY3RvcihpbiBmbG9hdCB4LCBpbiBmbG9hdCB5
KQorICAgICAgICBbQ3VzdG9tXSBTVkdNYXRyaXggcm90YXRlRnJvbVZlY3RvcihpbiBmbG9hdCB4
LCBpbiBmbG9hdCB5KQogICAgICAgICAgICAgcmFpc2VzKFNWR0V4Y2VwdGlvbik7CiAgICAgICAg
IFNWR01hdHJpeCBmbGlwWCgpOwogICAgICAgICBTVkdNYXRyaXggZmxpcFkoKTsKSW5kZXg6IFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR051bWJlckxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR051bWJlckxpc3QuY3BwCShyZXZpc2lvbiAxODE2MikKKysrIFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR051bWJlckxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw2
IEBACiAjaWZkZWYgU1ZHX1NVUFBPUlQKICNpbmNsdWRlICJTVkdOdW1iZXJMaXN0LmgiCiAKLSNp
bmNsdWRlICJTVkdNYXRyaXguaCIKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdHRlcm5FbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5j
cHAJKHJldmlzaW9uIDE4MTYyKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0dGVybkVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiUmVuZGVy
U1ZHQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiU1ZHSGVscGVyLmgiCiAjaW5jbHVkZSAiU1ZHTGVu
Z3RoLmgiCi0jaW5jbHVkZSAiU1ZHTWF0cml4LmgiCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3Jt
LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCiAj
aW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgpAQCAtMjk3LDcgKzI5Nyw3IEBAIHZvaWQgU1ZH
UGF0dGVybkVsZW1lbnQ6Om5vdGlmeUF0dHJpYnV0ZUMKIAogICAgIEFmZmluZVRyYW5zZm9ybSBw
YXR0ZXJuVHJhbnNmb3JtTWF0cml4OwogICAgIGlmIChwYXR0ZXJuVHJhbnNmb3JtKCktPm51bWJl
ck9mSXRlbXMoKSA+IDApCi0gICAgICAgIHBhdHRlcm5UcmFuc2Zvcm1NYXRyaXggPSBwYXR0ZXJu
VHJhbnNmb3JtKCktPmNvbnNvbGlkYXRlKCktPm1hdHJpeCgpLT5tYXRyaXgoKTsKKyAgICAgICAg
cGF0dGVyblRyYW5zZm9ybU1hdHJpeCA9IHBhdHRlcm5UcmFuc2Zvcm0oKS0+Y29uc29saWRhdGUo
KS0+bWF0cml4KCk7CiAKIAogICAgIFNWR1BhdHRlcm5FbGVtZW50KiBub25Db25zdFRoaXMgPSBj
b25zdF9jYXN0PFNWR1BhdHRlcm5FbGVtZW50Kj4odGhpcyk7CkBAIC0zMjgsMTQgKzMyOCwxMSBA
QCBTVkdSZXNvdXJjZSogU1ZHUGF0dGVybkVsZW1lbnQ6OmNhbnZhc1JlCiAgICAgcmV0dXJuIG1f
cGFpbnRTZXJ2ZXIuZ2V0KCk7CiB9CiAKLVNWR01hdHJpeCogU1ZHUGF0dGVybkVsZW1lbnQ6Omdl
dENUTSgpIGNvbnN0CitBZmZpbmVUcmFuc2Zvcm0gU1ZHUGF0dGVybkVsZW1lbnQ6OmdldENUTSgp
IGNvbnN0CiB7Ci0gICAgU1ZHTWF0cml4KiBtYXQgPSBTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdN
YXRyaXgoKTsKLSAgICBpZiAobWF0KSB7Ci0gICAgICAgIFJlZlB0cjxTVkdNYXRyaXg+IHZpZXdC
b3ggPSB2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKHdpZHRoKCktPnZhbHVlKCksIGhlaWdodCgpLT52
YWx1ZSgpKTsKLSAgICAgICAgbWF0LT5tdWx0aXBseSh2aWV3Qm94LmdldCgpKTsKLSAgICB9Ci0K
KyAgICBBZmZpbmVUcmFuc2Zvcm0gbWF0OworICAgIEFmZmluZVRyYW5zZm9ybSB2aWV3Qm94ID0g
dmlld0JveFRvVmlld1RyYW5zZm9ybSh3aWR0aCgpLT52YWx1ZSgpLCBoZWlnaHQoKS0+dmFsdWUo
KSk7CisgICAgbWF0ICo9IHZpZXdCb3g7CiAgICAgcmV0dXJuIG1hdDsKIH0KIApJbmRleDogV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCShyZXZpc2lvbiAxODE2MikKKysrIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcg
KzY2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCBTVkdSZXNvdXJjZSog
Y2FudmFzUmVzb3VyY2UoKTsKIAogICAgICAgICAvLyAndmlydHVhbCBTVkdMb2NhdGFibGUnIGZ1
bmN0aW9ucwotICAgICAgICB2aXJ0dWFsIFNWR01hdHJpeCogZ2V0Q1RNKCkgY29uc3Q7CisgICAg
ICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGdldENUTSgpIGNvbnN0OwogCiAgICAgcHJvdGVj
dGVkOgogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdV
UklSZWZlcmVuY2UsIFN0cmluZywgSHJlZiwgaHJlZikKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR1BvaW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQb2ludC5p
ZGwJKHJldmlzaW9uIDE4MTYyKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUG9pbnQuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCw3IEBAIG1vZHVsZSBzdmcgewogICAgICAgICAgICAg
ICAgICBhdHRyaWJ1dGUgZmxvYXQgeQogICAgICAgICAgICAgICAgICAgICAgc2V0dGVyIHJhaXNl
cyhET01FeGNlcHRpb24pOwogCi0gICAgICAgIC8vIEZJWE1FIC0gUmVlbmFibGUgdGhpcyBvbmNl
IFNWR01hdHJpeCBpcyBjb252ZXJ0ZWQgdG8gQWZmaW5lVHJhbnNmb3JtCi0gICAgICAgIC8vU1ZH
UG9pbnQgbWF0cml4VHJhbnNmb3JtKGluIFNWR01hdHJpeCBtYXRyaXgpOworICAgICAgICBTVkdQ
b2ludCBtYXRyaXhUcmFuc2Zvcm0oaW4gU1ZHTWF0cml4IG1hdHJpeCk7CiAgICAgfTsKIAogfQpJ
bmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHAJKHJl
dmlzaW9uIDE4MTYyKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRp
by5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDYgQEAKICNpZmRlZiBTVkdfU1VQUE9S
VAogI2luY2x1ZGUgIlNWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaCIKIAotI2luY2x1ZGUgIlNWR01h
dHJpeC5oIgogI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMTAxLDEyICsxMDAsMTIgQEAgdm9pZCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpwYXJz
ZVByZXNlcgogICAgICAgICBtX2NvbnRleHQtPm5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpOwogfQog
Ci1TVkdNYXRyaXgqIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OmdldENUTShmbG9hdCBsb2dpY1gs
IGZsb2F0IGxvZ2ljWSwKK0FmZmluZVRyYW5zZm9ybSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpn
ZXRDVE0oZmxvYXQgbG9naWNYLCBmbG9hdCBsb2dpY1ksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmbG9hdCBsb2dpY1dpZHRoLCBmbG9hdCBsb2dpY0hlaWdodCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IC8qcGh5c1gq
LywgZmxvYXQgLypwaHlzWSovLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmxvYXQgcGh5c1dpZHRoLCBmbG9hdCBwaHlzSGVpZ2h0KQogewotICAgIFNWR01hdHJp
eCogdGVtcCA9IFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR01hdHJpeCgpOworICAgIEFmZmluZVRy
YW5zZm9ybSB0ZW1wOwogCiAgICAgaWYgKGFsaWduKCkgPT0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFU
SU9fVU5LTk9XTikKICAgICAgICAgcmV0dXJuIHRlbXA7CkBAIC0xMTUsMjYgKzExNCwyNiBAQCBT
VkdNYXRyaXgqIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OmdldENUCiAgICAgZmxvYXQgc3ZnYXIg
PSBwaHlzV2lkdGggLyBwaHlzSGVpZ2h0OwogCiAgICAgaWYgKGFsaWduKCkgPT0gU1ZHX1BSRVNF
UlZFQVNQRUNUUkFUSU9fTk9ORSkgewotICAgICAgICB0ZW1wLT5zY2FsZU5vblVuaWZvcm0ocGh5
c1dpZHRoIC8gbG9naWNXaWR0aCwgcGh5c0hlaWdodCAvIGxvZ2ljSGVpZ2h0KTsKLSAgICAgICAg
dGVtcC0+dHJhbnNsYXRlKC1sb2dpY1gsIC1sb2dpY1kpOworICAgICAgICB0ZW1wLnNjYWxlKHBo
eXNXaWR0aCAvIGxvZ2ljV2lkdGgsIHBoeXNIZWlnaHQgLyBsb2dpY0hlaWdodCk7CisgICAgICAg
IHRlbXAudHJhbnNsYXRlKC1sb2dpY1gsIC1sb2dpY1kpOwogICAgIH0gZWxzZSBpZiAodnBhciA8
IHN2Z2FyICYmIChtZWV0T3JTbGljZSgpID09IFNWR19NRUVUT1JTTElDRV9NRUVUKSB8fCB2cGFy
ID49IHN2Z2FyICYmIChtZWV0T3JTbGljZSgpID09IFNWR19NRUVUT1JTTElDRV9TTElDRSkpIHsK
LSAgICAgICAgdGVtcC0+c2NhbGUocGh5c0hlaWdodCAvIGxvZ2ljSGVpZ2h0KTsKKyAgICAgICAg
dGVtcC5zY2FsZShwaHlzSGVpZ2h0IC8gbG9naWNIZWlnaHQsIHBoeXNIZWlnaHQgLyBsb2dpY0hl
aWdodCk7CiAKICAgICAgICAgaWYgKGFsaWduKCkgPT0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9f
WE1JTllNSU4gfHwgYWxpZ24oKSA9PSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1JRCB8
fCBhbGlnbigpID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUFYKQotICAgICAgICAg
ICAgdGVtcC0+dHJhbnNsYXRlKC1sb2dpY1gsIC1sb2dpY1kpOworICAgICAgICAgICAgdGVtcC50
cmFuc2xhdGUoLWxvZ2ljWCwgLWxvZ2ljWSk7CiAgICAgICAgIGVsc2UgaWYgKGFsaWduKCkgPT0g
U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNSU4gfHwgYWxpZ24oKSA9PSBTVkdfUFJFU0VS
VkVBU1BFQ1RSQVRJT19YTUlEWU1JRCB8fCBhbGlnbigpID09IFNWR19QUkVTRVJWRUFTUEVDVFJB
VElPX1hNSURZTUFYKQotICAgICAgICAgICAgdGVtcC0+dHJhbnNsYXRlKC1sb2dpY1ggLSAobG9n
aWNXaWR0aCAtIHBoeXNXaWR0aCAqIGxvZ2ljSGVpZ2h0IC8gcGh5c0hlaWdodCkgLyAyLCAtbG9n
aWNZKTsKKyAgICAgICAgICAgIHRlbXAudHJhbnNsYXRlKC1sb2dpY1ggLSAobG9naWNXaWR0aCAt
IHBoeXNXaWR0aCAqIGxvZ2ljSGVpZ2h0IC8gcGh5c0hlaWdodCkgLyAyLCAtbG9naWNZKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgdGVtcC0+dHJhbnNsYXRlKC1sb2dpY1ggLSAobG9naWNX
aWR0aCAtIHBoeXNXaWR0aCAqIGxvZ2ljSGVpZ2h0IC8gcGh5c0hlaWdodCksIC1sb2dpY1kpOwor
ICAgICAgICAgICAgdGVtcC50cmFuc2xhdGUoLWxvZ2ljWCAtIChsb2dpY1dpZHRoIC0gcGh5c1dp
ZHRoICogbG9naWNIZWlnaHQgLyBwaHlzSGVpZ2h0KSwgLWxvZ2ljWSk7CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgdGVtcC0+c2NhbGUocGh5c1dpZHRoIC8gbG9naWNXaWR0aCk7CisgICAgICAgIHRl
bXAuc2NhbGUocGh5c1dpZHRoIC8gbG9naWNXaWR0aCwgcGh5c1dpZHRoIC8gbG9naWNXaWR0aCk7
CiAKICAgICAgICAgaWYgKGFsaWduKCkgPT0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllN
SU4gfHwgYWxpZ24oKSA9PSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JTiB8fCBhbGln
bigpID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUlOKQotICAgICAgICAgICAgdGVt
cC0+dHJhbnNsYXRlKC1sb2dpY1gsIC1sb2dpY1kpOworICAgICAgICAgICAgdGVtcC50cmFuc2xh
dGUoLWxvZ2ljWCwgLWxvZ2ljWSk7CiAgICAgICAgIGVsc2UgaWYgKGFsaWduKCkgPT0gU1ZHX1BS
RVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNSUQgfHwgYWxpZ24oKSA9PSBTVkdfUFJFU0VSVkVBU1BF
Q1RSQVRJT19YTUlEWU1JRCB8fCBhbGlnbigpID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hN
QVhZTUlEKQotICAgICAgICAgICAgdGVtcC0+dHJhbnNsYXRlKC1sb2dpY1gsIC1sb2dpY1kgLSAo
bG9naWNIZWlnaHQgLSBwaHlzSGVpZ2h0ICogbG9naWNXaWR0aCAvIHBoeXNXaWR0aCkgLyAyKTsK
KyAgICAgICAgICAgIHRlbXAudHJhbnNsYXRlKC1sb2dpY1gsIC1sb2dpY1kgLSAobG9naWNIZWln
aHQgLSBwaHlzSGVpZ2h0ICogbG9naWNXaWR0aCAvIHBoeXNXaWR0aCkgLyAyKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgdGVtcC0+dHJhbnNsYXRlKC1sb2dpY1gsIC1sb2dpY1kgLSAobG9n
aWNIZWlnaHQgLSBwaHlzSGVpZ2h0ICogbG9naWNXaWR0aCAvIHBoeXNXaWR0aCkpOworICAgICAg
ICAgICAgdGVtcC50cmFuc2xhdGUoLWxvZ2ljWCwgLWxvZ2ljWSAtIChsb2dpY0hlaWdodCAtIHBo
eXNIZWlnaHQgKiBsb2dpY1dpZHRoIC8gcGh5c1dpZHRoKSk7CiAgICAgfQogCiAgICAgcmV0dXJu
IHRlbXA7CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5o
CShyZXZpc2lvbiAxODE2MikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0
UmF0aW8uaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgY2xhc3MgU3RyaW5nOwotICAgIGNsYXNzIFNWR01hdHJpeDsKKyAgICBjbGFz
cyBBZmZpbmVUcmFuc2Zvcm07CiAgICAgY2xhc3MgU1ZHU3R5bGVkRWxlbWVudDsKIAogICAgIGNs
YXNzIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8gOiBwdWJsaWMgU2hhcmVkPFNWR1ByZXNlcnZlQXNw
ZWN0UmF0aW8+IHsgCkBAIC02NCwxMCArNjQsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2b2lkIHNldE1lZXRPclNsaWNlKHVuc2lnbmVkIHNob3J0KTsKICAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgbWVldE9yU2xpY2UoKSBjb25zdDsKICAgICAgICAgCi0gICAgICAgIFNWR01hdHJp
eCogZ2V0Q1RNKGZsb2F0IGxvZ2ljWCwgZmxvYXQgbG9naWNZLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbG9hdCBsb2dpY1dpZHRoLCBmbG9hdCBsb2dpY0hlaWdodCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmxvYXQgcGh5c1gsIGZsb2F0IHBoeXNZLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICBmbG9hdCBwaHlzV2lkdGgsIGZsb2F0IHBoeXNIZWlnaHQpOworICAgICAgICBB
ZmZpbmVUcmFuc2Zvcm0gZ2V0Q1RNKGZsb2F0IGxvZ2ljWCwgZmxvYXQgbG9naWNZLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGxvZ2ljV2lkdGgsIGZsb2F0IGxvZ2ljSGVp
Z2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHBoeXNYLCBmbG9hdCBw
aHlzWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBwaHlzV2lkdGgsIGZs
b2F0IHBoeXNIZWlnaHQpOwogCiAgICAgICAgIC8vIEhlbHBlcgogICAgICAgICB2b2lkIHBhcnNl
UHJlc2VydmVBc3BlY3RSYXRpbyhjb25zdCBTdHJpbmcmKTsKSW5kZXg6IFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNpb24gMTgxNjIpCisr
KyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiU1ZHUGFpbnRTZXJ2ZXJSYWRpYWxH
cmFkaWVudC5oIgogI2luY2x1ZGUgIlNWR0hlbHBlci5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aC5o
IgotI2luY2x1ZGUgIlNWR01hdHJpeC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVk
ZSAiU1ZHU3RvcEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm0uaCIKQEAgLTk3LDcg
Kzk2LDcgQEAgdm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmJ1aWxkR3JhZAogICAgIFJl
ZlB0cjxTVkdQYWludFNlcnZlclJhZGlhbEdyYWRpZW50PiBncmFkID0gV1RGOjpzdGF0aWNfcG9p
bnRlcl9jYXN0PFNWR1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnQ+KF9ncmFkKTsKICAgICBBZmZp
bmVUcmFuc2Zvcm0gbWF0OwogICAgIGlmIChncmFkaWVudFRyYW5zZm9ybSgpLT5udW1iZXJPZkl0
ZW1zKCkgPiAwKQotICAgICAgICBtYXQgPSBncmFkaWVudFRyYW5zZm9ybSgpLT5jb25zb2xpZGF0
ZSgpLT5tYXRyaXgoKS0+bWF0cml4KCk7CisgICAgICAgIG1hdCA9IGdyYWRpZW50VHJhbnNmb3Jt
KCktPmNvbnNvbGlkYXRlKCktPm1hdHJpeCgpOwogCiAgICAgRGVwcmVjYXRlZFN0cmluZyByZWYg
PSBocmVmKCkuZGVwcmVjYXRlZFN0cmluZygpOwogICAgIFJlZlB0cjxTVkdQYWludFNlcnZlcj4g
cHNlcnZlciA9IGdldFBhaW50U2VydmVyQnlJZChkb2N1bWVudCgpLCByZWYubWlkKDEpKTsKSW5k
ZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxODE2MikKKysrIFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3
ICszMyw3IEBACiAjaW5jbHVkZSAiUmVuZGVyU1ZHQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiU1ZH
QW5nbGUuaCIKICNpbmNsdWRlICJTVkdMZW5ndGguaCIKLSNpbmNsdWRlICJTVkdNYXRyaXguaCIK
KyNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2lu
Y2x1ZGUgIlNWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm0u
aCIKQEAgLTEwOCw5ICsxMDgsOSBAQCBGbG9hdFJlY3QgU1ZHU1ZHRWxlbWVudDo6dmlld3BvcnQo
KSBjb25zCiAgICAgZG91YmxlIF95ID0geSgpLT52YWx1ZSgpOwogICAgIGRvdWJsZSB3ID0gd2lk
dGgoKS0+dmFsdWUoKTsKICAgICBkb3VibGUgaCA9IGhlaWdodCgpLT52YWx1ZSgpOwotICAgIFJl
ZlB0cjxTVkdNYXRyaXg+IHZpZXdCb3ggPSB2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKHcsIGgpOwot
ICAgIHZpZXdCb3gtPm1hdHJpeCgpLm1hcChfeCwgX3ksICZfeCwgJl95KTsKLSAgICB2aWV3Qm94
LT5tYXRyaXgoKS5tYXAodywgaCwgJncsICZoKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gdmlld0Jv
eCA9IHZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0odywgaCk7CisgICAgdmlld0JveC5tYXAoX3gsIF95
LCAmX3gsICZfeSk7CisgICAgdmlld0JveC5tYXAodywgaCwgJncsICZoKTsKICAgICByZXR1cm4g
RmxvYXRSZWN0KF94LCBfeSwgdywgaCk7CiB9CiAKQEAgLTI5MSw5ICsyOTEsOSBAQCBGbG9hdFBv
aW50IFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR1BvaW50CiAgICAgcmV0dXJuIEZsb2F0UG9pbnQo
KTsKIH0KIAotU1ZHTWF0cml4KiBTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdNYXRyaXgoKQorQWZm
aW5lVHJhbnNmb3JtIFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR01hdHJpeCgpCiB7Ci0gICAgcmV0
dXJuIG5ldyBTVkdNYXRyaXgoKTsKKyAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7CiB9CiAK
IEZsb2F0UmVjdCBTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdSZWN0KCkKQEAgLTMwNiwzOCArMzA2
LDM0IEBAIFNWR1RyYW5zZm9ybSogU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHVHIKICAgICByZXR1
cm4gbmV3IFNWR1RyYW5zZm9ybSgpOwogfQogCi1TVkdUcmFuc2Zvcm0qIFNWR1NWR0VsZW1lbnQ6
OmNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgoU1ZHTWF0cml4KiBtYXRyaXgpCitTVkdUcmFu
c2Zvcm0qIFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgoY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBtYXRyaXgpCiB7ICAgIAogICAgIFNWR1RyYW5zZm9ybSogb2JqID0g
U1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHVHJhbnNmb3JtKCk7CiAgICAgb2JqLT5zZXRNYXRyaXgo
bWF0cml4KTsKICAgICByZXR1cm4gb2JqOwogfQogCi1TVkdNYXRyaXgqIFNWR1NWR0VsZW1lbnQ6
OmdldENUTSgpIGNvbnN0CitBZmZpbmVUcmFuc2Zvcm0gU1ZHU1ZHRWxlbWVudDo6Z2V0Q1RNKCkg
Y29uc3QKIHsKLSAgICBTVkdNYXRyaXgqIG1hdCA9IGNyZWF0ZVNWR01hdHJpeCgpOwotICAgIGlm
IChtYXQpIHsKLSAgICAgICAgbWF0LT50cmFuc2xhdGUoeCgpLT52YWx1ZSgpLCB5KCktPnZhbHVl
KCkpOwotCi0gICAgICAgIGlmIChhdHRyaWJ1dGVzKCktPmdldE5hbWVkSXRlbShTVkdOYW1lczo6
dmlld0JveEF0dHIpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8U1ZHTWF0cml4PiB2aWV3Qm94ID0g
dmlld0JveFRvVmlld1RyYW5zZm9ybSh3aWR0aCgpLT52YWx1ZSgpLCBoZWlnaHQoKS0+dmFsdWUo
KSk7Ci0gICAgICAgICAgICBtYXQtPm11bHRpcGx5KHZpZXdCb3guZ2V0KCkpOwotICAgICAgICB9
CisgICAgQWZmaW5lVHJhbnNmb3JtIG1hdDsKKyAgICBtYXQudHJhbnNsYXRlKHgoKS0+dmFsdWUo
KSwgeSgpLT52YWx1ZSgpKTsKKworICAgIGlmIChhdHRyaWJ1dGVzKCktPmdldE5hbWVkSXRlbShT
VkdOYW1lczo6dmlld0JveEF0dHIpKSB7CisgICAgICAgIEFmZmluZVRyYW5zZm9ybSB2aWV3Qm94
ID0gdmlld0JveFRvVmlld1RyYW5zZm9ybSh3aWR0aCgpLT52YWx1ZSgpLCBoZWlnaHQoKS0+dmFs
dWUoKSk7CisgICAgICAgIG1hdCA9IHZpZXdCb3ggKiBtYXQ7CiAgICAgfQogCiAgICAgcmV0dXJu
IG1hdDsKIH0KIAotU1ZHTWF0cml4KiBTVkdTVkdFbGVtZW50OjpnZXRTY3JlZW5DVE0oKSBjb25z
dAorQWZmaW5lVHJhbnNmb3JtIFNWR1NWR0VsZW1lbnQ6OmdldFNjcmVlbkNUTSgpIGNvbnN0CiB7
Ci0gICAgU1ZHTWF0cml4KiBtYXQgPSBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50OjpnZXRTY3Jl
ZW5DVE0oKTsKLSAgICBpZiAobWF0KSB7Ci0gICAgICAgIG1hdC0+dHJhbnNsYXRlKHgoKS0+dmFs
dWUoKSwgeSgpLT52YWx1ZSgpKTsKLQotICAgICAgICBpZiAoYXR0cmlidXRlcygpLT5nZXROYW1l
ZEl0ZW0oU1ZHTmFtZXM6OnZpZXdCb3hBdHRyKSkgewotICAgICAgICAgICAgUmVmUHRyPFNWR01h
dHJpeD4gdmlld0JveCA9IHZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0od2lkdGgoKS0+dmFsdWUoKSwg
aGVpZ2h0KCktPnZhbHVlKCkpOwotICAgICAgICAgICAgbWF0LT5tdWx0aXBseSh2aWV3Qm94Lmdl
dCgpKTsKLSAgICAgICAgfQorICAgIEFmZmluZVRyYW5zZm9ybSBtYXQgPSBTVkdTdHlsZWRMb2Nh
dGFibGVFbGVtZW50OjpnZXRTY3JlZW5DVE0oKTsKKyAgICBtYXQudHJhbnNsYXRlKHgoKS0+dmFs
dWUoKSwgeSgpLT52YWx1ZSgpKTsKKworICAgIGlmIChhdHRyaWJ1dGVzKCktPmdldE5hbWVkSXRl
bShTVkdOYW1lczo6dmlld0JveEF0dHIpKSB7CisgICAgICAgIEFmZmluZVRyYW5zZm9ybSB2aWV3
Qm94ID0gdmlld0JveFRvVmlld1RyYW5zZm9ybSh3aWR0aCgpLT52YWx1ZSgpLCBoZWlnaHQoKS0+
dmFsdWUoKSk7CisgICAgICAgIG1hdCA9IHZpZXdCb3ggKiBtYXQ7CiAgICAgfQogCiAgICAgcmV0
dXJuIG1hdDsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmgJKHJldmlzaW9uIDE4MTYy
KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSw3ICszNSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiB7CiAgICAgY2xhc3MgU1ZHQW5nbGU7
CiAgICAgY2xhc3MgU1ZHTGVuZ3RoOwotICAgIGNsYXNzIFNWR01hdHJpeDsKICAgICBjbGFzcyBT
VkdUcmFuc2Zvcm07CiAgICAgY2xhc3MgU1ZHTGVuZ3RoOwogICAgIGNsYXNzIFRpbWVTY2hlZHVs
ZXI7CkBAIC0xMDgsMTYgKzEwNywxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBzdGF0
aWMgU1ZHTGVuZ3RoKiBjcmVhdGVTVkdMZW5ndGgoKTsKICAgICAgICAgc3RhdGljIFNWR0FuZ2xl
KiBjcmVhdGVTVkdBbmdsZSgpOwogICAgICAgICBzdGF0aWMgRmxvYXRQb2ludCBjcmVhdGVTVkdQ
b2ludCgpOwotICAgICAgICBzdGF0aWMgU1ZHTWF0cml4KiBjcmVhdGVTVkdNYXRyaXgoKTsKKyAg
ICAgICAgc3RhdGljIEFmZmluZVRyYW5zZm9ybSBjcmVhdGVTVkdNYXRyaXgoKTsKICAgICAgICAg
c3RhdGljIEZsb2F0UmVjdCBjcmVhdGVTVkdSZWN0KCk7CiAgICAgICAgIHN0YXRpYyBTVkdUcmFu
c2Zvcm0qIGNyZWF0ZVNWR1RyYW5zZm9ybSgpOwotICAgICAgICBzdGF0aWMgU1ZHVHJhbnNmb3Jt
KiBjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4KFNWR01hdHJpeCopOworICAgICAgICBzdGF0
aWMgU1ZHVHJhbnNmb3JtKiBjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4KGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0
ZShNYXBwZWRBdHRyaWJ1dGUqKTsKIAogICAgICAgICAvLyAndmlydHVhbCBTVkdMb2NhdGFibGUn
IGZ1bmN0aW9ucwotICAgICAgICB2aXJ0dWFsIFNWR01hdHJpeCogZ2V0Q1RNKCkgY29uc3Q7Ci0g
ICAgICAgIHZpcnR1YWwgU1ZHTWF0cml4KiBnZXRTY3JlZW5DVE0oKSBjb25zdDsKKyAgICAgICAg
dmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gZ2V0Q1RNKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwg
QWZmaW5lVHJhbnNmb3JtIGdldFNjcmVlbkNUTSgpIGNvbnN0OwogCiAgICAgICAgIHZpcnR1YWwg
Ym9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gU3R5bGVk
RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KICAgICAgICAgdmlydHVhbCBSZW5k
ZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKSW5k
ZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODE2MikK
KysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiUmVuZGVyUGF0aC5oIgogI2luY2x1ZGUgIlNW
R0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdIZWxwZXIuaCIKLSNpbmNsdWRlICJTVkdNYXRyaXgu
aCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclN0eWxlLmgiCiAj
aW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5
bGVkTG9jYXRhYmxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MTYyKQorKysgV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIlJlbmRlclBhdGguaCIKICNpbmNsdWRlICJT
VkdFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHTWF0cml4LmgiCisjaW5jbHVkZSAiQWZmaW5lVHJh
bnNmb3JtLmgiCiAjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC01OCwxMiArNTgsMTIgQEAgRmxvYXRSZWN0IFNWR1N0eWxlZExvY2F0YWJsZUVsZW1l
bnQ6OmdldAogICAgIHJldHVybiBTVkdMb2NhdGFibGU6OmdldEJCb3godGhpcyk7CiB9CiAKLVNW
R01hdHJpeCogU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6Z2V0Q1RNKCkgY29uc3QKK0FmZmlu
ZVRyYW5zZm9ybSBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50OjpnZXRDVE0oKSBjb25zdAogewog
ICAgIHJldHVybiBTVkdMb2NhdGFibGU6OmdldENUTSh0aGlzKTsKIH0KIAotU1ZHTWF0cml4KiBT
VkdTdHlsZWRMb2NhdGFibGVFbGVtZW50OjpnZXRTY3JlZW5DVE0oKSBjb25zdAorQWZmaW5lVHJh
bnNmb3JtIFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQ6OmdldFNjcmVlbkNUTSgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIFNWR0xvY2F0YWJsZTo6Z2V0U2NyZWVuQ1RNKHRoaXMpOwogfQpJbmRleDog
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQuaAkocmV2aXNp
b24gMTgxNjIpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi0gICAgY2xhc3MgU1ZHTWF0cml4OwogICAgIGNsYXNzIFNWR0VsZW1lbnQ7CiAKICAgICBj
bGFzcyBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50IDogcHVibGljIFNWR1N0eWxlZEVsZW1lbnQs
IHZpcnR1YWwgcHVibGljIFNWR0xvY2F0YWJsZSB7CkBAIC00NCw4ICs0Myw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBTVkdFbGVtZW50KiBmYXJ0aGVzdFZpZXdwb3J0
RWxlbWVudCgpIGNvbnN0OwogCiAgICAgICAgIHZpcnR1YWwgRmxvYXRSZWN0IGdldEJCb3goKSBj
b25zdDsKLSAgICAgICAgdmlydHVhbCBTVkdNYXRyaXgqIGdldENUTSgpIGNvbnN0OwotICAgICAg
ICB2aXJ0dWFsIFNWR01hdHJpeCogZ2V0U2NyZWVuQ1RNKCkgY29uc3Q7CisgICAgICAgIHZpcnR1
YWwgQWZmaW5lVHJhbnNmb3JtIGdldENUTSgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIEFmZmlu
ZVRyYW5zZm9ybSBnZXRTY3JlZW5DVE0oKSBjb25zdDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODE2MikKKysrIFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIlJlbmRlclBhdGguaCIKICNpbmNsdWRlICJTVkdEb2N1
bWVudC5oIgogI2luY2x1ZGUgIlNWR0hlbHBlci5oIgotI2luY2x1ZGUgIlNWR01hdHJpeC5oIgor
I2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQu
aCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0LmgiCiAKQEAgLTUwLDE3ICs1MCwxNyBAQCBT
VkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6flNWR1N0eWxlCiAKIEFOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LCBTVkdUcmFuc2Zv
cm1MaXN0KiwgVHJhbnNmb3JtTGlzdCwgdHJhbnNmb3JtTGlzdCwgVHJhbnNmb3JtLCB0cmFuc2Zv
cm0sIFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyLmxvY2FsTmFtZSgpLCBtX3RyYW5zZm9ybS5nZXQo
KSkKIAotU1ZHTWF0cml4KiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6bG9jYWxNYXRy
aXgoKSBjb25zdAorQWZmaW5lVHJhbnNmb3JtIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50
Ojpsb2NhbE1hdHJpeCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGxhenlfY3JlYXRlPFNWR01hdHJp
eD4obV9sb2NhbE1hdHJpeCk7CisgICAgcmV0dXJuIG1fbG9jYWxNYXRyaXg7CiB9CiAKLVNWR01h
dHJpeCogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmdldENUTSgpIGNvbnN0CitBZmZp
bmVUcmFuc2Zvcm0gU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmdldENUTSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIFNWR1RyYW5zZm9ybWFibGU6OmdldENUTSh0aGlzKTsKIH0KIAotU1ZH
TWF0cml4KiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6Z2V0U2NyZWVuQ1RNKCkgY29u
c3QKK0FmZmluZVRyYW5zZm9ybSBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6Z2V0U2Ny
ZWVuQ1RNKCkgY29uc3QKIHsKICAgICByZXR1cm4gU1ZHVHJhbnNmb3JtYWJsZTo6Z2V0U2NyZWVu
Q1RNKHRoaXMpOwogfQpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFNWR1N0eWxlZFRyYW5zZm9ybWFi
bGVFbGVtZW50Ojp1cGRhCiAgICAgaWYobG9jYWxUcmFuc2Zvcm0pIHsKICAgICAgICAgbV9sb2Nh
bE1hdHJpeCA9IGxvY2FsVHJhbnNmb3JtLT5tYXRyaXgoKTsKICAgICAgICAgaWYgKHJlbmRlcmVy
KCkpIHsKLSAgICAgICAgICAgIHJlbmRlcmVyKCktPnNldExvY2FsVHJhbnNmb3JtKG1fbG9jYWxN
YXRyaXgtPm1hdHJpeCgpKTsKKyAgICAgICAgICAgIHJlbmRlcmVyKCktPnNldExvY2FsVHJhbnNm
b3JtKG1fbG9jYWxNYXRyaXgpOwogICAgICAgICAgICAgcmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlv
dXQodHJ1ZSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMTMsOCArMTEzLDggQEAgdm9pZCBTVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6YXR0YQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6
OmF0dGFjaCgpOwogCi0gICAgaWYgKHJlbmRlcmVyKCkgJiYgbV9sb2NhbE1hdHJpeCkKLSAgICAg
ICAgcmVuZGVyZXIoKS0+c2V0TG9jYWxUcmFuc2Zvcm0obV9sb2NhbE1hdHJpeC0+bWF0cml4KCkp
OworICAgIGlmIChyZW5kZXJlcigpICYmICFtX2xvY2FsTWF0cml4LmlzSWRlbnRpdHkoKSkKKyAg
ICAgICAgcmVuZGVyZXIoKS0+c2V0TG9jYWxUcmFuc2Zvcm0obV9sb2NhbE1hdHJpeCk7CiB9CiAK
IH0KSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJs
ZUVsZW1lbnQuaAkocmV2aXNpb24gMTgxNjIpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw4ICszNCw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBOb2RlOwogICAgIGNsYXNzIFN0cmluZ0lt
cGw7CiAgICAgY2xhc3MgU1ZHVHJhbnNmb3JtTGlzdDsKLSAgICBjbGFzcyBTVkdNYXRyaXg7Ci0g
ICAgY2xhc3MgU1ZHVHJhbnNmb3JtTGlzdDsKIAogICAgIGNsYXNzIFNWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtZW50IDogcHVibGljIFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQsIHB1YmxpYyBT
VkdUcmFuc2Zvcm1hYmxlIHsKICAgICBwdWJsaWM6CkBAIC00NSwxMSArNDMsMTEgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTdHlsZWRUcmFuc2Zvcm1hYmxl
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgICAgIC8vICdTVkdUcmFuc2Zvcm1hYmxl
JyBmdW5jdGlvbnMKLSAgICAgICAgdmlydHVhbCBTVkdNYXRyaXgqIGxvY2FsTWF0cml4KCkgY29u
c3Q7CisgICAgICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGxvY2FsTWF0cml4KCkgY29uc3Q7
CiAKICAgICAgICAgLy8gRGVyaXZlZCBmcm9tOiAnU1ZHTG9jYXRhYmxlJwotICAgICAgICB2aXJ0
dWFsIFNWR01hdHJpeCogZ2V0Q1RNKCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgU1ZHTWF0cml4
KiBnZXRTY3JlZW5DVE0oKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0g
Z2V0Q1RNKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGdldFNjcmVl
bkNUTSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIFNWR0VsZW1lbnQqIG5lYXJlc3RWaWV3cG9y
dEVsZW1lbnQoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBTVkdFbGVtZW50KiBmYXJ0aGVzdFZp
ZXdwb3J0RWxlbWVudCgpIGNvbnN0OwogCkBAIC02Miw3ICs2MCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogCiAgICAgcHJvdGVjdGVkOgot
ICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdNYXRyaXg+IG1fbG9jYWxNYXRyaXg7CisgICAgICAg
IG11dGFibGUgQWZmaW5lVHJhbnNmb3JtIG1fbG9jYWxNYXRyaXg7CiAgICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCwgU1ZH
VHJhbnNmb3JtTGlzdCosIFJlZlB0cjxTVkdUcmFuc2Zvcm1MaXN0PiwgVHJhbnNmb3JtLCB0cmFu
c2Zvcm0pCiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVGV4dEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAko
cmV2aXNpb24gMTgxNjIpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI0LDEwICsyNCwxMCBAQAogI2lmZGVmIFNWR19TVVBQT1JUCiAj
aW5jbHVkZSAiU1ZHVGV4dEVsZW1lbnQuaCIKIAorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5o
IgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1RleHQuaCIKICNp
bmNsdWRlICJTVkdMZW5ndGhMaXN0LmgiCi0jaW5jbHVkZSAiU1ZHTWF0cml4LmgiCiAjaW5jbHVk
ZSAiU1ZHUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJTVkdUU3BhbkVsZW1lbnQuaCIKICNpbmNs
dWRlICJTVkdUcmFuc2Zvcm1MaXN0LmgiCkBAIC00Nyw5ICs0Nyw5IEBAIFNWR1RleHRFbGVtZW50
Ojp+U1ZHVGV4dEVsZW1lbnQoKQogCiBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdU
ZXh0RWxlbWVudCwgU1ZHVHJhbnNmb3JtTGlzdCosIFRyYW5zZm9ybUxpc3QsIHRyYW5zZm9ybUxp
c3QsIFRyYW5zZm9ybSwgdHJhbnNmb3JtLCBTVkdOYW1lczo6dHJhbnNmb3JtQXR0ci5sb2NhbE5h
bWUoKSwgbV90cmFuc2Zvcm0uZ2V0KCkpCiAKLVNWR01hdHJpeCogU1ZHVGV4dEVsZW1lbnQ6Omxv
Y2FsTWF0cml4KCkgY29uc3QKK0FmZmluZVRyYW5zZm9ybSBTVkdUZXh0RWxlbWVudDo6bG9jYWxN
YXRyaXgoKSBjb25zdAogewotICAgIHJldHVybiBsYXp5X2NyZWF0ZTxTVkdNYXRyaXg+KG1fbG9j
YWxNYXRyaXgpOworICAgIHJldHVybiBtX2xvY2FsTWF0cml4OwogfQogCiB2b2lkIFNWR1RleHRF
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCkBAIC03
NSw3ICs3NSw3IEBAIHZvaWQgU1ZHVGV4dEVsZW1lbnQ6OnVwZGF0ZUxvY2FsVHJhbnNmb3IKICAg
ICBpZiAobG9jYWxUcmFuc2Zvcm0pIHsKICAgICAgICAgbV9sb2NhbE1hdHJpeCA9IGxvY2FsVHJh
bnNmb3JtLT5tYXRyaXgoKTsKICAgICAgICAgaWYgKHJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAg
IHJlbmRlcmVyKCktPnNldExvY2FsVHJhbnNmb3JtKG1fbG9jYWxNYXRyaXgtPm1hdHJpeCgpKTsK
KyAgICAgICAgICAgIHJlbmRlcmVyKCktPnNldExvY2FsVHJhbnNmb3JtKG1fbG9jYWxNYXRyaXgp
OwogICAgICAgICAgICAgcmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiAgICAgICAg
IH0KICAgICB9CkBAIC04NSw4ICs4NSw4IEBAIHZvaWQgU1ZHVGV4dEVsZW1lbnQ6OmF0dGFjaCgp
CiB7CiAgICAgU1ZHU3R5bGVkRWxlbWVudDo6YXR0YWNoKCk7CiAKLSAgICBpZiAocmVuZGVyZXIo
KSAmJiBtX2xvY2FsTWF0cml4KQotICAgICAgICByZW5kZXJlcigpLT5zZXRMb2NhbFRyYW5zZm9y
bShtX2xvY2FsTWF0cml4LT5tYXRyaXgoKSk7CisgICAgaWYgKHJlbmRlcmVyKCkgJiYgIW1fbG9j
YWxNYXRyaXguaXNJZGVudGl0eSgpKQorICAgICAgICByZW5kZXJlcigpLT5zZXRMb2NhbFRyYW5z
Zm9ybShtX2xvY2FsTWF0cml4KTsKIH0KIAogU1ZHRWxlbWVudCogU1ZHVGV4dEVsZW1lbnQ6Om5l
YXJlc3RWaWV3cG9ydEVsZW1lbnQoKSBjb25zdApAQCAtMTA0LDEyICsxMDQsMTIgQEAgRmxvYXRS
ZWN0IFNWR1RleHRFbGVtZW50OjpnZXRCQm94KCkgY29ucwogICAgIHJldHVybiBTVkdUcmFuc2Zv
cm1hYmxlOjpnZXRCQm94KHRoaXMpOwogfQogCi1TVkdNYXRyaXgqIFNWR1RleHRFbGVtZW50Ojpn
ZXRTY3JlZW5DVE0oKSBjb25zdAorQWZmaW5lVHJhbnNmb3JtIFNWR1RleHRFbGVtZW50OjpnZXRT
Y3JlZW5DVE0oKSBjb25zdAogewogICAgIHJldHVybiBTVkdUcmFuc2Zvcm1hYmxlOjpnZXRTY3Jl
ZW5DVE0odGhpcyk7CiB9CiAKLVNWR01hdHJpeCogU1ZHVGV4dEVsZW1lbnQ6OmdldENUTSgpIGNv
bnN0CitBZmZpbmVUcmFuc2Zvcm0gU1ZHVGV4dEVsZW1lbnQ6OmdldENUTSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIFNWR1RyYW5zZm9ybWFibGU6OmdldENUTSh0aGlzKTsKIH0KSW5kZXg6IFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR1RleHRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHVGV4dEVsZW1lbnQuaAkocmV2aXNpb24gMTgxNjIpCisrKyBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdUZXh0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywxNCArNDMsMTQgQEAg
bmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCBTVkdFbGVtZW50KiBmYXJ0aGVzdFZp
ZXdwb3J0RWxlbWVudCgpIGNvbnN0OwogCiAgICAgICAgIHZpcnR1YWwgRmxvYXRSZWN0IGdldEJC
b3goKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBTVkdNYXRyaXgqIGdldENUTSgpIGNvbnN0Owot
ICAgICAgICB2aXJ0dWFsIFNWR01hdHJpeCogZ2V0U2NyZWVuQ1RNKCkgY29uc3Q7CisgICAgICAg
IHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGdldENUTSgpIGNvbnN0OworICAgICAgICB2aXJ0dWFs
IEFmZmluZVRyYW5zZm9ybSBnZXRTY3JlZW5DVE0oKSBjb25zdDsKIAogICAgICAgICB2aXJ0dWFs
IGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIFN0eWxl
ZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOyB9CiAgICAgICAgIHZpcnR1YWwgUmVu
ZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25z
dDsKICAgICAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwotICAgICAgICB2aXJ0dWFsIFNWR01h
dHJpeCogbG9jYWxNYXRyaXgoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zv
cm0gbG9jYWxNYXRyaXgoKSBjb25zdDsKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVMb2NhbFRyYW5zZm9ybShTVkdUcmFuc2Zvcm1MaXN0Kik7CiAgICAgICAgIApAQCAtNTgs
NyArNTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0Vs
ZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHTWF0cml4PiBtX2xvY2FsTWF0cml4Owor
ICAgICAgICBtdXRhYmxlIEFmZmluZVRyYW5zZm9ybSBtX2xvY2FsTWF0cml4OwogICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHVGV4dEVsZW1lbnQsIFNWR1RyYW5zZm9y
bUxpc3QqLCBSZWZQdHI8U1ZHVHJhbnNmb3JtTGlzdD4sIFRyYW5zZm9ybSwgdHJhbnNmb3JtKQog
ICAgIH07CiAKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtLmNwcAkocmV2aXNpb24gMTgx
NjIpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm0uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMyw3ICsyMyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaWZkZWYgU1ZHX1NVUFBP
UlQKIAotI2luY2x1ZGUgIlNWR01hdHJpeC5oIgorI2luY2x1ZGUgIlNWR0FuZ2xlLmgiCiAjaW5j
bHVkZSAiU1ZHVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgogCkBAIC0z
MSw3ICszMSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBTVkdUcmFuc2Zvcm06OlNW
R1RyYW5zZm9ybSgpCiAgICAgOiBTaGFyZWQ8U1ZHVHJhbnNmb3JtPigpCi0gICAgLCBtX21hdHJp
eChTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdNYXRyaXgoKSkKIHsKICAgICBtX3R5cGUgPSBTVkdf
VFJBTlNGT1JNX1VOS05PV047CiAgICAgbV9hbmdsZSA9IDA7CkBAIC00Niw5ICs0NSw5IEBAIHVu
c2lnbmVkIHNob3J0IFNWR1RyYW5zZm9ybTo6dHlwZSgpIGNvbnMKICAgICByZXR1cm4gbV90eXBl
OwogfQogCi1TVkdNYXRyaXggKlNWR1RyYW5zZm9ybTo6bWF0cml4KCkgY29uc3QKK0FmZmluZVRy
YW5zZm9ybSBTVkdUcmFuc2Zvcm06Om1hdHJpeCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fbWF0
cml4LmdldCgpOworICAgIHJldHVybiBtX21hdHJpeDsKIH0KIAogZG91YmxlIFNWR1RyYW5zZm9y
bTo6YW5nbGUoKSBjb25zdApAQCAtNTYsMTEgKzU1LDExIEBAIGRvdWJsZSBTVkdUcmFuc2Zvcm06
OmFuZ2xlKCkgY29uc3QKICAgICByZXR1cm4gbV9hbmdsZTsKIH0KIAotdm9pZCBTVkdUcmFuc2Zv
cm06OnNldE1hdHJpeChTVkdNYXRyaXggKm1hdHJpeCkKK3ZvaWQgU1ZHVHJhbnNmb3JtOjpzZXRN
YXRyaXgoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBtYXRyaXgpCiB7CiAgICAgbV90eXBlID0gU1ZH
X1RSQU5TRk9STV9NQVRSSVg7CiAgICAgbV9hbmdsZSA9IDA7Ci0gICAgCisKICAgICBtX21hdHJp
eCA9IG1hdHJpeDsKIH0KIApAQCAtNjgsNDggKzY3LDQ4IEBAIHZvaWQgU1ZHVHJhbnNmb3JtOjpz
ZXRUcmFuc2xhdGUoZG91YmxlIHQKIHsKICAgICBtX3R5cGUgPSBTVkdfVFJBTlNGT1JNX1RSQU5T
TEFURTsKICAgICBtX2FuZ2xlID0gMDsKLSAgICAKLSAgICBtX21hdHJpeC0+cmVzZXQoKTsKLSAg
ICBtX21hdHJpeC0+dHJhbnNsYXRlKHR4LCB0eSk7CisKKyAgICBtX21hdHJpeC5yZXNldCgpOwor
ICAgIG1fbWF0cml4LnRyYW5zbGF0ZSh0eCwgdHkpOwogfQogCiB2b2lkIFNWR1RyYW5zZm9ybTo6
c2V0U2NhbGUoZG91YmxlIHN4LCBkb3VibGUgc3kpCiB7CiAgICAgbV90eXBlID0gU1ZHX1RSQU5T
Rk9STV9TQ0FMRTsKICAgICBtX2FuZ2xlID0gMDsKLSAgICAKLSAgICBtX21hdHJpeC0+cmVzZXQo
KTsKLSAgICBtX21hdHJpeC0+c2NhbGVOb25Vbmlmb3JtKHN4LCBzeSk7CisKKyAgICBtX21hdHJp
eC5yZXNldCgpOworICAgIG1fbWF0cml4LnNjYWxlKHN4LCBzeSk7CiB9CiAKIHZvaWQgU1ZHVHJh
bnNmb3JtOjpzZXRSb3RhdGUoZG91YmxlIGFuZ2xlLCBkb3VibGUgY3gsIGRvdWJsZSBjeSkKIHsK
ICAgICBtX3R5cGUgPSBTVkdfVFJBTlNGT1JNX1JPVEFURTsKICAgICBtX2FuZ2xlID0gYW5nbGU7
Ci0gICAgCisKICAgICAvLyBUT0RPOiB0b1N0cmluZygpIGltcGxlbWVudGF0aW9uLCB3aGljaCBj
YW4gc2hvdyBjeCwgY3kgKG5lZWQgdG8gYmUgc3RvcmVkPykKLSAgICBtX21hdHJpeC0+cmVzZXQo
KTsKLSAgICBtX21hdHJpeC0+dHJhbnNsYXRlKGN4LCBjeSk7Ci0gICAgbV9tYXRyaXgtPnJvdGF0
ZShhbmdsZSk7Ci0gICAgbV9tYXRyaXgtPnRyYW5zbGF0ZSgtY3gsIC1jeSk7CisgICAgbV9tYXRy
aXgucmVzZXQoKTsKKyAgICBtX21hdHJpeC50cmFuc2xhdGUoY3gsIGN5KTsKKyAgICBtX21hdHJp
eC5yb3RhdGUoYW5nbGUpOworICAgIG1fbWF0cml4LnRyYW5zbGF0ZSgtY3gsIC1jeSk7CiB9CiAK
IHZvaWQgU1ZHVHJhbnNmb3JtOjpzZXRTa2V3WChkb3VibGUgYW5nbGUpCiB7CiAgICAgbV90eXBl
ID0gU1ZHX1RSQU5TRk9STV9TS0VXWDsKICAgICBtX2FuZ2xlID0gYW5nbGU7Ci0gICAgCi0gICAg
bV9tYXRyaXgtPnJlc2V0KCk7Ci0gICAgbV9tYXRyaXgtPnNrZXdYKGFuZ2xlKTsKKworICAgIG1f
bWF0cml4LnJlc2V0KCk7CisgICAgbV9tYXRyaXguc2hlYXIodGFuKFNWR0FuZ2xlOjp0b3JhZChh
bmdsZSkpLCAwLjBGKTsKIH0KIAogdm9pZCBTVkdUcmFuc2Zvcm06OnNldFNrZXdZKGRvdWJsZSBh
bmdsZSkKIHsKICAgICBtX3R5cGUgPSBTVkdfVFJBTlNGT1JNX1NLRVdZOwogICAgIG1fYW5nbGUg
PSBhbmdsZTsKLSAgICAKLSAgICBtX21hdHJpeC0+cmVzZXQoKTsKLSAgICBtX21hdHJpeC0+c2tl
d1koYW5nbGUpOworCisgICAgbV9tYXRyaXgucmVzZXQoKTsKKyAgICBtX21hdHJpeC5zaGVhcigw
LjBGLCB0YW4oU1ZHQW5nbGU6OnRvcmFkKGFuZ2xlKSkpOwogfQogCiAvLyB2aW06dHM9NDpub2V0
CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm0uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm0uaAkocmV2aXNpb24gMTgxNjIpCisrKyBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTIgKzI0
LDEyIEBACiAjZGVmaW5lIEtTVkdfU1ZHVHJhbnNmb3JtSW1wbF9ICiAjaWZkZWYgU1ZHX1NVUFBP
UlQKIAorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIlNoYXJlZC5oIgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xh
c3MgU1ZHTWF0cml4OwogICAgIGNsYXNzIFNWR1RyYW5zZm9ybSA6IHB1YmxpYyBTaGFyZWQ8U1ZH
VHJhbnNmb3JtPiB7CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIFNWR1RyYW5zZm9ybVR5cGUg
ewpAQCAtNDcsMTEgKzQ3LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICAg
IAogICAgICAgICB1bnNpZ25lZCBzaG9ydCB0eXBlKCkgY29uc3Q7CiAKLSAgICAgICAgU1ZHTWF0
cml4KiBtYXRyaXgoKSBjb25zdDsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIG1hdHJpeCgpIGNv
bnN0OwogICAgIAogICAgICAgICBkb3VibGUgYW5nbGUoKSBjb25zdDsKIAotICAgICAgICB2b2lk
IHNldE1hdHJpeChTVkdNYXRyaXgqKTsKKyAgICAgICAgdm9pZCBzZXRNYXRyaXgoY29uc3QgQWZm
aW5lVHJhbnNmb3JtJik7CiAgICAgICAgIHZvaWQgc2V0VHJhbnNsYXRlKGRvdWJsZSB0eCwgZG91
YmxlIHR5KTsKICAgICAgICAgdm9pZCBzZXRTY2FsZShkb3VibGUgc3gsIGRvdWJsZSBzeSk7CiAg
ICAgICAgIHZvaWQgc2V0Um90YXRlKGRvdWJsZSBhbmdsZSwgZG91YmxlIGN4LCBkb3VibGUgY3kp
OwpAQCAtNjEsNyArNjEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHJpdmF0ZToKICAg
ICAgICAgZG91YmxlIG1fYW5nbGU7CiAgICAgICAgIHVuc2lnbmVkIHNob3J0IG1fdHlwZTsKLSAg
ICAgICAgUmVmUHRyPFNWR01hdHJpeD4gbV9tYXRyaXg7CisgICAgICAgIEFmZmluZVRyYW5zZm9y
bSBtX21hdHJpeDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmNwcAkocmV2aXNpb24gMTgxNjIpCisrKyBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQs
NyArMjQsNyBAQAogCiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAotI2luY2x1ZGUgIlNWR01hdHJpeC5o
IgorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIlNWR1RyYW5zZm9ybS5o
IgogI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0
LmgiCkBAIC00MCw3ICs0MCw3IEBAIFNWR1RyYW5zZm9ybUxpc3Q6On5TVkdUcmFuc2Zvcm1MaXN0
KCkKIHsKIH0KIAotUmVmUHRyPFNWR1RyYW5zZm9ybT4gU1ZHVHJhbnNmb3JtTGlzdDo6Y3JlYXRl
U1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChTVkdNYXRyaXgqIG1hdHJpeCkgY29uc3QKK1JlZlB0cjxT
VkdUcmFuc2Zvcm0+IFNWR1RyYW5zZm9ybUxpc3Q6OmNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRy
aXgoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBtYXRyaXgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNW
R1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgobWF0cml4KTsKIH0KQEAg
LTYyLDExICs2MiwxMSBAQCBTVkdUcmFuc2Zvcm0qIFNWR1RyYW5zZm9ybUxpc3Q6OmNvbmNhdGVu
CiAgICAgICAgIHJldHVybiAwOwogICAgICAgICAKICAgICBTVkdUcmFuc2Zvcm0qIG9iaiA9IFNW
R1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR1RyYW5zZm9ybSgpOwotICAgIFNWR01hdHJpeCogbWF0cml4
ID0gU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHTWF0cml4KCk7CisgICAgQWZmaW5lVHJhbnNmb3Jt
IG1hdHJpeDsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGZvcih1bnNpZ25lZCBp
bnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKLSAgICAgICAgbWF0cml4LT5tdWx0aXBseShnZXRJ
dGVtKGksIGVjKS0+bWF0cml4KCkpOworICAgICAgICBtYXRyaXggPSBnZXRJdGVtKGksIGVjKS0+
bWF0cml4KCkgKiBtYXRyaXg7CiAKICAgICBvYmotPnNldE1hdHJpeChtYXRyaXgpOwogICAgIHJl
dHVybiBvYmo7CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtTGlzdC5oCShyZXZpc2lv
biAxODE2MikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFNW
R1RyYW5zZm9ybUxpc3QoKTsKICAgICAgICAgdmlydHVhbCB+U1ZHVHJhbnNmb3JtTGlzdCgpOwog
Ci0gICAgICAgIFJlZlB0cjxTVkdUcmFuc2Zvcm0+IGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRy
aXgoU1ZHTWF0cml4KikgY29uc3Q7CisgICAgICAgIFJlZlB0cjxTVkdUcmFuc2Zvcm0+IGNyZWF0
ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgoY29uc3QgQWZmaW5lVHJhbnNmb3JtJikgY29uc3Q7CiAg
ICAgICAgIFJlZlB0cjxTVkdUcmFuc2Zvcm0+IGNvbnNvbGlkYXRlKCk7CiAKICAgICAgICAgLy8g
SW50ZXJuYWwgdXNlIG9ubHkKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybWFi
bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybWFibGUu
Y3BwCShyZXZpc2lvbiAxODE2MikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybWFi
bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAKICNpbmNsdWRlICJSZWd1
bGFyRXhwcmVzc2lvbi5oIgogI2luY2x1ZGUgIlNWR0hlbHBlci5oIgotI2luY2x1ZGUgIlNWR01h
dHJpeC5oIgorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIlNWR05hbWVz
LmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1RyYW5zZm9y
bUxpc3QuaCIKQEAgLTQxLDE4ICs0MSwxNiBAQCBTVkdUcmFuc2Zvcm1hYmxlOjp+U1ZHVHJhbnNm
b3JtYWJsZSgpCiB7CiB9CiAKLVNWR01hdHJpeCogU1ZHVHJhbnNmb3JtYWJsZTo6Z2V0Q1RNKGNv
bnN0IFNWR0VsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CitBZmZpbmVUcmFuc2Zvcm0gU1ZHVHJhbnNm
b3JtYWJsZTo6Z2V0Q1RNKGNvbnN0IFNWR0VsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7Ci0gICAg
U1ZHTWF0cml4KiBjdG0gPSBTVkdMb2NhdGFibGU6OmdldENUTShlbGVtZW50KTsKLSAgICBjdG0t
Pm11bHRpcGx5KGxvY2FsTWF0cml4KCkpOwotICAgIHJldHVybiBjdG07CisgICAgQWZmaW5lVHJh
bnNmb3JtIGN0bSA9IFNWR0xvY2F0YWJsZTo6Z2V0Q1RNKGVsZW1lbnQpOworICAgIHJldHVybiBs
b2NhbE1hdHJpeCgpICogY3RtOwogfQogCi1TVkdNYXRyaXgqIFNWR1RyYW5zZm9ybWFibGU6Omdl
dFNjcmVlbkNUTShjb25zdCBTVkdFbGVtZW50KiBlbGVtZW50KSBjb25zdAorQWZmaW5lVHJhbnNm
b3JtIFNWR1RyYW5zZm9ybWFibGU6OmdldFNjcmVlbkNUTShjb25zdCBTVkdFbGVtZW50KiBlbGVt
ZW50KSBjb25zdAogewotICAgIFNWR01hdHJpeCogY3RtID0gU1ZHTG9jYXRhYmxlOjpnZXRTY3Jl
ZW5DVE0oZWxlbWVudCk7Ci0gICAgY3RtLT5tdWx0aXBseShsb2NhbE1hdHJpeCgpKTsKLSAgICBy
ZXR1cm4gY3RtOworICAgIEFmZmluZVRyYW5zZm9ybSBjdG0gPSBTVkdMb2NhdGFibGU6OmdldFNj
cmVlbkNUTShlbGVtZW50KTsKKyAgICByZXR1cm4gbG9jYWxNYXRyaXgoKSAqIGN0bTsKIH0KIAog
Ym9vbCBTVkdUcmFuc2Zvcm1hYmxlOjpwYXJzZVRyYW5zZm9ybUF0dHJpYnV0ZShTVkdUcmFuc2Zv
cm1MaXN0KiBsaXN0LCBjb25zdCBBdG9taWNTdHJpbmcmIHRyYW5zZm9ybSkKQEAgLTExMiwxMiAr
MTEwLDEyIEBAIGJvb2wgU1ZHVHJhbnNmb3JtYWJsZTo6cGFyc2VUcmFuc2Zvcm1BdHQKICAgICAg
ICAgZWxzZSBpZiAoc3VidHJhbnNmb3JtWzBdID09ICJza2V3eSIgJiYgbnBhcmFtcyA9PSAxKQog
ICAgICAgICAgICAgdC0+c2V0U2tld1kocGFyYW1zWzBdLnRvRG91YmxlKCkpOwogICAgICAgICBl
bHNlIGlmIChzdWJ0cmFuc2Zvcm1bMF0gPT0gIm1hdHJpeCIgJiYgbnBhcmFtcyA9PSA2KSB7Ci0g
ICAgICAgICAgICBTVkdNYXRyaXgqIHJldCA9IG5ldyBTVkdNYXRyaXgocGFyYW1zWzBdLnRvRG91
YmxlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1z
WzFdLnRvRG91YmxlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFyYW1zWzJdLnRvRG91YmxlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyYW1zWzNdLnRvRG91YmxlKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzRdLnRvRG91YmxlKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzVdLnRvRG91YmxlKCkpOworICAg
ICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHJldChwYXJhbXNbMF0udG9Eb3VibGUoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzFdLnRvRG91YmxlKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1syXS50b0RvdWJsZSgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbM10udG9Eb3VibGUoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzRdLnRvRG91YmxlKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcmFtc1s1XS50b0RvdWJsZSgpKTsKICAgICAgICAgICAgIHQt
PnNldE1hdHJpeChyZXQpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZGVsZXRlIHQ7
CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5oCShyZXZpc2lvbiAxODE2MikK
KysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybWFibGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMjksNyArMjksNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogICAgIGNsYXNzIEF0
b21pY1N0cmluZzsKLSAgICBjbGFzcyBTVkdNYXRyaXg7CisgICAgY2xhc3MgQWZmaW5lVHJhbnNm
b3JtOwogICAgIGNsYXNzIFNWR1RyYW5zZm9ybUxpc3Q7CiAKICAgICBjbGFzcyBTVkdUcmFuc2Zv
cm1hYmxlIDogdmlydHVhbCBwdWJsaWMgU1ZHTG9jYXRhYmxlIHsKQEAgLTM4LDEzICszOCwxMyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgflNWR1RyYW5zZm9ybWFibGUo
KTsKIAogICAgICAgICAvLyAnU1ZHVHJhbnNmb3JtYWJsZScgZnVuY3Rpb25zCi0gICAgICAgIHZp
cnR1YWwgU1ZHTWF0cml4KiBsb2NhbE1hdHJpeCgpIGNvbnN0ID0gMDsKKyAgICAgICAgdmlydHVh
bCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxNYXRyaXgoKSBjb25zdCA9IDA7CiAKICAgICAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUxvY2FsVHJhbnNmb3JtKFNWR1RyYW5zZm9ybUxpc3QqKSA9IDA7CiAK
ICAgICAgICAgc3RhdGljIGJvb2wgcGFyc2VUcmFuc2Zvcm1BdHRyaWJ1dGUoU1ZHVHJhbnNmb3Jt
TGlzdCosIGNvbnN0IEF0b21pY1N0cmluZyYgdHJhbnNmb3JtKTsKLSAgICAgICAgU1ZHTWF0cml4
KiBnZXRDVE0oY29uc3QgU1ZHRWxlbWVudCopIGNvbnN0OwotICAgICAgICBTVkdNYXRyaXgqIGdl
dFNjcmVlbkNUTShjb25zdCBTVkdFbGVtZW50KikgY29uc3Q7CisgICAgICAgIEFmZmluZVRyYW5z
Zm9ybSBnZXRDVE0oY29uc3QgU1ZHRWxlbWVudCopIGNvbnN0OworICAgICAgICBBZmZpbmVUcmFu
c2Zvcm0gZ2V0U2NyZWVuQ1RNKGNvbnN0IFNWR0VsZW1lbnQqKSBjb25zdDsKICAgICB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Fm
ZmluZVRyYW5zZm9ybS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9BZmZpbmVUcmFuc2Zvcm0uY3BwCShyZXZpc2lvbiAxODE2MikKKysrIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQWZmaW5lVHJhbnNmb3JtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksMTEg
KzI5LDU1IEBACiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgog
CisjaW5jbHVkZSA8bWF0aC5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NvbnN0IGRvdWJs
ZSBkZWcycmFkID0gMC4wMTc0NTMyOTI1MTk5NDMyOTU3Njk7IC8vIHBpLzE4MAorCiBib29sIEFm
ZmluZVRyYW5zZm9ybTo6aXNJbnZlcnRpYmxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gZGV0KCkg
IT0gMC4wOwogfQogCitBZmZpbmVUcmFuc2Zvcm0mIEFmZmluZVRyYW5zZm9ybTo6bXVsdGlwbHko
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBvdGhlcikKK3sKKyAgICByZXR1cm4gKCp0aGlzKSAqPSBv
dGhlcjsKK30KKworQWZmaW5lVHJhbnNmb3JtJiBBZmZpbmVUcmFuc2Zvcm06OnNjYWxlKGRvdWJs
ZSBzKQoreworICAgIHJldHVybiBzY2FsZShzLCBzKTsKK30KKworQWZmaW5lVHJhbnNmb3JtJiBB
ZmZpbmVUcmFuc2Zvcm06OnNjYWxlTm9uVW5pZm9ybShkb3VibGUgc3gsIGRvdWJsZSBzeSkKK3sK
KyAgICByZXR1cm4gc2NhbGUoc3gsIHN5KTsKK30KKworQWZmaW5lVHJhbnNmb3JtJiBBZmZpbmVU
cmFuc2Zvcm06OnJvdGF0ZUZyb21WZWN0b3IoZG91YmxlIHgsIGRvdWJsZSB5KQoreworICAgIHJl
dHVybiByb3RhdGUoYXRhbjIoeSwgeCkgLyBkZWcycmFkKTsKK30KKworQWZmaW5lVHJhbnNmb3Jt
JiBBZmZpbmVUcmFuc2Zvcm06OmZsaXBYKCkKK3sKKyAgICByZXR1cm4gc2NhbGUoLTEuMGYsIDEu
MGYpOworfQorCitBZmZpbmVUcmFuc2Zvcm0mIEFmZmluZVRyYW5zZm9ybTo6ZmxpcFkoKQorewor
ICAgIHJldHVybiBzY2FsZSgxLjBmLCAtMS4wZik7Cit9CisKK0FmZmluZVRyYW5zZm9ybSYgQWZm
aW5lVHJhbnNmb3JtOjpza2V3WChkb3VibGUgYW5nbGUpCit7CisgICAgcmV0dXJuIHNoZWFyKHRh
bihhbmdsZSAqIGRlZzJyYWQpLCAwLjBmKTsKK30KKworQWZmaW5lVHJhbnNmb3JtJiBBZmZpbmVU
cmFuc2Zvcm06OnNrZXdZKGRvdWJsZSBhbmdsZSkKK3sKKyAgICByZXR1cm4gc2hlYXIoMC4wZiwg
dGFuKGFuZ2xlICogZGVnMnJhZCkpOworfQorCiB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0FmZmluZVRyYW5zZm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQWZmaW5lVHJhbnNmb3JtLmgJKHJldmlzaW9uIDE4MTYyKQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9BZmZpbmVUcmFuc2Zvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMzQs
MTUgKzM0LDE3IEBACiAjaW5jbHVkZSAiY2Fpcm8uaCIKICNlbmRpZgogCit0eXBlZGVmIGludCBF
eGNlcHRpb25Db2RlOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBJbnRSZWN0
OwotICAgIGNsYXNzIEZsb2F0UmVjdDsKK2NsYXNzIEludFJlY3Q7CitjbGFzcyBGbG9hdFJlY3Q7
CiAKIGNsYXNzIEFmZmluZVRyYW5zZm9ybSB7CiBwdWJsaWM6CiAgICAgQWZmaW5lVHJhbnNmb3Jt
KCk7Ci0gICAgQWZmaW5lVHJhbnNmb3JtKGRvdWJsZSBhLCBkb3VibGUgYiwgZG91YmxlIGMsIGRv
dWJsZSBkLCBkb3VibGUgdHgsIGRvdWJsZSB0eSk7CisgICAgQWZmaW5lVHJhbnNmb3JtKGRvdWJs
ZSBhLCBkb3VibGUgYiwgZG91YmxlIGMsIGRvdWJsZSBkLCBkb3VibGUgZSwgZG91YmxlIGYpOwog
I2lmIFBMQVRGT1JNKENHKQogICAgIEFmZmluZVRyYW5zZm9ybShDR0FmZmluZVRyYW5zZm9ybSB0
cmFuc2Zvcm0pOwogI2VsaWYgUExBVEZPUk0oUVQpCkBAIC01MSwzMCArNTMsNDkgQEAgcHVibGlj
OgogICAgIEFmZmluZVRyYW5zZm9ybShjb25zdCBjYWlyb19tYXRyaXhfdCAmbWF0cml4KTsKICNl
bmRpZgogCi0gICAgdm9pZCBzZXRNYXRyaXgoZG91YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUgYywg
ZG91YmxlIGQsIGRvdWJsZSB0eCwgZG91YmxlIHR5KTsKKyAgICB2b2lkIHNldE1hdHJpeChkb3Vi
bGUgYSwgZG91YmxlIGIsIGRvdWJsZSBjLCBkb3VibGUgZCwgZG91YmxlIGUsIGRvdWJsZSBmKTsK
ICAgICB2b2lkIG1hcChkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSAqeDIsIGRvdWJsZSAqeTIp
IGNvbnN0OwogICAgIEludFJlY3QgbWFwUmVjdChjb25zdCBJbnRSZWN0JikgY29uc3Q7CiAgICAg
RmxvYXRSZWN0IG1hcFJlY3QoY29uc3QgRmxvYXRSZWN0JikgY29uc3Q7CiAgICAgCiAgICAgYm9v
bCBpc0lkZW50aXR5KCkgY29uc3Q7CiAgICAgCi0gICAgZG91YmxlIG0xMSgpIGNvbnN0OwotICAg
IGRvdWJsZSBtMTIoKSBjb25zdDsKLSAgICBkb3VibGUgbTIxKCkgY29uc3Q7Ci0gICAgZG91Ymxl
IG0yMigpIGNvbnN0OwotICAgIGRvdWJsZSBkeCgpIGNvbnN0OwotICAgIGRvdWJsZSBkeSgpIGNv
bnN0OworICAgIGRvdWJsZSBhKCkgY29uc3Q7CisgICAgdm9pZCBzZXRBKGRvdWJsZSBhKTsKKwor
ICAgIGRvdWJsZSBiKCkgY29uc3Q7CisgICAgdm9pZCBzZXRCKGRvdWJsZSBiKTsKKworICAgIGRv
dWJsZSBjKCkgY29uc3Q7CisgICAgdm9pZCBzZXRDKGRvdWJsZSBjKTsKKworICAgIGRvdWJsZSBk
KCkgY29uc3Q7CisgICAgdm9pZCBzZXREKGRvdWJsZSBkKTsKKworICAgIGRvdWJsZSBlKCkgY29u
c3Q7CisgICAgdm9pZCBzZXRFKGRvdWJsZSBlKTsKKworICAgIGRvdWJsZSBmKCkgY29uc3Q7Cisg
ICAgdm9pZCBzZXRGKGRvdWJsZSBmKTsKIAogICAgIHZvaWQgcmVzZXQoKTsKLSAgICAKLSAgICBB
ZmZpbmVUcmFuc2Zvcm0gJnNjYWxlKGRvdWJsZSBzeCwgZG91YmxlIHN5KTsKLSAgICBBZmZpbmVU
cmFuc2Zvcm0gJnJvdGF0ZShkb3VibGUgZCk7Ci0gICAgQWZmaW5lVHJhbnNmb3JtICZ0cmFuc2xh
dGUoZG91YmxlIHR4LCBkb3VibGUgdHkpOwotICAgIEFmZmluZVRyYW5zZm9ybSAmc2hlYXIoZG91
YmxlIHN4LCBkb3VibGUgc3kpOwotICAgIAorCisgICAgQWZmaW5lVHJhbnNmb3JtJiBtdWx0aXBs
eShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0mIHNjYWxlKGRv
dWJsZSk7IAorICAgIEFmZmluZVRyYW5zZm9ybSYgc2NhbGUoZG91YmxlIHN4LCBkb3VibGUgc3kp
OyAKKyAgICBBZmZpbmVUcmFuc2Zvcm0mIHNjYWxlTm9uVW5pZm9ybShkb3VibGUgc3gsIGRvdWJs
ZSBzeSk7CisgICAgQWZmaW5lVHJhbnNmb3JtJiByb3RhdGUoZG91YmxlIGQpOworICAgIEFmZmlu
ZVRyYW5zZm9ybSYgcm90YXRlRnJvbVZlY3Rvcihkb3VibGUgeCwgZG91YmxlIHkpOworICAgIEFm
ZmluZVRyYW5zZm9ybSYgdHJhbnNsYXRlKGRvdWJsZSB0eCwgZG91YmxlIHR5KTsKKyAgICBBZmZp
bmVUcmFuc2Zvcm0mIHNoZWFyKGRvdWJsZSBzeCwgZG91YmxlIHN5KTsKKyAgICBBZmZpbmVUcmFu
c2Zvcm0mIGZsaXBYKCk7CisgICAgQWZmaW5lVHJhbnNmb3JtJiBmbGlwWSgpOworICAgIEFmZmlu
ZVRyYW5zZm9ybSYgc2tld1goZG91YmxlIGFuZ2xlKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0mIHNr
ZXdZKGRvdWJsZSBhbmdsZSk7CisgCiAgICAgZG91YmxlIGRldCgpIGNvbnN0OwogICAgIGJvb2wg
aXNJbnZlcnRpYmxlKCkgY29uc3Q7Ci0gICAgQWZmaW5lVHJhbnNmb3JtIGludmVydCgpIGNvbnN0
OworICAgIEFmZmluZVRyYW5zZm9ybSBpbnZlcnNlKCkgY29uc3Q7CiAKICNpZiBQTEFURk9STShD
RykKICAgICBvcGVyYXRvciBDR0FmZmluZVRyYW5zZm9ybSgpIGNvbnN0OwpJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9BZmZpbmVUcmFuc2Zvcm1DYWlyby5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9BZmZpbmVUcmFuc2Zvcm1D
YWlyby5jcHAJKHJldmlzaW9uIDE4MTYyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9BZmZpbmVUcmFuc2Zvcm1DYWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMywzNiAr
MTMzLDY3IEBAIGJvb2wgQWZmaW5lVHJhbnNmb3JtOjppc0lkZW50aXR5KCkgY29uc3QKICAgICAg
ICAgICYmIChtX3RyYW5zZm9ybS54MCA9PSAwKSAmJiAobV90cmFuc2Zvcm0ueTAgPT0gMCkpOwog
fQogCi1kb3VibGUgQWZmaW5lVHJhbnNmb3JtOjptMTEoKSBjb25zdAorZG91YmxlIEFmZmluZVRy
YW5zZm9ybTo6YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHJhbnNmb3JtLnh4OwogfQogCi1k
b3VibGUgQWZmaW5lVHJhbnNmb3JtOjptMTIoKSBjb25zdAordm9pZCBBZmZpbmVUcmFuc2Zvcm06
OnNldEEoZG91YmxlIGEpCit7CisgICAgY2Fpcm9fbWF0cml4X2luaXQoJm1fdHJhbnNmb3JtLCBh
LCBiKCksIGMoKSwgZCgpLCBlKCksIGYoKSk7Cit9CisKK2RvdWJsZSBBZmZpbmVUcmFuc2Zvcm06
OmIoKSBjb25zdAogewogICAgIHJldHVybiBtX3RyYW5zZm9ybS54eTsKIH0KIAotZG91YmxlIEFm
ZmluZVRyYW5zZm9ybTo6bTIxKCkgY29uc3QKK3ZvaWQgQWZmaW5lVHJhbnNmb3JtOjpzZXRCKGRv
dWJsZSBiKQoreworICAgIGNhaXJvX21hdHJpeF9pbml0KCZtX3RyYW5zZm9ybSwgYSgpLCBiLCBj
KCksIGQoKSwgZSgpLCBmKCkpOworfQorCitkb3VibGUgQWZmaW5lVHJhbnNmb3JtOjpjKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV90cmFuc2Zvcm0ueXg7CiB9CiAKLWRvdWJsZSBBZmZpbmVUcmFu
c2Zvcm06Om0yMigpIGNvbnN0Cit2b2lkIEFmZmluZVRyYW5zZm9ybTo6c2V0Qyhkb3VibGUgYykK
K3sKKyAgICBjYWlyb19tYXRyaXhfaW5pdCgmbV90cmFuc2Zvcm0sIGEoKSwgYigpLCBjLCBkKCks
IGUoKSwgZigpKTsKK30KKworZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6ZCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fdHJhbnNmb3JtLnl5OwogfQogCi1kb3VibGUgQWZmaW5lVHJhbnNmb3JtOjpk
eCgpIGNvbnN0Cit2b2lkIEFmZmluZVRyYW5zZm9ybTo6c2V0RChkb3VibGUgZCkKK3sKKyAgICBj
YWlyb19tYXRyaXhfaW5pdCgmbV90cmFuc2Zvcm0sIGEoKSwgYigpLCBjKCksIGQsIGUoKSwgZigp
KTsKK30KKworZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fdHJhbnNmb3JtLngwOwogfQogCi1kb3VibGUgQWZmaW5lVHJhbnNmb3JtOjpkeSgpIGNvbnN0
Cit2b2lkIEFmZmluZVRyYW5zZm9ybTo6c2V0RShkb3VibGUgZSkKK3sKKyAgICBjYWlyb19tYXRy
aXhfaW5pdCgmbV90cmFuc2Zvcm0sIGEoKSwgYigpLCBjKCksIGQoKSwgZSwgZigpKTsKK30KKwor
ZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6ZigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHJhbnNm
b3JtLnkwOwogfQogCit2b2lkIEFmZmluZVRyYW5zZm9ybTo6c2V0Rihkb3VibGUgZikKK3sKKyAg
ICBjYWlyb19tYXRyaXhfaW5pdCgmbV90cmFuc2Zvcm0sIGEoKSwgYigpLCBjKCksIGQoKSwgZSgp
LCBmKTsKK30KKworCiB2b2lkIEFmZmluZVRyYW5zZm9ybTo6cmVzZXQoKQogewogICAgIGNhaXJv
X21hdHJpeF9pbml0X2lkZW50aXR5KCZtX3RyYW5zZm9ybSk7CkBAIC0yMDMsNyArMjM0LDcgQEAg
ZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6ZGV0KCkgY29uc3QKICAgICByZXR1cm4gbV90cmFuc2Zv
cm0ueHggKiBtX3RyYW5zZm9ybS55eSAtIG1fdHJhbnNmb3JtLnh5ICogbV90cmFuc2Zvcm0ueXg7
CiB9CiAKLUFmZmluZVRyYW5zZm9ybSBBZmZpbmVUcmFuc2Zvcm06OmludmVydCgpIGNvbnN0CitB
ZmZpbmVUcmFuc2Zvcm0gQWZmaW5lVHJhbnNmb3JtOjppbnZlcnNlKCkgY29uc3QKIHsKICAgICBp
ZiAoIWlzSW52ZXJ0aWJsZSgpKSByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7CiAKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQWZmaW5lVHJhbnNmb3JtQ0cuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQWZmaW5lVHJhbnNmb3JtQ0cuY3Bw
CShyZXZpc2lvbiAxODE2MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQWZmaW5l
VHJhbnNmb3JtQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NywzNiArNzcsNjYgQEAgYm9vbCBB
ZmZpbmVUcmFuc2Zvcm06OmlzSWRlbnRpdHkoKSBjb25zdAogICAgIHJldHVybiBDR0FmZmluZVRy
YW5zZm9ybUlzSWRlbnRpdHkobV90cmFuc2Zvcm0pOwogfQogCi1kb3VibGUgQWZmaW5lVHJhbnNm
b3JtOjptMTEoKSBjb25zdAorZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6YSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fdHJhbnNmb3JtLmE7CiB9CiAKLWRvdWJsZSBBZmZpbmVUcmFuc2Zvcm06Om0x
MigpIGNvbnN0Cit2b2lkIEFmZmluZVRyYW5zZm9ybTo6c2V0QShkb3VibGUgYSkKK3sKKyAgICBt
X3RyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtTWFrZShhLCBiKCksIGMoKSwgZCgpLCBlKCks
IGYoKSk7Cit9CisKK2RvdWJsZSBBZmZpbmVUcmFuc2Zvcm06OmIoKSBjb25zdAogewogICAgIHJl
dHVybiBtX3RyYW5zZm9ybS5iOwogfQogCi1kb3VibGUgQWZmaW5lVHJhbnNmb3JtOjptMjEoKSBj
b25zdAordm9pZCBBZmZpbmVUcmFuc2Zvcm06OnNldEIoZG91YmxlIGIpCit7CisgICAgbV90cmFu
c2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybU1ha2UoYSgpLCBiLCBjKCksIGQoKSwgZSgpLCBmKCkp
OworfQorCitkb3VibGUgQWZmaW5lVHJhbnNmb3JtOjpjKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV90cmFuc2Zvcm0uYzsKIH0KIAotZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6bTIyKCkgY29uc3QK
K3ZvaWQgQWZmaW5lVHJhbnNmb3JtOjpzZXRDKGRvdWJsZSBjKQoreworICAgIG1fdHJhbnNmb3Jt
ID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlKGEoKSwgYigpLCBjLCBkKCksIGUoKSwgZigpKTsKK30K
KworZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6ZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHJh
bnNmb3JtLmQ7CiB9CiAKLWRvdWJsZSBBZmZpbmVUcmFuc2Zvcm06OmR4KCkgY29uc3QKK3ZvaWQg
QWZmaW5lVHJhbnNmb3JtOjpzZXREKGRvdWJsZSBkKQoreworICAgIG1fdHJhbnNmb3JtID0gQ0dB
ZmZpbmVUcmFuc2Zvcm1NYWtlKGEoKSwgYigpLCBjKCksIGQsIGUoKSwgZigpKTsKK30KKworZG91
YmxlIEFmZmluZVRyYW5zZm9ybTo6ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHJhbnNmb3Jt
LnR4OwogfQogCi1kb3VibGUgQWZmaW5lVHJhbnNmb3JtOjpkeSgpIGNvbnN0Cit2b2lkIEFmZmlu
ZVRyYW5zZm9ybTo6c2V0RShkb3VibGUgZSkKK3sKKyAgICBtX3RyYW5zZm9ybSA9IENHQWZmaW5l
VHJhbnNmb3JtTWFrZShhKCksIGIoKSwgYygpLCBkKCksIGUsIGYoKSk7Cit9CisKK2RvdWJsZSBB
ZmZpbmVUcmFuc2Zvcm06OmYoKSBjb25zdAogewogICAgIHJldHVybiBtX3RyYW5zZm9ybS50eTsK
IH0KIAordm9pZCBBZmZpbmVUcmFuc2Zvcm06OnNldEYoZG91YmxlIGYpCit7CisgICAgbV90cmFu
c2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybU1ha2UoYSgpLCBiKCksIGMoKSwgZCgpLCBlKCksIGYp
OworfQorCiB2b2lkIEFmZmluZVRyYW5zZm9ybTo6cmVzZXQoKQogewogICAgIG1fdHJhbnNmb3Jt
ID0gQ0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eTsKQEAgLTE0Miw3ICsxNzIsNyBAQCBkb3VibGUg
QWZmaW5lVHJhbnNmb3JtOjpkZXQoKSBjb25zdAogICAgIHJldHVybiBtX3RyYW5zZm9ybS5hICog
bV90cmFuc2Zvcm0uZCAtIG1fdHJhbnNmb3JtLmIgKiBtX3RyYW5zZm9ybS5jOwogfQogCi1BZmZp
bmVUcmFuc2Zvcm0gQWZmaW5lVHJhbnNmb3JtOjppbnZlcnQoKSBjb25zdAorQWZmaW5lVHJhbnNm
b3JtIEFmZmluZVRyYW5zZm9ybTo6aW52ZXJzZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzSW52ZXJ0
aWJsZSgpKQogICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKENHQWZmaW5lVHJhbnNmb3Jt
SW52ZXJ0KG1fdHJhbnNmb3JtKSk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0FmZmluZVRyYW5zZm9ybVF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0FmZmluZVRyYW5zZm9ybVF0LmNwcAkocmV2aXNpb24gMTgxNjIpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0FmZmluZVRyYW5zZm9ybVF0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzEsMzYgKzcxLDY2IEBAIGJvb2wgQWZmaW5lVHJhbnNmb3JtOjppc0lkZW50aXR5
KCkgY29uc3QKICAgICByZXR1cm4gbV90cmFuc2Zvcm0uaXNJZGVudGl0eSgpOwogfQogCi1kb3Vi
bGUgQWZmaW5lVHJhbnNmb3JtOjptMTEoKSBjb25zdAorZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6
YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHJhbnNmb3JtLm0xMSgpOwogfQogCi1kb3VibGUg
QWZmaW5lVHJhbnNmb3JtOjptMTIoKSBjb25zdAordm9pZCBBZmZpbmVUcmFuc2Zvcm06OnNldEEo
ZG91YmxlIGEpCit7CisgICAgbV90cmFuc2Zvcm0uc2V0TWF0cml4KGEsIGIoKSwgYygpLCBkKCks
IGUoKSwgZigpKTsKK30KKworZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6YigpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fdHJhbnNmb3JtLm0xMigpOwogfQogCi1kb3VibGUgQWZmaW5lVHJhbnNmb3Jt
OjptMjEoKSBjb25zdAordm9pZCBBZmZpbmVUcmFuc2Zvcm06OnNldEIoZG91YmxlIGIpCit7Cisg
ICAgbV90cmFuc2Zvcm0uc2V0TWF0cml4KGEoKSwgYiwgYygpLCBkKCksIGUoKSwgZigpKTsKK30K
KworZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6YygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHJh
bnNmb3JtLm0yMSgpOwogfQogCi1kb3VibGUgQWZmaW5lVHJhbnNmb3JtOjptMjIoKSBjb25zdAor
dm9pZCBBZmZpbmVUcmFuc2Zvcm06OnNldEMoZG91YmxlIGMpCit7CisgICAgbV90cmFuc2Zvcm0u
c2V0TWF0cml4KGEoKSwgYigpLCBjLCBkKCksIGUoKSwgZigpKTsKK30KKworZG91YmxlIEFmZmlu
ZVRyYW5zZm9ybTo6ZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHJhbnNmb3JtLm0yMigpOwog
fQogCi1kb3VibGUgQWZmaW5lVHJhbnNmb3JtOjpkeCgpIGNvbnN0Cit2b2lkIEFmZmluZVRyYW5z
Zm9ybTo6c2V0RChkb3VibGUgZCkKK3sKKyAgICBtX3RyYW5zZm9ybS5zZXRNYXRyaXgoYSgpLCBi
KCksIGMoKSwgZCwgZSgpLCBmKCkpOworfQorCitkb3VibGUgQWZmaW5lVHJhbnNmb3JtOjplKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV90cmFuc2Zvcm0uZHgoKTsKIH0KIAotZG91YmxlIEFmZmlu
ZVRyYW5zZm9ybTo6ZHkoKSBjb25zdAordm9pZCBBZmZpbmVUcmFuc2Zvcm06OnNldEUoZG91Ymxl
IGUpCit7CisgICAgbV90cmFuc2Zvcm0uc2V0TWF0cml4KGEoKSwgYigpLCBjKCksIGQoKSwgZSwg
ZigpKTsKK30KKworZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6ZigpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fdHJhbnNmb3JtLmR5KCk7CiB9CiAKK3ZvaWQgQWZmaW5lVHJhbnNmb3JtOjpzZXRGKGRv
dWJsZSBmKQoreworICAgIG1fdHJhbnNmb3JtLnNldE1hdHJpeChhKCksIGIoKSwgYygpLCBkKCks
IGUoKSwgZik7Cit9CisKIHZvaWQgQWZmaW5lVHJhbnNmb3JtOjpyZXNldCgpCiB7CiAgICAgbV90
cmFuc2Zvcm0ucmVzZXQoKTsKQEAgLTEzNSw3ICsxNjUsNyBAQCBkb3VibGUgQWZmaW5lVHJhbnNm
b3JtOjpkZXQoKSBjb25zdAogICAgIHJldHVybiBtX3RyYW5zZm9ybS5kZXQoKTsKIH0KIAotQWZm
aW5lVHJhbnNmb3JtIEFmZmluZVRyYW5zZm9ybTo6aW52ZXJ0KCkgY29uc3QKK0FmZmluZVRyYW5z
Zm9ybSBBZmZpbmVUcmFuc2Zvcm06OmludmVyc2UoKSBjb25zdAogewogICAgIGlmKCFpc0ludmVy
dGlibGUoKSkKICAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpOwpJbmRleDogV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRm9yZWlnbk9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRm9yZWlnbk9iamVjdC5jcHAJKHJldmlzaW9uIDE4MTYyKQorKysg
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRm9yZWlnbk9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBSZW5kZXJGb3JlaWduT2JqZWN0OjpwYWludChQYWludElu
ZgogICAgICAgICBwYWludEluZm8uY29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcihvcGFj
aXR5KTsKIAogICAgIFBhaW50SW5mbyBwaShwYWludEluZm8pOwotICAgIHBpLnJlY3QgPSBhYnNv
bHV0ZVRyYW5zZm9ybSgpLmludmVydCgpLm1hcFJlY3QocGFpbnRJbmZvLnJlY3QpOworICAgIHBp
LnJlY3QgPSBhYnNvbHV0ZVRyYW5zZm9ybSgpLmludmVyc2UoKS5tYXBSZWN0KHBhaW50SW5mby5y
ZWN0KTsKICAgICBSZW5kZXJCbG9jazo6cGFpbnQocGksIDAsIDApOwogCiAgICAgaWYgKG9wYWNp
dHkgPCAxLjBmKQpAQCAtMTA3LDcgKzEwNyw3IEBAIGJvb2wgUmVuZGVyRm9yZWlnbk9iamVjdDo6
bm9kZUF0UG9pbnQoY28KICAgICBBZmZpbmVUcmFuc2Zvcm0gdG90YWxUcmFuc2Zvcm0gPSBhYnNv
bHV0ZVRyYW5zZm9ybSgpOwogICAgIHRvdGFsVHJhbnNmb3JtICo9IHRyYW5zbGF0aW9uRm9yQXR0
cmlidXRlcygpOwogICAgIGRvdWJsZSBsb2NhbFgsIGxvY2FsWTsKLSAgICB0b3RhbFRyYW5zZm9y
bS5pbnZlcnQoKS5tYXAoeCwgeSwgJmxvY2FsWCwgJmxvY2FsWSk7CisgICAgdG90YWxUcmFuc2Zv
cm0uaW52ZXJzZSgpLm1hcCh4LCB5LCAmbG9jYWxYLCAmbG9jYWxZKTsKICAgICByZXR1cm4gUmVu
ZGVyQmxvY2s6Om5vZGVBdFBvaW50KHJlcXVlc3QsIHJlc3VsdCwgc3RhdGljX2Nhc3Q8aW50Pihs
b2NhbFgpLCBzdGF0aWNfY2FzdDxpbnQ+KGxvY2FsWSksIHR4LCB0eSwgaGl0VGVzdEFjdGlvbik7
CiB9CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhdGguY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhdGguY3BwCShyZXZpc2lvbiAxODE2MikKKysr
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3
ICs2OCw3IEBAIEZsb2F0UG9pbnQgUmVuZGVyUGF0aDo6bWFwQWJzb2x1dGVQb2ludFQKICAgICAv
LyBhYnNvbHV0ZSB0cmFuc2Zvcm0/IAogICAgIGRvdWJsZSBsb2NhbFg7CiAgICAgZG91YmxlIGxv
Y2FsWTsKLSAgICBhYnNvbHV0ZVRyYW5zZm9ybSgpLmludmVydCgpLm1hcChwb2ludC54KCksIHBv
aW50LnkoKSwgJmxvY2FsWCwgJmxvY2FsWSk7CisgICAgYWJzb2x1dGVUcmFuc2Zvcm0oKS5pbnZl
cnNlKCkubWFwKHBvaW50LngoKSwgcG9pbnQueSgpLCAmbG9jYWxYLCAmbG9jYWxZKTsKICAgICBy
ZXR1cm4gRmxvYXRQb2ludChsb2NhbFgsIGxvY2FsWSk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTVkdJbWFnZS5jcHAJKHJldmlzaW9uIDE4MTYyKQorKysgV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsNyArMTUwLDcgQEAg
dm9pZCBSZW5kZXJTVkdJbWFnZTo6cGFpbnQoUGFpbnRJbmZvJiBwYQogICAgIH0KIAogICAgIFBh
aW50SW5mbyBwaShwYWludEluZm8pOwotICAgIHBpLnJlY3QgPSBhYnNvbHV0ZVRyYW5zZm9ybSgp
LmludmVydCgpLm1hcFJlY3QocGkucmVjdCk7CisgICAgcGkucmVjdCA9IGFic29sdXRlVHJhbnNm
b3JtKCkuaW52ZXJzZSgpLm1hcFJlY3QocGkucmVjdCk7CiAKICAgICBpbnQgeCA9IDAsIHkgPSAw
OwogICAgIGlmIChzaG91bGRQYWludChwaSwgeCwgeSkpIHsKQEAgLTE4OCw3ICsxODgsNyBAQCBi
b29sIFJlbmRlclNWR0ltYWdlOjpub2RlQXRQb2ludChjb25zdCBICiAgICAgQWZmaW5lVHJhbnNm
b3JtIHRvdGFsVHJhbnNmb3JtID0gYWJzb2x1dGVUcmFuc2Zvcm0oKTsKICAgICB0b3RhbFRyYW5z
Zm9ybSAqPSB0cmFuc2xhdGlvbkZvckF0dHJpYnV0ZXMoKTsKICAgICBkb3VibGUgbG9jYWxYLCBs
b2NhbFk7Ci0gICAgdG90YWxUcmFuc2Zvcm0uaW52ZXJ0KCkubWFwKF94ICsgX3R4LCBfeSArIF90
eSwgJmxvY2FsWCwgJmxvY2FsWSk7CisgICAgdG90YWxUcmFuc2Zvcm0uaW52ZXJzZSgpLm1hcChf
eCArIF90eCwgX3kgKyBfdHksICZsb2NhbFgsICZsb2NhbFkpOwogICAgIHJldHVybiBSZW5kZXJJ
bWFnZTo6bm9kZUF0UG9pbnQocmVxdWVzdCwgcmVzdWx0LCAoaW50KWxvY2FsWCwgKGludClsb2Nh
bFksIDAsIDAsIGhpdFRlc3RBY3Rpb24pOwogfQogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTVkdUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
VkdUZXh0LmNwcAkocmV2aXNpb24gMTgxNjIpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
VkdUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCB2b2lkIFJlbmRlclNW
R1RleHQ6OmNvbXB1dGVBYnNvbHV0ZVJlcGFpCiAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9y
bSA9IGxvY2FsVHJhbnNmb3JtKCk7CiAgICAgciA9IHRyYW5zZm9ybS5tYXBSZWN0KHIpOwogICAg
IFJlbmRlckNvbnRhaW5lcjo6Y29tcHV0ZUFic29sdXRlUmVwYWludFJlY3QociwgZik7Ci0gICAg
ciA9IHRyYW5zZm9ybS5pbnZlcnQoKS5tYXBSZWN0KHIpOworICAgIHIgPSB0cmFuc2Zvcm0uaW52
ZXJzZSgpLm1hcFJlY3Qocik7CiB9CiAKIGJvb2wgUmVuZGVyU1ZHVGV4dDo6cmVxdWlyZXNMYXll
cigpCkBAIC0xMDAsNyArMTAwLDcgQEAgYm9vbCBSZW5kZXJTVkdUZXh0Ojpub2RlQXRQb2ludChj
b25zdCBIaQogewogICAgIEFmZmluZVRyYW5zZm9ybSB0b3RhbFRyYW5zZm9ybSA9IGFic29sdXRl
VHJhbnNmb3JtKCk7CiAgICAgZG91YmxlIGxvY2FsWCwgbG9jYWxZOwotICAgIHRvdGFsVHJhbnNm
b3JtLmludmVydCgpLm1hcChfeCwgX3ksICZsb2NhbFgsICZsb2NhbFkpOworICAgIHRvdGFsVHJh
bnNmb3JtLmludmVyc2UoKS5tYXAoX3gsIF95LCAmbG9jYWxYLCAmbG9jYWxZKTsKICAgICByZXR1
cm4gUmVuZGVyQmxvY2s6Om5vZGVBdFBvaW50KHJlcXVlc3QsIHJlc3VsdCwgKGludClsb2NhbFgs
IChpbnQpbG9jYWxZLCBfdHgsIF90eSwgaGl0VGVzdEFjdGlvbik7CiB9CiAKQEAgLTExNyw3ICsx
MTcsNyBAQCB2b2lkIFJlbmRlclNWR1RleHQ6OmFic29sdXRlUmVjdHMoVmVjdG9yCiB2b2lkIFJl
bmRlclNWR1RleHQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSkK
IHsgICAKICAgICBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyBwaShwYWludEluZm8pOwotICAgIHBp
LnJlY3QgPSAoYWJzb2x1dGVUcmFuc2Zvcm0oKSkuaW52ZXJ0KCkubWFwUmVjdChwaS5yZWN0KTsK
KyAgICBwaS5yZWN0ID0gKGFic29sdXRlVHJhbnNmb3JtKCkpLmludmVyc2UoKS5tYXBSZWN0KHBp
LnJlY3QpOwogICAgIFJlbmRlckJsb2NrOjpwYWludChwaSwgdHgsIHR5KTsKIH0KIApJbmRleDog
V2ViQ29yZS9yZW5kZXJpbmcvU1ZHSW5saW5lRmxvd0JveC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9yZW5kZXJpbmcvU1ZHSW5saW5lRmxvd0JveC5jcHAJKHJldmlzaW9uIDE4MTYyKQorKysg
V2ViQ29yZS9yZW5kZXJpbmcvU1ZHSW5saW5lRmxvd0JveC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTgwLDcgKzgwLDcgQEAgdm9pZCBwYWludFNWR0lubGluZUZsb3coSW5saW5lRmxvd0JveCogZgog
ICAgIFJlbmRlck9iamVjdDo6UGFpbnRJbmZvIHBpKHBhaW50SW5mbyk7CiAgICAgCiAgICAgaWYg
KCFmbG93LT5pc1Jvb3RJbmxpbmVCb3goKSkKLSAgICAgICAgcGkucmVjdCA9IChvYmplY3QtPmxv
Y2FsVHJhbnNmb3JtKCkpLmludmVydCgpLm1hcFJlY3QocGkucmVjdCk7CisgICAgICAgIHBpLnJl
Y3QgPSAob2JqZWN0LT5sb2NhbFRyYW5zZm9ybSgpKS5pbnZlcnNlKCkubWFwUmVjdChwaS5yZWN0
KTsKIAogICAgIGZsb2F0IG9wYWNpdHkgPSBvYmplY3QtPnN0eWxlKCktPm9wYWNpdHkoKTsKICAg
ICBpZiAob3BhY2l0eSA8IDEuMGYpIHsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRl
clRyZWVBc1RleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRl
clRyZWVBc1RleHQuY3BwCShyZXZpc2lvbiAxODE2MikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1NW
R1JlbmRlclRyZWVBc1RleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksOCArMTQ5LDggQEAg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgYwogICAgICAgICB0cyA8PCAi
aWRlbnRpdHkiOwogICAgIGVsc2UgCiAgICAgewotICAgICAgICB0cyA8PCAie209KCgiIDw8IG0u
bTExKCkgPDwgIiwiIDw8IG0ubTEyKCkgPDwgIikoIiA8PCBtLm0yMSgpIDw8ICIsIiA8PCBtLm0y
MigpIDw8ICIpKSI7Ci0gICAgICAgIHRzIDw8ICIgdD0oIiA8PCBtLmR4KCkgPDwgIiwiIDw8IG0u
ZHkoKSA8PCAiKX0iOworICAgICAgICB0cyA8PCAie209KCgiIDw8IG0uYSgpIDw8ICIsIiA8PCBt
LmIoKSA8PCAiKSgiIDw8IG0uYygpIDw8ICIsIiA8PCBtLmQoKSA8PCAiKSkiOworICAgICAgICB0
cyA8PCAiIHQ9KCIgPDwgbS5lKCkgPDwgIiwiIDw8IG0uZigpIDw8ICIpfSI7CiAgICAgfQogICAg
IHJldHVybiB0czsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11812</attachid>
            <date>2006-12-11 17:07:19 -0800</date>
            <delta_ts>2006-12-12 03:15:26 -0800</delta_ts>
            <desc>Updated patch II</desc>
            <filename>KillSVGMatrix.diff</filename>
            <type>text/plain</type>
            <size>111952</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE4MTYzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDYtMTItMTIgIE5pa29sYXMgWmltbWVybWFu
biAgPHppbW1lcm1hbm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2Vpbmln
LgorCisgICAgICAgIFNWR1BvaW50LW1hdHJpeFRyYW5zZm9ybSB3b3JrcyBhZ2FpbiBhcyBleHBl
Y3RlZCwgbm93IHRoYXQgU1ZHTWF0cml4CisgICAgICAgIGlzIGNvbnZlcnRlZCB0byB0aGUgQWZm
aW5lVHJhbnNmb3JtIFBPRCB0eXBlLiBVcGRhdGluZyBsYXlvdXQgdGVzdCByZXN1bHQuCisKKyAg
ICAgICAgKiBzdmcvY3VzdG9tL1NWR1BvaW50LW1hdHJpeFRyYW5zZm9ybS1leHBlY3RlZC50eHQ6
CisKIDIwMDYtMTItMTEgIE5pa29sYXMgWmltbWVybWFubiAgPHppbW1lcm1hbm5Aa2RlLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogTGF5b3V0VGVzdHMvc3Zn
L2N1c3RvbS9TVkdQb2ludC1tYXRyaXhUcmFuc2Zvcm0tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3N2Zy9jdXN0b20vU1ZHUG9pbnQtbWF0cml4VHJhbnNmb3JtLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMTgxNjMpCisrKyBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL1NWR1Bv
aW50LW1hdHJpeFRyYW5zZm9ybS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNiAr
MSw2IEBACiBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgUmVuZGVyVmlldyBhdCAoMCww
KSBzaXplIDgwMHg2MDAKLSAgICBLQ2FudmFzQ29udGFpbmVyIHtzdmd9IGF0ICg4MCwyNCkgc2l6
ZSAxNTZ4NzIKKyAgICBLQ2FudmFzQ29udGFpbmVyIHtzdmd9IGF0ICg4MCwyNCkgc2l6ZSAxNzJ4
NzIKICAgICAgIFJlbmRlclNWR1RleHQge3RleHR9IGF0ICgyMCwyMCkgc2l6ZSA4MDB4MTgKLSAg
ICAgICAgUmVuZGVyU1ZHSW5saW5lVGV4dCB7I3RleHR9IGF0ICgwLC0xNCkgc2l6ZSAzOXgxOAot
ICAgICAgICAgIHRleHQgcnVuIGF0ICgwLC0xNCkgd2lkdGggMzk6ICJGYWlsZWQiCisgICAgICAg
IFJlbmRlclNWR0lubGluZVRleHQgeyN0ZXh0fSBhdCAoMCwtMTQpIHNpemUgNDN4MTgKKyAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwtMTQpIHdpZHRoIDQzOiAiUGFzc2VkIgpJbmRleDogV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4
MTYzKQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNzMg
QEAKKzIwMDYtMTItMTIgIE5pa29sYXMgWmltbWVybWFubiAgPHppbW1lcm1hbm5Aa2RlLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBDaGFuZ2VMb2cuCisKKyAgICAgICAgRml4ZXM6IGh0dHA6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzk3CisKKyAgICAgICAgUmVtb3Zl
IFNWR01hdHJpeCwgcmVwbGFjZSBpdCBieSBBZmZpbmVUcmFuc2Zvcm0gdXNhZ2UgZXZlcnl3aGVy
ZS4KKyAgICAgICAgQ2hhbmdlZCBBZmZpbmVUcmFuc2Zvcm0gQVBJIHRvIGJlIGFibGUgdG8gYmUg
dXNlZCB3aXRoaW4gZ2VuZXJhdGlvbgorICAgICAgICAobTExKCkgLT4gYSgpLCBtMTIoKSAtPiBi
KCksIC4uLikuIEFkZCBzb21lIG1ldGhvZHMgbmVlZGVkIGZvciBTVkcuCisKKyAgICAgICAgVGhl
IGFjdHVhbCBTVkdNYXRyaXggLT4gQWZmaW5lVHJhbnNmb3JtYXRpb24gcGF0Y2ggaGFzIGJlZW4g
Y3JlYXRlZAorICAgICAgICBieSBSb2IgLSBJIGp1c3QgYWRhcHRlZCBpdCB0byB0aGUgYXV0b2dl
bmVyYXRlZCBQT0Qgc3R5bGUuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTVkdNYXRyaXhDdXN0b20uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHTWF0cml4OjppbnZlcnNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTU1ZHTWF0cml4Ojpyb3RhdGVGcm9tVmVjdG9yKToKKyAgICAgICAgKiBiaW5k
aW5ncy9vYmpjL0RPTUludGVybmFsLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG06CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
T2JqQy5wbToKKyAgICAgICAgKiBrc3ZnMi9taXNjL0tTVkdUaW1lU2NoZWR1bGVyLmNwcDoKKyAg
ICAgICAgKiBrc3ZnMi9taXNjL1NWR0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBrc3ZnMi9z
dmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmhhbmRsZVRpbWVyRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmNhbGN1bGF0ZVJvdGF0aW9uRnJvbU1h
dHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6aW5p
dGlhbE1hdHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVu
dDo6dHJhbnNmb3JtTWF0cml4KToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQW5pbWF0ZVRyYW5z
Zm9ybUVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6Y2FudmFzUmVzb3VyY2Up
OgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRml0VG9WaWV3Qm94Ojp2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKToKKyAgICAgICAg
KiBrc3ZnMi9zdmcvU1ZHRml0VG9WaWV3Qm94Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0xl
bmd0aExpc3QuY3BwOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpidWls
ZEdyYWRpZW50KToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTG9jYXRhYmxlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0xvY2F0YWJsZTo6Z2V0Q1RNKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0xvY2F0YWJsZTo6Z2V0U2NyZWVuQ1RNKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xvY2F0YWJs
ZTo6Z2V0VHJhbnNmb3JtVG9FbGVtZW50KToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTG9jYXRh
YmxlLmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwOgorICAgICAg
ICAqIGtzdmcyL3N2Zy9TVkdNYXRyaXguY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGtzdmcyL3N2
Zy9TVkdNYXRyaXguaDogUmVtb3ZlZC4KKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTWF0cml4Lmlk
bDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTnVtYmVyTGlzdC5jcHA6CisgICAgICAgICoga3N2
ZzIvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRl
cm5FbGVtZW50Ojpub3RpZnlBdHRyaWJ1dGVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UGF0dGVybkVsZW1lbnQ6OmdldENUTSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1BhdHRlcm5F
bGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1BvaW50LmlkbDoKKyAgICAgICAgKiBr
c3ZnMi9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpnZXRDVE0pOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdQ
cmVzZXJ2ZUFzcGVjdFJhdGlvLmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1JhZGlhbEdyYWRp
ZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQ6OmJ1aWxkR3JhZGllbnQpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnZpZXdwb3J0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR01hdHJpeCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmdldENUTSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdTVkdFbGVtZW50OjpnZXRTY3JlZW5DVE0pOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdTVkdF
bGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwOgorICAg
ICAgICAqIGtzdmcyL3N2Zy9TVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQ6OmdldENUTSk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50OjpnZXRTY3JlZW5DVE0pOgorICAgICAg
ICAqIGtzdmcyL3N2Zy9TVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50Lmg6CisgICAgICAgICoga3N2
ZzIvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojpsb2NhbE1hdHJpeCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6Z2V0Q1RNKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpnZXRTY3JlZW5DVE0p
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnVwZGF0
ZUxvY2FsVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZFRyYW5zZm9ybWFi
bGVFbGVtZW50OjphdHRhY2gpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0RWxlbWVudDo6bG9jYWxNYXRyaXgpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVGV4dEVsZW1lbnQ6OnVwZGF0ZUxvY2FsVHJhbnNmb3JtKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1RleHRFbGVtZW50OjphdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHVGV4dEVsZW1lbnQ6OmdldFNjcmVlbkNUTSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0
RWxlbWVudDo6Z2V0Q1RNKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHVGV4dEVsZW1lbnQuaDoK
KyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtLmNwcDoKKyAgICAgICAgKFNWR1RyYW5z
Zm9ybTo6U1ZHVHJhbnNmb3JtKToKKyAgICAgICAgKFNWR1RyYW5zZm9ybTo6bWF0cml4KToKKyAg
ICAgICAgKFNWR1RyYW5zZm9ybTo6c2V0TWF0cml4KToKKyAgICAgICAgKFNWR1RyYW5zZm9ybTo6
c2V0VHJhbnNsYXRlKToKKyAgICAgICAgKFNWR1RyYW5zZm9ybTo6c2V0U2NhbGUpOgorICAgICAg
ICAoU1ZHVHJhbnNmb3JtOjpzZXRSb3RhdGUpOgorICAgICAgICAoU1ZHVHJhbnNmb3JtOjpzZXRT
a2V3WCk6CisgICAgICAgIChTVkdUcmFuc2Zvcm06OnNldFNrZXdZKToKKyAgICAgICAgKiBrc3Zn
Mi9zdmcvU1ZHVHJhbnNmb3JtLmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybUxp
c3QuY3BwOgorICAgICAgICAoU1ZHVHJhbnNmb3JtTGlzdDo6Y3JlYXRlU1ZHVHJhbnNmb3JtRnJv
bU1hdHJpeCk6CisgICAgICAgIChTVkdUcmFuc2Zvcm1MaXN0Ojpjb25jYXRlbmF0ZSk6CisgICAg
ICAgICoga3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcv
U1ZHVHJhbnNmb3JtYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zvcm1hYmxl
OjpnZXRDVE0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtYWJsZTo6Z2V0U2NyZWVu
Q1RNKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybWFibGU6OnBhcnNlVHJhbnNmb3Jt
QXR0cmlidXRlKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0FmZmluZVRyYW5zZm9ybS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06Om11bHRpcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkFm
ZmluZVRyYW5zZm9ybTo6c2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3Jt
OjpzY2FsZU5vblVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjpy
b3RhdGVGcm9tVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6Zmxp
cFgpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjpmbGlwWSk6CisgICAgICAg
IChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06OnNrZXdYKToKKyAgICAgICAgKFdlYkNvcmU6OkFm
ZmluZVRyYW5zZm9ybTo6c2tld1kpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0FmZmlu
ZVRyYW5zZm9ybS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0FmZmluZVRy
YW5zZm9ybUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6YSk6
CisgICAgICAgIChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06OnNldEEpOgorICAgICAgICAoV2Vi
Q29yZTo6QWZmaW5lVHJhbnNmb3JtOjpiKToKKyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5z
Zm9ybTo6c2V0Qik6CisgICAgICAgIChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06OmMpOgorICAg
ICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjpzZXRDKToKKyAgICAgICAgKFdlYkNvcmU6
OkFmZmluZVRyYW5zZm9ybTo6ZCk6CisgICAgICAgIChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06
OnNldEQpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjplKToKKyAgICAgICAg
KFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6c2V0RSk6CisgICAgICAgIChXZWJDb3JlOjpBZmZp
bmVUcmFuc2Zvcm06OmYpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjpzZXRG
KToKKyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6aW52ZXJzZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQWZmaW5lVHJhbnNmb3JtQ0cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjphKToKKyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRy
YW5zZm9ybTo6c2V0QSk6CisgICAgICAgIChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06OmIpOgor
ICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjpzZXRCKToKKyAgICAgICAgKFdlYkNv
cmU6OkFmZmluZVRyYW5zZm9ybTo6Yyk6CisgICAgICAgIChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zv
cm06OnNldEMpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjpkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6c2V0RCk6CisgICAgICAgIChXZWJDb3JlOjpB
ZmZpbmVUcmFuc2Zvcm06OmUpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjpz
ZXRFKToKKyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6Zik6CisgICAgICAgIChX
ZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06OnNldEYpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5l
VHJhbnNmb3JtOjppbnZlcnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9BZmZp
bmVUcmFuc2Zvcm1RdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06OmEp
OgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjpzZXRBKToKKyAgICAgICAgKFdl
YkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6Yik6CisgICAgICAgIChXZWJDb3JlOjpBZmZpbmVUcmFu
c2Zvcm06OnNldEIpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjpjKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6c2V0Qyk6CisgICAgICAgIChXZWJDb3Jl
OjpBZmZpbmVUcmFuc2Zvcm06OmQpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3Jt
OjpzZXREKToKKyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06OnNldEUpOgorICAgICAgICAoV2ViQ29yZTo6QWZm
aW5lVHJhbnNmb3JtOjpmKToKKyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6c2V0
Rik6CisgICAgICAgIChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06OmludmVyc2UpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckZvcmVpZ25PYmplY3Q6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZv
cmVpZ25PYmplY3Q6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUGF0
aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJQYXRoOjptYXBBYnNvbHV0ZVBvaW50VG9M
b2NhbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdJbWFnZTo6bm9kZUF0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdU
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OmNvbXB1dGVBYnNvbHV0
ZVJlcGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6Om5vZGVBdFBv
aW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OnBhaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvU1ZHSW5saW5lRmxvd0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWlu
dFNWR0lubGluZUZsb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9TVkdSZW5kZXJUcmVlQXNUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorCiAyMDA2LTEyLTExICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBCcmFkeS4K
SW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAxODE2MykKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTU4LDggKzE5NTgsNiBAQAogCQlBODhBRDQ5RjA5NTI0OEYwMDAx
REQxOTYgLyogU1ZHTG9jYXRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBOEMwRjg4MTA4OTcwMUYzMDBCQTUxMTQgLyogU1ZHTG9jYXRhYmxlLmgg
Ki87IH07CiAJCUE4OEFENEEwMDk1MjQ4RjAwMDFERDE5NiAvKiBTVkdNYXJrZXJFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzBGODgy
MDg5NzAxRjMwMEJBNTExNCAvKiBTVkdNYXJrZXJFbGVtZW50LmNwcCAqLzsgfTsKIAkJQTg4QUQ0
QTEwOTUyNDhGMDAwMUREMTk2IC8qIFNWR01hcmtlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzBGODgzMDg5NzAxRjMwMEJBNTExNCAv
KiBTVkdNYXJrZXJFbGVtZW50LmggKi87IH07Ci0JCUE4OEFENEEyMDk1MjQ4RjAwMDFERDE5NiAv
KiBTVkdNYXRyaXguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQThDMEY4ODQwODk3MDFGMzAwQkE1MTE0IC8qIFNWR01hdHJpeC5jcHAgKi87IH07Ci0J
CUE4OEFENEEzMDk1MjQ4RjAwMDFERDE5NiAvKiBTVkdNYXRyaXguaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzBGODg1MDg5NzAxRjMwMEJBNTExNCAv
KiBTVkdNYXRyaXguaCAqLzsgfTsKIAkJQTg4QUQ0QTYwOTUyNDhGMDAwMUREMTk2IC8qIFNWR051
bWJlckxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQThDMEY4ODgwODk3MDFGMzAwQkE1MTE0IC8qIFNWR051bWJlckxpc3QuY3BwICovOyB9Owog
CQlBODhBRDRBNzA5NTI0OEYwMDAxREQxOTYgLyogU1ZHTnVtYmVyTGlzdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDMEY4ODkwODk3MDFGMzAwQkE1
MTE0IC8qIFNWR051bWJlckxpc3QuaCAqLzsgfTsKIAkJQTg4QUQ0QTgwOTUyNDhGMDAwMUREMTk2
IC8qIFNWR1BhaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE4QzBGODhBMDg5NzAxRjMwMEJBNTExNCAvKiBTVkdQYWludC5jcHAgKi87IH07CkBA
IC0yMjMxLDYgKzIyMjksNyBAQAogCQlCMjMxMEI3NjBCMUY0NkEyMDBENTVEODcgLyogQ2dTdXBw
b3J0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIy
MzEwQjczMEIxRjQ2QTIwMEQ1NUQ4NyAvKiBDZ1N1cHBvcnQuY3BwICovOyB9OwogCQlCMjMxMEI3
NzBCMUY0NkEyMDBENTVEODcgLyogQ2dTdXBwb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjMxMEI3NDBCMUY0NkEyMDBENTVEODcgLyogQ2dTdXBw
b3J0LmggKi87IH07CiAJCUIyMzEwQjc4MEIxRjQ2QTMwMEQ1NUQ4NyAvKiBSZW5kZXJQYXRoQ2cu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIzMTBC
NzUwQjFGNDZBMjAwRDU1RDg3IC8qIFJlbmRlclBhdGhDZy5jcHAgKi87IH07CisJCUIyNURGQUFG
MEIyRTI5MjkwMDBFNjUxMCAvKiBKU1NWR01hdHJpeEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjVERkFBRTBCMkUyOTI5MDAwRTY1MTAg
LyogSlNTVkdNYXRyaXhDdXN0b20uY3BwICovOyB9OwogCQlCMjc1MzU1NjBCMDUzODE0MDAyQ0U2
NEYgLyogQWZmaW5lVHJhbnNmb3JtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEIyNzUzNTI3MEIwNTM4MTQwMDJDRTY0RiAvKiBBZmZpbmVUcmFuc2Zv
cm0uY3BwICovOyB9OwogCQlCMjc1MzU1NzBCMDUzODE0MDAyQ0U2NEYgLyogQWZmaW5lVHJhbnNm
b3JtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1
MzUyODBCMDUzODE0MDAyQ0U2NEYgLyogQWZmaW5lVHJhbnNmb3JtLmggKi87IH07CiAJCUIyNzUz
NTU4MEIwNTM4MTQwMDJDRTY0RiAvKiBBZmZpbmVUcmFuc2Zvcm1DRy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUyQTBCMDUzODE0MDAyQ0U2
NEYgLyogQWZmaW5lVHJhbnNmb3JtQ0cuY3BwICovOyB9OwpAQCAtNDkwOCw4ICs0OTA3LDYgQEAK
IAkJQThDMEY4ODEwODk3MDFGMzAwQkE1MTE0IC8qIFNWR0xvY2F0YWJsZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0xvY2F0YWJsZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJ
QThDMEY4ODIwODk3MDFGMzAwQkE1MTE0IC8qIFNWR01hcmtlckVsZW1lbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdNYXJrZXJF
bGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFi
cyA9IDA7IH07CiAJCUE4QzBGODgzMDg5NzAxRjMwMEJBNTExNCAvKiBTVkdNYXJrZXJFbGVtZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50
V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZH
TWFya2VyRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVz
ZXNUYWJzID0gMDsgfTsKLQkJQThDMEY4ODQwODk3MDFGMzAwQkE1MTE0IC8qIFNWR01hdHJpeC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50
V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNWR01hdHJpeC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNl
c1RhYnMgPSAwOyB9OwotCQlBOEMwRjg4NTA4OTcwMUYzMDBCQTUxMTQgLyogU1ZHTWF0cml4Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lk
dGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHTWF0
cml4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAw
OyB9OwogCQlBOEMwRjg4ODA4OTcwMUYzMDBCQTUxMTQgLyogU1ZHTnVtYmVyTGlzdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGgg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR051
bWJlckxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNU
YWJzID0gMDsgfTsKIAkJQThDMEY4ODkwODk3MDFGMzAwQkE1MTE0IC8qIFNWR051bWJlckxpc3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdO
dW1iZXJMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQlBOEMwRjg4QTA4OTcwMUYzMDBCQTUxMTQgLyogU1ZHUGFpbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdQ
YWludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMg
PSAwOyB9OwpAQCAtNTE5Miw2ICs1MTg5LDcgQEAKIAkJQjIzMTBCNzMwQjFGNDZBMjAwRDU1RDg3
IC8qIENnU3VwcG9ydC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q2dTdXBwb3J0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIzMTBCNzQwQjFG
NDZBMjAwRDU1RDg3IC8qIENnU3VwcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ2dTdXBwb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMzEwQjc1
MEIxRjQ2QTIwMEQ1NUQ4NyAvKiBSZW5kZXJQYXRoQ2cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclBhdGhDZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUIyNURGQUFFMEIyRTI5MjkwMDBFNjUxMCAvKiBKU1NWR01hdHJpeEN1c3RvbS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdNYXRyaXhDdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzUyNzBCMDUzODE0MDAy
Q0U2NEYgLyogQWZmaW5lVHJhbnNmb3JtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBBZmZpbmVUcmFuc2Zvcm0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCMjc1MzUyODBCMDUzODE0MDAyQ0U2NEYgLyogQWZmaW5lVHJhbnNmb3JtLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBZmZpbmVUcmFuc2Zvcm0uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1MkEwQjA1MzgxNDAwMkNFNjRGIC8qIEFmZmluZVRy
YW5zZm9ybUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBZmZp
bmVUcmFuc2Zvcm1DRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MjUwLDgg
KzgyNDgsNiBAQAogCQkJCUE4QzBGODgzMDg5NzAxRjMwMEJBNTExNCAvKiBTVkdNYXJrZXJFbGVt
ZW50LmggKi8sCiAJCQkJQTgxNjU1RTIwOTZCQzEzOTAwNjAxMDU4IC8qIFNWR01hc2tFbGVtZW50
LmNwcCAqLywKIAkJCQlBODE2NTVFMzA5NkJDMTM5MDA2MDEwNTggLyogU1ZHTWFza0VsZW1lbnQu
aCAqLywKLQkJCQlBOEMwRjg4NDA4OTcwMUYzMDBCQTUxMTQgLyogU1ZHTWF0cml4LmNwcCAqLywK
LQkJCQlBOEMwRjg4NTA4OTcwMUYzMDBCQTUxMTQgLyogU1ZHTWF0cml4LmggKi8sCiAJCQkJQTgz
M0JFREQwQTJDMzQ0QjAwRDU3NjY0IC8qIFNWR01hdHJpeC5pZGwgKi8sCiAJCQkJQTgzM0JFQTIw
QTJDMzI5MzAwRDU3NjY0IC8qIFNWR051bWJlci5pZGwgKi8sCiAJCQkJQThDMEY4ODgwODk3MDFG
MzAwQkE1MTE0IC8qIFNWR051bWJlckxpc3QuY3BwICovLApAQCAtODY1Nyw2ICs4NjUzLDcgQEAK
IAkJCQkxQTc1MEREMzBBOTBFNzI5MDAwRkYyMTUgLyogSlNOb2RlSXRlcmF0b3JDdXN0b20uY3Bw
ICovLAogCQkJCTg1NzREMUYxMEFERTYxMjIwMDRDQkExMSAvKiBKU1NWR0VsZW1lbnRXcmFwcGVy
RmFjdG9yeS5jcHAgKi8sCiAJCQkJODU3NEQxRjIwQURFNjEyMjAwNENCQTExIC8qIEpTU1ZHRWxl
bWVudFdyYXBwZXJGYWN0b3J5LmggKi8sCisJCQkJQjI1REZBQUUwQjJFMjkyOTAwMEU2NTEwIC8q
IEpTU1ZHTWF0cml4Q3VzdG9tLmNwcCAqLywKIAkJCQkxQTc1MEUzMzBBOTBGODlGMDAwRkYyMTUg
LyogSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcCAqLywKIAkJCQk5M0I3MEQ0MTA5RUIwQzdDMDA5RDg0
NjggLyogSlNYTUxIdHRwUmVxdWVzdC5jcHAgKi8sCiAJCQkJOTNCNzBENDIwOUVCMEM3QzAwOUQ4
NDY4IC8qIEpTWE1MSHR0cFJlcXVlc3QuaCAqLywKQEAgLTk1MTcsNyArOTUxNCw2IEBACiAJCQkJ
QTg4QUQ0OUQwOTUyNDhGMDAwMUREMTk2IC8qIFNWR0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE4OEFENDlGMDk1MjQ4RjAwMDFERDE5NiAvKiBTVkdMb2NhdGFibGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE4OEFENEExMDk1MjQ4RjAwMDFERDE5NiAvKiBTVkdNYXJrZXJFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKLQkJCQlBODhBRDRBMzA5NTI0OEYwMDAxREQxOTYgLyogU1ZHTWF0cml4Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBODhBRDRBNzA5NTI0OEYwMDAxREQxOTYgLyogU1ZHTnVtYmVy
TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg4QUQ0QTkwOTUyNDhGMDAwMUREMTk2IC8qIFNW
R1BhaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODhBRDRBQjA5NTI0OEYwMDAxREQxOTYgLyog
U1ZHUGF0aEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMTEwOTcsNyArMTEwOTMsNiBAQAog
CQkJCUE4OEFENDlCMDk1MjQ4RjAwMDFERDE5NiAvKiBTVkdMaW5lRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBODhBRDQ5RTA5NTI0OEYwMDAxREQxOTYgLyogU1ZHTG9jYXRhYmxlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE4OEFENEEwMDk1MjQ4RjAwMDFERDE5NiAvKiBTVkdNYXJr
ZXJFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE4OEFENEEyMDk1MjQ4RjAwMDFERDE5
NiAvKiBTVkdNYXRyaXguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg4QUQ0QTYwOTUyNDhGMDAw
MUREMTk2IC8qIFNWR051bWJlckxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg4QUQ0QTgw
OTUyNDhGMDAwMUREMTk2IC8qIFNWR1BhaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4OEFE
NEFBMDk1MjQ4RjAwMDFERDE5NiAvKiBTVkdQYXRoRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTEyMTU2LDYgKzEyMTUxLDcgQEAKIAkJCQlCQzE4QzVEMTBCMkE4ODZGMDAxODQ2MUQgLyog
VGV4dEJyZWFrSXRlcmF0b3JJQ1UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUE0QzNBNzYwQjJC
MTY3OTAwMjMzNEEyIC8qIFN0eWxlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0Uy
NDI1RjBCMkI1MDk1MDBDNzMyQTEgLyogSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUIyNURGQUFGMEIyRTI5MjkwMDBFNjUxMCAvKiBKU1NWR01hdHJpeEN1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdNYXRy
aXhDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdNYXRy
aXhDdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR01h
dHJpeEN1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Cisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0g
U3VpdGUgMzMwLAorICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTU1ZHTWF0cml4LmgiCisKKyNpbmNsdWRlICJBZmZp
bmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJTVkdFeGNlcHRpb24uaCIKKwordXNpbmcgbmFtZXNw
YWNlIEtKUzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitKU1ZhbHVlKiBKU1NWR01hdHJpeDo6
aW52ZXJzZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IExpc3QmKQoreworICAgIEFmZmluZVRyYW5z
Zm9ybSYgaW1wKGltcGwoKSk7CisgICAgS0pTOjpKU1ZhbHVlKiByZXN1bHQgPSB0b0pTKGV4ZWMs
IGltcC5pbnZlcnNlKCkpOworCisgICAgaWYgKCFpbXAuaXNJbnZlcnRpYmxlKCkpCisgICAgICAg
IHNldERPTUV4Y2VwdGlvbihleGVjLCBTVkdfTUFUUklYX05PVF9JTlZFUlRBQkxFKTsKKworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK0pTVmFsdWUqIEpTU1ZHTWF0cml4Ojpyb3RhdGVGcm9tVmVj
dG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTGlzdCYgYXJncykKK3sKKyAgICBBZmZpbmVUcmFu
c2Zvcm0mIGltcChpbXBsKCkpOworIAorICAgIGZsb2F0IHggPSBhcmdzWzBdLT50b051bWJlcihl
eGVjKTsKKyAgICBmbG9hdCB5ID0gYXJnc1sxXS0+dG9OdW1iZXIoZXhlYyk7CisKKyAgICBLSlM6
OkpTVmFsdWUqIHJlc3VsdCA9IHRvSlMoZXhlYywgaW1wLnJvdGF0ZUZyb21WZWN0b3IoeCwgeSkp
OworCisgICAgaWYgKHggPT0gMC4wIHx8IHkgPT0gMC4wKQorICAgICAgICBzZXRET01FeGNlcHRp
b24oZXhlYywgU1ZHX0lOVkFMSURfVkFMVUVfRVJSKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9
CisgICAgCit9CisKKy8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9ET01JbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01J
bnRlcm5hbC5oCShyZXZpc2lvbiAxODE2MykKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01J
bnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMiArMzEsNiBAQAogI2ltcG9ydCAiRE9N
T2JqZWN0LmgiCiAjaW1wb3J0ICJET01SR0JDb2xvci5oIgogCi0jaWZkZWYgU1ZHX1NVUFBPUlQK
LSNpbXBvcnQgIkRPTVNWR051bWJlci5oIgotI2ltcG9ydCAiRE9NU1ZHUG9pbnQuaCIKLSNpbXBv
cnQgIkRPTVNWR1JlY3QuaCIKLSNlbmRpZiAvLyBTVkdfU1VQUE9SVAotCiAjaWZkZWYgWFBBVEhf
U1VQUE9SVAogI2ltcG9ydCAiRE9NWFBhdGhOU1Jlc29sdmVyLmgiCiAjZW5kaWYgLy8gWFBBVEhf
U1VQUE9SVApAQCAtMjEyLDYgKzIwNiw3IEBACiAjaW1wb3J0ICJET01TVkdNYXNrRWxlbWVudElu
dGVybmFsLmgiCiAjaW1wb3J0ICJET01TVkdNYXRyaXhJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9N
U1ZHTWV0YWRhdGFFbGVtZW50SW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTVNWR051bWJlckludGVy
bmFsLmgiCiAjaW1wb3J0ICJET01TVkdOdW1iZXJMaXN0SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRP
TVNWR1BhaW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVNWR1BhdGhFbGVtZW50SW50ZXJuYWwu
aCIKQEAgLTIzNywxMiArMjMyLDE0IEBACiAjaW1wb3J0ICJET01TVkdQYXRoU2VnTW92ZXRvQWJz
SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVNWR1BhdGhTZWdNb3ZldG9SZWxJbnRlcm5hbC5oIgog
I2ltcG9ydCAiRE9NU1ZHUGF0dGVybkVsZW1lbnRJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NU1ZH
UG9pbnRJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NU1ZHUG9pbnRMaXN0SW50ZXJuYWwuaCIKICNp
bXBvcnQgIkRPTVNWR1BvbHlnb25FbGVtZW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVNWR1Bv
bHlsaW5lRWxlbWVudEludGVybmFsLmgiCiAjaW1wb3J0ICJET01TVkdQcmVzZXJ2ZUFzcGVjdFJh
dGlvSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVNWR1JhZGlhbEdyYWRpZW50RWxlbWVudEludGVy
bmFsLmgiCiAjaW1wb3J0ICJET01TVkdSZWN0RWxlbWVudEludGVybmFsLmgiCisjaW1wb3J0ICJE
T01TVkdSZWN0SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVNWR1JlbmRlcmluZ0ludGVudEludGVy
bmFsLmgiCiAjaW1wb3J0ICJET01TVkdTVkdFbGVtZW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRP
TVNWR1NjcmlwdEVsZW1lbnRJbnRlcm5hbC5oIgpAQCAtMjc1LDYgKzI3Miw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBjbGFzcyBOb2RlRmlsdGVyOwogCiAjaWZkZWYgU1ZHX1NVUFBPUlQK
KyAgICBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiAgICAgY2xhc3MgRmxvYXRQb2ludDsKICAgICBj
bGFzcyBGbG9hdFJlY3Q7CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKQEAgLTMwNCwyNyArMzAyLDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQGVuZAogCiAKLSNpZmRlZiBTVkdfU1VQUE9SVAotLy8g
U1ZHIEludGVybmFsIEludGVyZmFjZXMKLQotQGludGVyZmFjZSBET01TVkdOdW1iZXIgKFdlYkNv
cmVJbnRlcm5hbCkKLSsgKERPTVNWR051bWJlciAqKV9TVkdOdW1iZXJXaXRoOihmbG9hdCl2YWx1
ZTsKLS0gKGZsb2F0KV9TVkdOdW1iZXI7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NU1ZHUG9pbnQg
KFdlYkNvcmVJbnRlcm5hbCkKLSsgKERPTVNWR1BvaW50ICopX1NWR1BvaW50V2l0aDooV2ViQ29y
ZTo6RmxvYXRQb2ludClpbXBsOwotLSAoV2ViQ29yZTo6RmxvYXRQb2ludClfU1ZHUG9pbnQ7Ci1A
ZW5kCi0KLUBpbnRlcmZhY2UgRE9NU1ZHUmVjdCAoV2ViQ29yZUludGVybmFsKQotKyAoRE9NU1ZH
UmVjdCAqKV9TVkdSZWN0V2l0aDooV2ViQ29yZTo6RmxvYXRSZWN0KWltcGw7Ci0tIChXZWJDb3Jl
OjpGbG9hdFJlY3QpX1NWR1JlY3Q7Ci1AZW5kCi0KLSNlbmRpZiAvLyBTVkdfU1VQUE9SVAotCi0K
ICNpZmRlZiBYUEFUSF9TVVBQT1JUCiAvLyBYUGF0aCBJbnRlcm5hbCBJbnRlcmZhY2VzCiAKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNp
b24gMTgxNjMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNSBAQAogIwotIyBLRE9NIElETCBwYXJzZXIKLSMK
LSMgQ29weXJpZ2h0IChDKSAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3Jn
PgorIyBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJt
YW5uQGtkZS5vcmc+CiAjIENvcHlyaWdodCAoQykgMjAwNiBBbmRlcnMgQ2FybHNzb24gPGFuZGVy
c2NhQG1hYy5jb20+CiAjIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2Vp
bmlnQGdtYWlsLmNvbT4KICMgQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3Yg
PGFwQHdlYmtpdC5vcmc+CkBAIC0xNTUsOCArMTUzLDggQEAgc3ViIEF2b2lkSW5jbHVzaW9uT2ZU
eXBlCiB7CiAgICAgbXkgJHR5cGUgPSBzaGlmdDsKIAotICAgICMgU3BlY2lhbCBjYXNlOiBTVkdS
ZWN0LmggLyBTVkdQb2ludC5oIC8gU1ZHTnVtYmVyLmggZG8gbm90IGV4aXN0LgotICAgIHJldHVy
biAxIGlmICR0eXBlIGVxICJTVkdSZWN0IiBvciAkdHlwZSBlcSAiU1ZHUG9pbnQiIG9yICR0eXBl
IGVxICJTVkdOdW1iZXIiOworICAgICMgU3BlY2lhbCBjYXNlOiBTVkdSZWN0LmggLyBTVkdQb2lu
dC5oIC8gU1ZHTnVtYmVyLmggLyBTVkdNYXRyaXguaCBkbyBub3QgZXhpc3QuCisgICAgcmV0dXJu
IDEgaWYgJHR5cGUgZXEgIlNWR1JlY3QiIG9yICR0eXBlIGVxICJTVkdQb2ludCIgb3IgJHR5cGUg
ZXEgIlNWR051bWJlciIgb3IgJHR5cGUgZXEgIlNWR01hdHJpeCI7CiAgICAgcmV0dXJuIDA7CiB9
CiAKQEAgLTI2Nyw3ICsyNjUsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICBteSAkcG9kVHlw
ZSA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlBPRFR5cGUifTsKICAgICBteSAk
cGFzc1R5cGUgPSAkcG9kVHlwZSA/ICJjb25zdCAkcG9kVHlwZSYiIDogIiRpbXBsQ2xhc3NOYW1l
KiI7CiAKLSAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2luY2x1ZGUgXCIkcG9kVHlwZS5oXCJc
biIpIGlmICRwb2RUeXBlIGFuZCAkcG9kVHlwZSBuZSAiZmxvYXQiOworICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIjaW5jbHVkZSBcIiRwb2RUeXBlLmhcIlxuIikgaWYgJHBvZFR5cGUgYW5kICRw
b2RUeXBlIG5lICJkb3VibGUiOwogCiAgICAgbXkgJG51bUNvbnN0YW50cyA9IEB7JGRhdGFOb2Rl
LT5jb25zdGFudHN9OwogICAgIG15ICRudW1BdHRyaWJ1dGVzID0gQHskZGF0YU5vZGUtPmF0dHJp
YnV0ZXN9OwpAQCAtNzk3LDcgKzc5NSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgY2FzZSAiIC4gV0tfdWNmaXJz
dCgkbmFtZSkgLiAiQXR0ck51bTpcbiIpOwogCiAgICAgICAgICAgICAgICAgaWYgKCRwb2RUeXBl
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgkcG9kVHlwZSBlcSAiZmxvYXQiKSB7ICMgU3Bl
Y2lhbCBjYXNlIGZvciBKU1NWR051bWJlcgorICAgICAgICAgICAgICAgICAgICBpZiAoJHBvZFR5
cGUgZXEgImRvdWJsZSIpIHsgIyBTcGVjaWFsIGNhc2UgZm9yIEpTU1ZHTnVtYmVyCiAgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuICIgLiBO
YXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAiaW1wIikgLiAiO1xuIik7CiAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLCAiaW1wLiRuYW1lKCkiKSAuICI7XG4iKTsKQEAgLTg3MSw3ICs4Njks
NyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgY2Fz
ZSAiIC4gV0tfdWNmaXJzdCgkbmFtZSkgLiJBdHRyTnVtOiB7XG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICgkcG9kVHlwZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICgkcG9kVHlwZSBlcSAiZmxvYXQiKSB7ICMgU3BlY2lhbCBjYXNlIGZvciBKU1NWR051bWJlcgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcG9kVHlwZSBlcSAiZG91YmxlIikgeyAj
IFNwZWNpYWwgY2FzZSBmb3IgSlNTVkdOdW1iZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGltcCA9ICIgLiBKU1ZhbHVlVG9OYXRp
dmUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAidmFsdWUiKSAuICI7XG4iKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgaW1wLnNldCIgLiBXS191Y2ZpcnN0KCRuYW1l
KSAuICIoIiAuIEpTVmFsdWVUb05hdGl2ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsICJ2YWx1ZSIp
IC4gIik7XG4iKTsKQEAgLTEwMTIsNyArMTAxMCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAKICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHZhbC0+aXNPYmplY3QoJiR7Y2xhc3NOYW1lfTo6aW5m
bykgPyBzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4odmFsKS0+aW1wbCgpIDogIik7Ci0gICAgICAg
IGlmICgkcG9kVHlwZSBhbmQgJHBvZFR5cGUgbmUgImZsb2F0IikgeworICAgICAgICBpZiAoJHBv
ZFR5cGUgYW5kICRwb2RUeXBlIG5lICJkb3VibGUiKSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiRwb2RUeXBlKCk7XG59XG4iKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiMDtcbn1cbiIpOwpAQCAtMTA3Niw2ICsxMDc0LDcgQEAg
c3ViIEdldE5hdGl2ZVR5cGUKICAgICByZXR1cm4gIkV2ZW50VGFyZ2V0Tm9kZSoiIGlmICR0eXBl
IGVxICJFdmVudFRhcmdldCI7CiAgICAgcmV0dXJuICJGbG9hdFJlY3QiIGlmICR0eXBlIGVxICJT
VkdSZWN0IjsKICAgICByZXR1cm4gIkZsb2F0UG9pbnQiIGlmICR0eXBlIGVxICJTVkdQb2ludCI7
CisgICAgcmV0dXJuICJBZmZpbmVUcmFuc2Zvcm0iIGlmICR0eXBlIGVxICJTVkdNYXRyaXgiOwog
ICAgIHJldHVybiAiZG91YmxlIiBpZiAkdHlwZSBlcSAiU1ZHTnVtYmVyIjsKICAgICByZXR1cm4g
IlNWR1BhaW50OjpTVkdQYWludFR5cGUiIGlmICR0eXBlIGVxICJTVkdQYWludFR5cGUiOwogCkBA
IC0xMjI0LDcgKzEyMjMsNyBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAgICAgICAgIHJldHVybiAi
Z2V0RE9NUkdCQ29sb3IoZXhlYywgJHZhbHVlKSI7CiAgICAgfQogCi0gICAgaWYgKCR0eXBlIGVx
ICJTVkdSZWN0IiBvciAkdHlwZSBlcSAiU1ZHUG9pbnQiIG9yICR0eXBlIGVxICJTVkdOdW1iZXIi
KSB7CisgICAgaWYgKCR0eXBlIGVxICJTVkdSZWN0IiBvciAkdHlwZSBlcSAiU1ZHUG9pbnQiIG9y
ICR0eXBlIGVxICJTVkdOdW1iZXIiIG9yICR0eXBlIGVxICJTVkdNYXRyaXgiKSB7CiAgICAgICAg
ICRpbXBsSW5jbHVkZXN7IkpTJHR5cGUuaCJ9ID0gMTsKICAgICAgICAgcmV0dXJuICJ0b0pTKGV4
ZWMsICR2YWx1ZSkiOwogICAgIH0KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yT2JqQy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvck9iakMucG0JKHJldmlzaW9uIDE4MTYzKQorKysgV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogIyAKLSMgQ29weXJpZ2h0IChDKSAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZv
eEBrZGUub3JnPgorIyBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5u
IDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAjIENvcHlyaWdodCAoQykgMjAwNiBBbmRlcnMgQ2FybHNz
b24gPGFuZGVyc2NhQG1hYy5jb20+IAogIyBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5p
ZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAjIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJv
c2t1cnlha292IDxhcEB3ZWJraXQub3JnPgpAQCAtNTcsNiArNTcsOCBAQCBteSAlcHJvdG9jb2xU
eXBlSGFzaCA9ICgiWFBhdGhOU1Jlc29sdmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAiU1ZH
Wm9vbUFuZFBhbiIgPT4gMSwgIlNWR0ZpdFRvVmlld0JveCIgPT4gMSwgIlNWR0FuaW1hdGVkUGF0
aERhdGEiID0+IDEsICJTVkdBbmltYXRlZFBvaW50cyIgPT4gMSk7CiBteSAlbmF0aXZlT2JqQ1R5
cGVIYXNoID0gKCJVUkwiID0+IDEsICJDb2xvciIgPT4gMSk7CiAKK215ICVwb2RUeXBlSGFzaCA9
ICgiUkdCQ29sb3IiID0+IDEsICJTVkdQb2ludCIgPT4gMSwgIlNWR1JlY3QiID0+IDEsICJTVkdO
dW1iZXIiID0+IDEsICJTVkdNYXRyaXgiID0+IDEpOworIAogIyBGSVhNRTogdGhpcyBzaG91bGQg
YmUgcmVwbGFjZWQgd2l0aCBhIGZ1bmN0aW9uIHRoYXQgcmVjdXJzZXMgdXAgdGhlIHRyZWUKICMg
dG8gZmluZCB0aGUgYWN0dWFsIGJhc2UgdHlwZS4KIG15ICViYXNlVHlwZUhhc2ggPSAoIk9iamVj
dCIgPT4gMSwgIk5vZGUiID0+IDEsICJOb2RlTGlzdCIgPT4gMSwgIk5hbWVkTm9kZU1hcCIgPT4g
MSwgIkRPTUltcGxlbWVudGF0aW9uIiA9PiAxLApAQCAtMzUxLDYgKzM1MywxNCBAQCBzdWIgR2V0
QmFzZUNsYXNzCiAgICAgcmV0dXJuICJOb2RlIjsKIH0KIAorc3ViIElzUG9kVHlwZQoreworICAg
IG15ICR0eXBlID0gc2hpZnQ7CisKKyAgICByZXR1cm4gMSBpZiAkcG9kVHlwZUhhc2h7JHR5cGV9
OworICAgIHJldHVybiAwOworfQorCiBzdWIgSXNCYXNlVHlwZQogewogICAgIG15ICR0eXBlID0g
c2hpZnQ7CkBAIC01MjcsNiArNTM3LDEzIEBAIHN1YiBBZGRJbmNsdWRlc0ZvclR5cGUKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmICgkdHlwZSBlcSAiU1ZHTWF0cml4IikgeworICAg
ICAgICAkaW1wbEluY2x1ZGVzeyJBZmZpbmVUcmFuc2Zvcm0uaCJ9ID0gMTsKKyAgICAgICAgJGlt
cGxJbmNsdWRlc3siRE9NJHR5cGUuaCJ9ID0gMTsKKyAgICAgICAgJGltcGxJbmNsdWRlc3siU1ZH
RXhjZXB0aW9uLmgifSA9IDE7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoJHR5
cGUgZXEgIlNWR051bWJlciIpIHsKICAgICAgICAgJGltcGxJbmNsdWRlc3siRE9NJHR5cGUuaCJ9
ID0gMTsKICAgICAgICAgcmV0dXJuOwpAQCAtODE1LDcgKzgzMiw3IEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgbXkgJHBvZFR5cGVXaXRoTmFtZXNwYWNlOwogCiAgICAgaWYgKCRw
b2RUeXBlKSB7Ci0gICAgICAgICRwb2RUeXBlV2l0aE5hbWVzcGFjZSA9ICgkcG9kVHlwZSBlcSAi
ZmxvYXQiKSA/ICIkcG9kVHlwZSIgOiAiV2ViQ29yZTo6JHBvZFR5cGUiOworICAgICAgICAkcG9k
VHlwZVdpdGhOYW1lc3BhY2UgPSAoJHBvZFR5cGUgZXEgImRvdWJsZSIpID8gIiRwb2RUeXBlIiA6
ICJXZWJDb3JlOjokcG9kVHlwZSI7CiAgICAgfQogCiAgICAgIyAtIEFkZCBkZWZhdWx0IGhlYWRl
ciB0ZW1wbGF0ZS4KQEAgLTgzNSw3ICs4NTIsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICBpZiAoISRwb2RUeXBlKSB7CiAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyIk
aW1wbENsYXNzTmFtZS5oIn0gPSAxOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgJGlt
cGxJbmNsdWRlc3siJHBvZFR5cGUuaCJ9ID0gMSB1bmxlc3MgJHBvZFR5cGUgZXEgImZsb2F0IjsK
KyAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IiRwb2RUeXBlLmgifSA9IDEgdW5sZXNzICRwb2RU
eXBlIGVxICJkb3VibGUiOwogICAgICAgICB9CiAgICAgfSAKIApAQCAtOTQxLDcgKzk1OCw3IEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBteSAkZ2V0dGVyQ29udGVu
dFRhaWwgPSAiKSI7CiAKICAgICAgICAgICAgICMgU3BlY2lhbCBjYXNlIGZvciBET01TVkdOdW1i
ZXIKLSAgICAgICAgICAgIGlmICgkcG9kVHlwZSBhbmQgJHBvZFR5cGUgZXEgImZsb2F0Iikgewor
ICAgICAgICAgICAgaWYgKCRwb2RUeXBlIGFuZCAkcG9kVHlwZSBlcSAiZG91YmxlIikgewogICAg
ICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50SGVhZCA9ICIqSU1QTCI7CiAgICAgICAgICAgICAg
ICAgJGdldHRlckNvbnRlbnRUYWlsID0gIiI7CiAgICAgICAgICAgICB9CkBAIC05OTAsNyArMTAw
Nyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgJGdldHRl
ckNvbnRlbnRUYWlsIC49ICIpXSI7CiAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb252ZXJ0RnJvbVN0cmluZyJ9KSB7CiAg
ICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRUYWlsIC49ICIudG9JbnQoKSI7Ci0gICAgICAg
ICAgICB9IGVsc2lmICgkaWRsVHlwZSBlcSAiUkdCQ29sb3IiIG9yICRpZGxUeXBlIGVxICJTVkdQ
b2ludCIgb3IgJGlkbFR5cGUgZXEgIlNWR1JlY3QiIG9yICRpZGxUeXBlIGVxICJTVkdOdW1iZXIi
KSB7CisgICAgICAgICAgICB9IGVsc2lmIChJc1BvZFR5cGUoJGlkbFR5cGUpKSB7CiAgICAgICAg
ICAgICAgICAgJGdldHRlckNvbnRlbnRIZWFkID0gIlskYXR0cmlidXRlVHlwZVNhbnNQdHIgJHR5
cGVNYWtlcjoiIC4gJGdldHRlckNvbnRlbnRIZWFkOwogICAgICAgICAgICAgICAgICRnZXR0ZXJD
b250ZW50VGFpbCAuPSAiXSI7CiAgICAgICAgICAgICB9IGVsc2lmICgkdHlwZU1ha2VyIG5lICIi
KSB7CkBAIC0xMDUwLDkgKzEwNjcsOSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlQoJGFyZ05hbWUp
O1xuXG4iKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAjIFNwZWNpYWwg
Y2FzZSBmb3IgRE9NU1ZHTnVtYmVyCiAgICAgICAgICAgICAgICAgaWYgKCRwb2RUeXBlKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICgkcG9kVHlwZSBlcSAiZmxvYXQiKSB7CisgICAgICAgICAg
ICAgICAgICAgICMgU3BlY2lhbCBjYXNlIGZvciBET01TVkdOdW1iZXIKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKCRwb2RUeXBlIGVxICJkb3VibGUiKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAqSU1QTCA9ICRhcmc7XG4iKTsKICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIElNUEwtPiRhdHRyaWJ1dGVOYW1lKCRhcmcpO1xuIik7CkBAIC0xMTIwLDggKzEx
MzcsNiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICRwYXJh
bWV0ZXJJbmRleCsrOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBwdXNoKEBwYXJhbWV0
ZXJOYW1lcywgImVjIikgaWYgJHJhaXNlc0V4Y2VwdGlvbnM7Ci0KICAgICAgICAgICAgIG15IEBm
dW5jdGlvbkNvbnRlbnQgPSAoKTsKICAgICAgICAgICAgIG15ICRjYWxsZXIgPSAiSU1QTCI7CiAK
QEAgLTExNTEsMTAgKzExNjYsMjcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAg
ICAgICAgICAgICAkY2FsbGVyID0gImR2IjsKICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAg
bXkgJGV4Y2VwdGlvbk9uZSA9ICgkcG9kVHlwZSBhbmQgJHBvZFR5cGUgZXEgIkFmZmluZVRyYW5z
Zm9ybSIgYW5kICRmdW5jdGlvbk5hbWUgZXEgInJvdGF0ZUZyb21WZWN0b3IiKTsgICAgICAgICAg
IAorICAgICAgICAgICAgbXkgJGV4Y2VwdGlvblR3byA9ICgkcG9kVHlwZSBhbmQgJHBvZFR5cGUg
ZXEgIkFmZmluZVRyYW5zZm9ybSIgYW5kICRmdW5jdGlvbk5hbWUgZXEgImludmVyc2UiKTsKIAot
ICAgICAgICAgICAgbXkgJGNvbnRlbnQgPSAkY2FsbGVyIC4gIi0+IiAuICRmdW5jdGlvbk5hbWUg
LiAiKCIgLiBqb2luKCIsICIsIEBwYXJhbWV0ZXJOYW1lcykgLiAiKSI7CisgICAgICAgICAgICBw
dXNoKEBwYXJhbWV0ZXJOYW1lcywgImVjIikgaWYgJHJhaXNlc0V4Y2VwdGlvbnMgYW5kICEoJGV4
Y2VwdGlvbk9uZSB8fCAkZXhjZXB0aW9uVHdvKTsKKyAgICAgICAgICAgIG15ICRjb250ZW50ID0g
JGNhbGxlciAuICItPiIgLiAkZnVuY3Rpb25OYW1lIC4gIigiIC4gam9pbigiLCAiLCBAcGFyYW1l
dGVyTmFtZXMpIC4gIikiOyAKIAotICAgICAgICAgICAgaWYgKCRyZXR1cm5UeXBlIGVxICJ2b2lk
IikgeworICAgICAgICAgICAgaWYgKCRleGNlcHRpb25PbmUpIHsKKyAgICAgICAgICAgICAgICAj
IFNwZWNpYWwgY2FzZSB3aXRoIHJvdGF0ZUZyb21WZWN0b3IgJiBTVkdNYXRyaXggICAgICAgIAor
ICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uQ29udGVudCwgIiAgICAkZXhjZXB0aW9uSW5p
dFxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAZnVuY3Rpb25Db250ZW50LCAiICAgIGlmICh4
ID09IDAuMCB8fCB5ID09IDAuMClcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9u
Q29udGVudCwgIiAgICAgICAgZWMgPSBXZWJDb3JlOjpTVkdfSU5WQUxJRF9WQUxVRV9FUlI7XG4i
KTsKKyAgICAgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIgICAgJGV4Y2VwdGlv
blJhaXNlT25FcnJvclxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAZnVuY3Rpb25Db250ZW50
LCAiICAgIHJldHVybiBbRE9NU1ZHTWF0cml4IF9TVkdNYXRyaXhXaXRoOiRjb250ZW50XTtcbiIp
OworICAgICAgICAgICAgfSBlbHNpZiAoJGV4Y2VwdGlvblR3bykgeworICAgICAgICAgICAgICAg
ICMgU3BlY2lhbCBjYXNlIHdpdGggaW52ZXJzZSAmIFNWR01hdHJpeAorICAgICAgICAgICAgICAg
IHB1c2goQGZ1bmN0aW9uQ29udGVudCwgIiAgICAkZXhjZXB0aW9uSW5pdFxuIik7CisgICAgICAg
ICAgICAgICAgcHVzaChAZnVuY3Rpb25Db250ZW50LCAiICAgIGlmICghJGNhbGxlci0+aXNJbnZl
cnRpYmxlKCkpXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIg
ICAgICAgIGVjID0gV2ViQ29yZTo6U1ZHX01BVFJJWF9OT1RfSU5WRVJUQUJMRTtcbiIpOworICAg
ICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uQ29udGVudCwgIiAgICAkZXhjZXB0aW9uUmFpc2VP
bkVycm9yXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIgICAg
cmV0dXJuIFtET01TVkdNYXRyaXggX1NWR01hdHJpeFdpdGg6JGNvbnRlbnRdO1xuIik7CisgICAg
ICAgICAgICB9IGVsc2lmICgkcmV0dXJuVHlwZSBlcSAidm9pZCIpIHsKICAgICAgICAgICAgICAg
ICAjIFNwZWNpYWwgY2FzZSAndm9pZCcgcmV0dXJuIHR5cGUuCiAgICAgICAgICAgICAgICAgaWYg
KCRyYWlzZXNFeGNlcHRpb25zKSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9u
Q29udGVudCwgIiAgICAkZXhjZXB0aW9uSW5pdFxuIik7CkBAIC0xMTkyLDcgKzEyMjQsMTAgQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAgICAgICAgICMgU3Vycm91bmQgZ2V0dGVyIHdpdGggVHlwZU1ha2VyCi0gICAgICAg
ICAgICAgICAgICAgIGlmICgkcmV0dXJuVHlwZUNsYXNzIGVxICJET01SR0JDb2xvciIgb3IgJHJl
dHVyblR5cGVDbGFzcyBlcSAiRE9NU1ZHUG9pbnQiIG9yICRyZXR1cm5UeXBlQ2xhc3MgZXEgIkRP
TVNWR1JlY3QiIG9yICRyZXR1cm5UeXBlQ2xhc3MgZXEgIkRPTVNWR051bWJlciIpIHsKKyAgICAg
ICAgICAgICAgICAgICAgbXkgJGlkbFR5cGUgPSAkcmV0dXJuVHlwZUNsYXNzOworICAgICAgICAg
ICAgICAgICAgICAkaWRsVHlwZSA9fiBzL15ET00vLzsKKworICAgICAgICAgICAgICAgICAgICBp
ZiAoSXNQb2RUeXBlKCRpZGxUeXBlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRl
bnQgPSAiWyRyZXR1cm5UeXBlQ2xhc3MgJHR5cGVNYWtlcjoiIC4gJGNvbnRlbnQgLiAiXSI7CiAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAkY29u
dGVudCA9ICJbJHJldHVyblR5cGVDbGFzcyAkdHlwZU1ha2VyOldURjo6Z2V0UHRyKCIgLiAkY29u
dGVudCAuICIpXSI7CkBAIC0xMjg2LDggKzEzMjEsMTMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzU1ZHQW5pbWF0ZWRUeXBlKCRpbnRlcmZh
Y2VOYW1lKSkgewogICAgICAgICBwdXNoKEBpbnRlbmFsSGVhZGVyQ29udGVudCwgIiNpbXBvcnQg
PFdlYkNvcmUvU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oPlxuXG4iKTsKICAgICB9IGVsc2UgewotICAg
ICAgICBwdXNoKEBpbnRlbmFsSGVhZGVyQ29udGVudCwgIlxubmFtZXNwYWNlIFdlYkNvcmUgeyBj
bGFzcyAkaW1wbENsYXNzTmFtZTsgfVxuXG4iKTsKKyAgICAgICAgaWYgKCRwb2RUeXBlIGFuZCAk
cG9kVHlwZSBuZSAiZG91YmxlIikgeworICAgICAgICAgICAgcHVzaChAaW50ZW5hbEhlYWRlckNv
bnRlbnQsICJcbm5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgJHBvZFR5cGU7IH1cblxuIik7Cisg
ICAgICAgIH0gZWxzZSB7IAorICAgICAgICAgICAgcHVzaChAaW50ZW5hbEhlYWRlckNvbnRlbnQs
ICJcbm5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgJGltcGxDbGFzc05hbWU7IH1cblxuIik7Cisg
ICAgICAgIH0KICAgICB9CisKICAgICBwdXNoKEBpbnRlbmFsSGVhZGVyQ29udGVudCwgIlxAaW50
ZXJmYWNlICRjbGFzc05hbWUgKFdlYkNvcmVJbnRlcm5hbClcbiIpOwogICAgIHB1c2goQGludGVu
YWxIZWFkZXJDb250ZW50LCAkdHlwZUdldHRlclNpZyAuICI7XG4iKTsKICAgICBwdXNoKEBpbnRl
bmFsSGVhZGVyQ29udGVudCwgJHR5cGVNYWtlclNpZyAuICI7XG4iKTsKSW5kZXg6IFdlYkNvcmUv
a3N2ZzIvbWlzYy9LU1ZHVGltZVNjaGVkdWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9r
c3ZnMi9taXNjL0tTVkdUaW1lU2NoZWR1bGVyLmNwcAkocmV2aXNpb24gMTgxNjMpCisrKyBXZWJD
b3JlL2tzdmcyL21pc2MvS1NWR1RpbWVTY2hlZHVsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw3ICszMCw2IEBACiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuaCIKICNp
bmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0LmgiCiAjaW5jbHVkZSAiU1ZHRE9NSW1wbGVtZW50YXRp
b24uaCIKLSNpbmNsdWRlICJTVkdNYXRyaXguaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2lu
Y2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdTdHlsZWRUcmFuc2Zvcm1h
YmxlRWxlbWVudC5oIgpJbmRleDogV2ViQ29yZS9rc3ZnMi9taXNjL1NWR0ltYWdlTG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL21pc2MvU1ZHSW1hZ2VMb2FkZXIuY3BwCShy
ZXZpc2lvbiAxODE2MykKKysrIFdlYkNvcmUva3N2ZzIvbWlzYy9TVkdJbWFnZUxvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDEwICsyNiw5IEBACiAjaW5jbHVkZSAiRG9jTG9hZGVyLmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKIAotI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVk
ZSAiU1ZHSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCi0jaW5jbHVkZSAi
U1ZHTWF0cml4LmgiCisjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKIAogI2luY2x1ZGUgIlJlbmRlcklt
YWdlLmgiCiAKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlVHJhbnNm
b3JtRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MTYzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
QW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3
IEBACiAKICNpbmNsdWRlICJLU1ZHVGltZVNjaGVkdWxlci5oIgogI2luY2x1ZGUgIlNWR0FuZ2xl
LmgiCi0jaW5jbHVkZSAiU1ZHTWF0cml4LmgiCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgi
CiAjaW5jbHVkZSAiU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJT
VkdTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtLmgiCkBAIC0xMzksMTAgKzEz
OSwxMCBAQCB2b2lkIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpoYW5kbGVUCiAgICAgICAg
ICAgICAgICAgaWYgKCFtX2Zyb21UcmFuc2Zvcm0pCiAgICAgICAgICAgICAgICAgICAgIG1fZnJv
bVRyYW5zZm9ybSA9IG5ldyBTVkdUcmFuc2Zvcm0oKTsKIAotICAgICAgICAgICAgICAgIFNWR01h
dHJpeCogYnlNYXRyaXggPSBtX3RvVHJhbnNmb3JtLT5tYXRyaXgoKTsKLSAgICAgICAgICAgICAg
ICBTVkdNYXRyaXgqIGZyb21NYXRyaXggPSBtX2Zyb21UcmFuc2Zvcm0tPm1hdHJpeCgpOworICAg
ICAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBieU1hdHJpeCA9IG1fdG9UcmFuc2Zvcm0tPm1h
dHJpeCgpOworICAgICAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBmcm9tTWF0cml4ID0gbV9m
cm9tVHJhbnNmb3JtLT5tYXRyaXgoKTsKIAotICAgICAgICAgICAgICAgIGJ5TWF0cml4LT5tdWx0
aXBseShmcm9tTWF0cml4KTsKKyAgICAgICAgICAgICAgICBieU1hdHJpeCAqPSBmcm9tTWF0cml4
OwogCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0xODYsOCArMTg2
LDggQEAgdm9pZCBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6aGFuZGxlVAogICAgICAgICAg
ICAgaWYgKCF2YWx1ZTEuaXNFbXB0eSgpICYmICF2YWx1ZTIuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICAgICAgYm9vbCBhcHBseSA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGlmIChtX3RvVHJh
bnNmb3JtICYmIG1fZnJvbVRyYW5zZm9ybSkgeyAgICAKLSAgICAgICAgICAgICAgICAgICAgcVRv
TWF0cml4ID0gbV90b1RyYW5zZm9ybS0+bWF0cml4KCktPm1hdHJpeCgpOwotICAgICAgICAgICAg
ICAgICAgICBxRnJvbU1hdHJpeCA9IG1fZnJvbVRyYW5zZm9ybS0+bWF0cml4KCktPm1hdHJpeCgp
OworICAgICAgICAgICAgICAgICAgICBxVG9NYXRyaXggPSBtX3RvVHJhbnNmb3JtLT5tYXRyaXgo
KTsKKyAgICAgICAgICAgICAgICAgICAgcUZyb21NYXRyaXggPSBtX2Zyb21UcmFuc2Zvcm0tPm1h
dHJpeCgpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgYXBwbHkg
PSB0cnVlOwogICAgICAgICAgICAgICAgICAgICB1c2VUaW1lUGVyY2VudGFnZSA9IDEuMDsKQEAg
LTIwOSwzNiArMjA5LDM2IEBAIHZvaWQgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmhhbmRs
ZVQKICAgICAgICAgICAgIHVzZVRpbWVQZXJjZW50YWdlID0gY2FsY3VsYXRlUmVsYXRpdmVUaW1l
UGVyY2VudGFnZSh0aW1lUGVyY2VudGFnZSwgbV9jdXJyZW50SXRlbSk7CiAgICAgfQogCi0gICAg
aWYgKG1fdG9UcmFuc2Zvcm0gJiYgbV90b1RyYW5zZm9ybS0+bWF0cml4KCkgJiYgcVRvTWF0cml4
LmlzSWRlbnRpdHkoKSkKLSAgICAgICAgcVRvTWF0cml4ID0gbV90b1RyYW5zZm9ybS0+bWF0cml4
KCktPm1hdHJpeCgpOworICAgIGlmIChtX3RvVHJhbnNmb3JtICYmIHFUb01hdHJpeC5pc0lkZW50
aXR5KCkpCisgICAgICAgIHFUb01hdHJpeCA9IG1fdG9UcmFuc2Zvcm0tPm1hdHJpeCgpOwogCi0g
ICAgaWYgKG1fZnJvbVRyYW5zZm9ybSAmJiBtX2Zyb21UcmFuc2Zvcm0tPm1hdHJpeCgpICYmIHFG
cm9tTWF0cml4LmlzSWRlbnRpdHkoKSkKLSAgICAgICAgcUZyb21NYXRyaXggPSBtX2Zyb21UcmFu
c2Zvcm0tPm1hdHJpeCgpLT5tYXRyaXgoKTsKLQotICAgIGlmICghbV90cmFuc2Zvcm1NYXRyaXgp
CisgICAgaWYgKG1fZnJvbVRyYW5zZm9ybSAmJiBxRnJvbU1hdHJpeC5pc0lkZW50aXR5KCkpCisg
ICAgICAgIHFGcm9tTWF0cml4ID0gbV9mcm9tVHJhbnNmb3JtLT5tYXRyaXgoKTsKKy8qCisgICAg
aWYgKG1fdHJhbnNmb3JtTWF0cml4KQogICAgICAgICBtX3RyYW5zZm9ybU1hdHJpeCA9IG5ldyBT
VkdNYXRyaXgoKTsKICAgICBlbHNlIHsKLSAgICAgICAgbV90cmFuc2Zvcm1NYXRyaXgtPnJlc2V0
KCk7CisgICAgICAgIG1fdHJhbnNmb3JtTWF0cml4LnJlc2V0KCk7CiAKICAgICAgICAgaWYgKGlz
QWNjdW11bGF0ZWQoKSAmJiByZXBlYXRpb25zKCkgIT0gMC4wICYmIG1fbGFzdE1hdHJpeCkKICAg
ICAgICAgICAgIG1fdHJhbnNmb3JtTWF0cml4LT5tdWx0aXBseShtX2xhc3RNYXRyaXguZ2V0KCkp
OwogICAgIH0KLSAgICAKKyAqLyAgIAogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgICAgIGNh
c2UgU1ZHVHJhbnNmb3JtOjpTVkdfVFJBTlNGT1JNX1RSQU5TTEFURToKICAgICAgICAgewotICAg
ICAgICAgICAgZG91YmxlIGR4ID0gKChxVG9NYXRyaXguZHgoKSAtIHFGcm9tTWF0cml4LmR4KCkp
ICogdXNlVGltZVBlcmNlbnRhZ2UpICsgcUZyb21NYXRyaXguZHgoKTsKLSAgICAgICAgICAgIGRv
dWJsZSBkeSA9ICgocVRvTWF0cml4LmR5KCkgLSBxRnJvbU1hdHJpeC5keSgpKSAqIHVzZVRpbWVQ
ZXJjZW50YWdlKSArIHFGcm9tTWF0cml4LmR5KCk7CisgICAgICAgICAgICBkb3VibGUgZHggPSAo
KHFUb01hdHJpeC5lKCkgLSBxRnJvbU1hdHJpeC5lKCkpICogdXNlVGltZVBlcmNlbnRhZ2UpICsg
cUZyb21NYXRyaXguZSgpOworICAgICAgICAgICAgZG91YmxlIGR5ID0gKChxVG9NYXRyaXguZigp
IC0gcUZyb21NYXRyaXguZigpKSAqIHVzZVRpbWVQZXJjZW50YWdlKSArIHFGcm9tTWF0cml4LmYo
KTsKIAotICAgICAgICAgICAgbV90cmFuc2Zvcm1NYXRyaXgtPnRyYW5zbGF0ZShkeCwgZHkpOwor
ICAgICAgICAgICAgbV90cmFuc2Zvcm1NYXRyaXgudHJhbnNsYXRlKGR4LCBkeSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIFNWR1RyYW5zZm9ybTo6U1ZHX1RS
QU5TRk9STV9TQ0FMRToKICAgICAgICAgewotICAgICAgICAgICAgZG91YmxlIHN4ID0gKChxVG9N
YXRyaXgubTExKCkgLSBxRnJvbU1hdHJpeC5tMTEoKSkgKiB1c2VUaW1lUGVyY2VudGFnZSkgKyBx
RnJvbU1hdHJpeC5tMTEoKTsKLSAgICAgICAgICAgIGRvdWJsZSBzeSA9ICgocVRvTWF0cml4Lm0y
MigpIC0gcUZyb21NYXRyaXgubTIyKCkpICogdXNlVGltZVBlcmNlbnRhZ2UpICsgcUZyb21NYXRy
aXgubTIyKCk7CisgICAgICAgICAgICBkb3VibGUgc3ggPSAoKHFUb01hdHJpeC5hKCkgLSBxRnJv
bU1hdHJpeC5hKCkpICogdXNlVGltZVBlcmNlbnRhZ2UpICsgcUZyb21NYXRyaXguYSgpOworICAg
ICAgICAgICAgZG91YmxlIHN5ID0gKChxVG9NYXRyaXguZCgpIC0gcUZyb21NYXRyaXguZCgpKSAq
IHVzZVRpbWVQZXJjZW50YWdlKSArIHFGcm9tTWF0cml4LmQoKTsKIAotICAgICAgICAgICAgbV90
cmFuc2Zvcm1NYXRyaXgtPnNjYWxlTm9uVW5pZm9ybShzeCwgc3kpOworICAgICAgICAgICAgbV90
cmFuc2Zvcm1NYXRyaXguc2NhbGUoc3gsIHN5KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgU1ZHVHJhbnNmb3JtOjpTVkdfVFJBTlNGT1JNX1JPVEFURToKQEAg
LTI2NSwyNSArMjY1LDI1IEBAIHZvaWQgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmhhbmRs
ZVQKICAgICAgICAgICAgIGRvdWJsZSBjeCA9ICh0b0N4IC0gZnJvbUN4KSAqIHVzZVRpbWVQZXJj
ZW50YWdlICsgZnJvbUN4OwogICAgICAgICAgICAgZG91YmxlIGN5ID0gKHRvQ3kgLSBmcm9tQ3kp
ICogdXNlVGltZVBlcmNlbnRhZ2UgKyBmcm9tQ3k7CiAKLSAgICAgICAgICAgIG1fdHJhbnNmb3Jt
TWF0cml4LT50cmFuc2xhdGUoY3gsIGN5KTsKLSAgICAgICAgICAgIG1fdHJhbnNmb3JtTWF0cml4
LT5yb3RhdGUoYW5nbGUpOwotICAgICAgICAgICAgbV90cmFuc2Zvcm1NYXRyaXgtPnRyYW5zbGF0
ZSgtY3gsIC1jeSk7CisgICAgICAgICAgICBtX3RyYW5zZm9ybU1hdHJpeC50cmFuc2xhdGUoY3gs
IGN5KTsKKyAgICAgICAgICAgIG1fdHJhbnNmb3JtTWF0cml4LnJvdGF0ZShhbmdsZSk7CisgICAg
ICAgICAgICBtX3RyYW5zZm9ybU1hdHJpeC50cmFuc2xhdGUoLWN4LCAtY3kpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBTVkdUcmFuc2Zvcm06OlNWR19UUkFO
U0ZPUk1fU0tFV1g6CiAgICAgICAgIHsKLSAgICAgICAgICAgIGRvdWJsZSBzeCA9IChTVkdBbmds
ZTo6dG9kZWcoYXRhbihxVG9NYXRyaXgubTIxKCkpIC0gYXRhbihxRnJvbU1hdHJpeC5tMjEoKSkp
ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICB1c2VUaW1lUGVyY2VudGFnZSkgKyBTVkdBbmds
ZTo6dG9kZWcoYXRhbihxRnJvbU1hdHJpeC5tMjEoKSkpOworICAgICAgICAgICAgZG91YmxlIHN4
ID0gKFNWR0FuZ2xlOjp0b2RlZyhhdGFuKHFUb01hdHJpeC5jKCkpIC0gYXRhbihxRnJvbU1hdHJp
eC5jKCkpKSAqCisgICAgICAgICAgICAgICAgICAgICAgICAgdXNlVGltZVBlcmNlbnRhZ2UpICsg
U1ZHQW5nbGU6OnRvZGVnKGF0YW4ocUZyb21NYXRyaXguYygpKSk7CiAKLSAgICAgICAgICAgIG1f
dHJhbnNmb3JtTWF0cml4LT5za2V3WChzeCk7CisgICAgICAgICAgICBtX3RyYW5zZm9ybU1hdHJp
eC5zaGVhcihzeCwgMS4pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBTVkdUcmFuc2Zvcm06OlNWR19UUkFOU0ZPUk1fU0tFV1k6CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGRvdWJsZSBzeSA9IChTVkdBbmdsZTo6dG9kZWcoYXRhbihxVG9NYXRyaXgubTEyKCkp
IC0gYXRhbihxRnJvbU1hdHJpeC5tMTIoKSkpICoKLSAgICAgICAgICAgICAgICAgICAgICAgICB1
c2VUaW1lUGVyY2VudGFnZSkgKyBTVkdBbmdsZTo6dG9kZWcoYXRhbihxRnJvbU1hdHJpeC5tMTIo
KSkpOworICAgICAgICAgICAgZG91YmxlIHN5ID0gKFNWR0FuZ2xlOjp0b2RlZyhhdGFuKHFUb01h
dHJpeC5iKCkpIC0gYXRhbihxRnJvbU1hdHJpeC5iKCkpKSAqCisgICAgICAgICAgICAgICAgICAg
ICAgICAgdXNlVGltZVBlcmNlbnRhZ2UpICsgU1ZHQW5nbGU6OnRvZGVnKGF0YW4ocUZyb21NYXRy
aXguYigpKSk7CiAKLSAgICAgICAgICAgIG1fdHJhbnNmb3JtTWF0cml4LT5za2V3WShzeSk7Cisg
ICAgICAgICAgICBtX3RyYW5zZm9ybU1hdHJpeC5zaGVhcigxLiwgc3kpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTI5NSwxMCArMjk1LDEwIEBA
IHZvaWQgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmhhbmRsZVQKICAgICB7CiAgICAgICAg
IGlmICgobV9yZXBlYXRDb3VudCA+IDAgJiYgbV9yZXBlYXRpb25zIDwgbV9yZXBlYXRDb3VudCAt
IDEpIHx8IGlzSW5kZWZpbml0ZShtX3JlcGVhdENvdW50KSkKICAgICAgICAgewotICAgICAgICAg
ICAgbV9sYXN0TWF0cml4ID0gbmV3IFNWR01hdHJpeCgpOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICBpZiAobV90cmFuc2Zvcm1NYXRyaXgpCi0gICAgICAgICAgICAgICAgbV9sYXN0TWF0cml4
LT5jb3B5KG1fdHJhbnNmb3JtTWF0cml4LmdldCgpKTsKKyAgICAgICAgICAgIG1fbGFzdE1hdHJp
eC5yZXNldCgpOworCisgICAgICAgICAgICBpZiAoIW1fdHJhbnNmb3JtTWF0cml4LmlzSWRlbnRp
dHkoKSkKKyAgICAgICAgICAgICAgICBtX2xhc3RNYXRyaXggPSBtX3RyYW5zZm9ybU1hdHJpeDsK
IAogICAgICAgICAgICAgbV9yZXBlYXRpb25zKys7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0z
MTQsMTEgKzMxNCwxMSBAQCB2b2lkIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpoYW5kbGVU
CiAgICAgICAgIG1faW5pdGlhbFRyYW5zZm9ybSA9IDA7CiAKICAgICAgICAgaWYgKCFpc0Zyb3pl
bigpKSB7Ci0gICAgICAgICAgICBTVkdNYXRyaXgqIGluaXRpYWwgPSBpbml0aWFsTWF0cml4KCk7
Ci0gICAgICAgICAgICBpZiAoaW5pdGlhbCkKKyAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBp
bml0aWFsID0gaW5pdGlhbE1hdHJpeCgpOworICAgICAgICAgICAgaWYgKCFpbml0aWFsLmlzSWRl
bnRpdHkoKSkKICAgICAgICAgICAgICAgICBtX3RyYW5zZm9ybU1hdHJpeCA9IGluaXRpYWw7CiAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV90cmFuc2Zvcm1NYXRyaXggPSBuZXcg
U1ZHTWF0cml4KCk7CisgICAgICAgICAgICAgICAgbV90cmFuc2Zvcm1NYXRyaXggPSBBZmZpbmVU
cmFuc2Zvcm0oKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTQxNCw4ICs0MTQsOCBAQCBSZWZQ
dHI8U1ZHVHJhbnNmb3JtPiBTVkdBbmltYXRlVHJhbnNmb3JtCiAKIHZvaWQgU1ZHQW5pbWF0ZVRy
YW5zZm9ybUVsZW1lbnQ6OmNhbGN1bGF0ZVJvdGF0aW9uRnJvbU1hdHJpeChjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIG1hdHJpeCwgZG91YmxlJiBhbmdsZSwgZG91YmxlJiBjeCwgZG91YmxlJiBjeSkg
Y29uc3QKIHsKLSAgICBkb3VibGUgY29zYSA9IG1hdHJpeC5tMTEoKTsKLSAgICBkb3VibGUgc2lu
YSA9IC1tYXRyaXgubTIxKCk7CisgICAgZG91YmxlIGNvc2EgPSBtYXRyaXguYSgpOworICAgIGRv
dWJsZSBzaW5hID0gLW1hdHJpeC5jKCk7CiAKICAgICBpZiAoY29zYSAhPSAxLjApCiAgICAgewpA
QCAtNDI3LDggKzQyNyw4IEBAIHZvaWQgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmNhbGN1
bGEKICAgICAgICAgCiAgICAgICAgIGRvdWJsZSByZXMgPSAoMSAtIGNvc2EpICsgKChzaW5hICog
c2luYSkgLyAoMSAtIGNvc2EpKTsKICAgICAgICAgCi0gICAgICAgIGN4ID0gKG1hdHJpeC5keCgp
IC0gKChzaW5hICogbWF0cml4LmR5KCkpIC8gKDEgLSBjb3NhKSkpIC8gcmVzOwotICAgICAgICBj
eSA9IChtYXRyaXguZHkoKSArICgoc2luYSAqIG1hdHJpeC5keCgpKSAvICgxIC0gY29zYSkpKSAv
IHJlczsKKyAgICAgICAgY3ggPSAobWF0cml4LmUoKSAtICgoc2luYSAqIG1hdHJpeC5mKCkpIC8g
KDEgLSBjb3NhKSkpIC8gcmVzOworICAgICAgICBjeSA9IChtYXRyaXguZigpICsgKChzaW5hICog
bWF0cml4LmUoKSkgLyAoMSAtIGNvc2EpKSkgLyByZXM7CiAKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTQzOCwyOCArNDM4LDI1IEBAIHZvaWQgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6
OmNhbGN1bGEKICAgICBhbmdsZSA9IDAuMDsKIH0KIAotU1ZHTWF0cml4KiBTVkdBbmltYXRlVHJh
bnNmb3JtRWxlbWVudDo6aW5pdGlhbE1hdHJpeCgpIGNvbnN0CitBZmZpbmVUcmFuc2Zvcm0gU1ZH
QW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmluaXRpYWxNYXRyaXgoKSBjb25zdAogewogICAgIGlm
ICghdGFyZ2V0RWxlbWVudCgpLT5pc1N0eWxlZFRyYW5zZm9ybWFibGUoKSkKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsKICAgICBTVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudCogdHJhbnNmb3JtID0gc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQqPih0YXJnZXRFbGVtZW50KCkpOwogICAgIFNWR1RyYW5zZm9ybUxp
c3QqIHRyYW5zZm9ybUxpc3QgPSAodHJhbnNmb3JtID8gdHJhbnNmb3JtLT50cmFuc2Zvcm1CYXNl
VmFsdWUoKSA6IDApOwogICAgIGlmICghdHJhbnNmb3JtTGlzdCkKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgCisgICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsKKwogICAgIFJlZlB0cjxT
VkdUcmFuc2Zvcm0+IHJlc3VsdCA9IHRyYW5zZm9ybUxpc3QtPmNvbmNhdGVuYXRlKCk7CiAgICAg
aWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgU1ZHTWF0cml4KiByZXQgPSBy
ZXN1bHQtPm1hdHJpeCgpOwotICAgIHJldC0+cmVmKCk7CisgICAgICAgIHJldHVybiBBZmZpbmVU
cmFuc2Zvcm0oKTsKIAotICAgIHJldHVybiByZXQ7CisgICAgcmV0dXJuIHJlc3VsdC0+bWF0cml4
KCk7CiB9CiAKLVNWR01hdHJpeCogU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OnRyYW5zZm9y
bU1hdHJpeCgpIGNvbnN0CitBZmZpbmVUcmFuc2Zvcm0gU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1l
bnQ6OnRyYW5zZm9ybU1hdHJpeCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdHJhbnNmb3JtTWF0
cml4LmdldCgpOworICAgIHJldHVybiBtX3RyYW5zZm9ybU1hdHJpeDsKIH0KIAogfQpJbmRleDog
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5oCShyZXZp
c2lvbiAxODE2MykKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDggKzQ0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBSZWZQdHI8U1ZHVHJhbnNmb3JtPiBwYXJzZVRyYW5zZm9ybVZhbHVlKGNvbnN0
IFN0cmluZyYpIGNvbnN0OwogICAgICAgICB2b2lkIGNhbGN1bGF0ZVJvdGF0aW9uRnJvbU1hdHJp
eChjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBkb3VibGUmIGFuZ2xlLCBkb3VibGUmIGN4LCBkb3Vi
bGUmIGN5KSBjb25zdDsKIAotICAgICAgICBTVkdNYXRyaXgqIGluaXRpYWxNYXRyaXgoKSBjb25z
dDsKLSAgICAgICAgU1ZHTWF0cml4KiB0cmFuc2Zvcm1NYXRyaXgoKSBjb25zdDsKKyAgICAgICAg
QWZmaW5lVHJhbnNmb3JtIGluaXRpYWxNYXRyaXgoKSBjb25zdDsKKyAgICAgICAgQWZmaW5lVHJh
bnNmb3JtIHRyYW5zZm9ybU1hdHJpeCgpIGNvbnN0OwogCiAgICAgcHJvdGVjdGVkOgogICAgICAg
ICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1
cm4gdGhpczsgfQpAQCAtNTgsOCArNTgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IFJlZlB0cjxTVkdUcmFuc2Zvcm0+IG1fZnJvbVRyYW5zZm9ybTsKICAgICAgICAgUmVmUHRyPFNW
R1RyYW5zZm9ybT4gbV9pbml0aWFsVHJhbnNmb3JtOwogCi0gICAgICAgIFJlZlB0cjxTVkdNYXRy
aXg+IG1fbGFzdE1hdHJpeDsKLSAgICAgICAgUmVmUHRyPFNWR01hdHJpeD4gbV90cmFuc2Zvcm1N
YXRyaXg7CisgICAgICAgIEFmZmluZVRyYW5zZm9ybSBtX2xhc3RNYXRyaXg7CisgICAgICAgIEFm
ZmluZVRyYW5zZm9ybSBtX3RyYW5zZm9ybU1hdHJpeDsKIAogICAgICAgICBtdXRhYmxlIGJvb2wg
bV9yb3RhdGVTcGVjaWFsQ2FzZSA6IDE7CiAgICAgICAgIGJvb2wgbV90b1JvdGF0ZVNwZWNpYWxD
YXNlIDogMTsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAko
cmV2aXNpb24gMTgxNjMpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU1ZHSGVscGVyLmgiCi0jaW5j
bHVkZSAiU1ZHTWF0cml4LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdV
bml0VHlwZXMuaCIKICNpbmNsdWRlICJjc3NzdHlsZXNlbGVjdG9yLmgiCkBAIC04OCw3ICs4Nyw3
IEBAIFNWR1Jlc291cmNlKiBTVkdDbGlwUGF0aEVsZW1lbnQ6OmNhbnZhc1IKICAgICAgICAgICAg
IFJlbmRlclN0eWxlKiBwYXRoU3R5bGUgPSBkb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCktPnN0
eWxlRm9yRWxlbWVudChzdHlsZWQsIGNsaXBQYXRoU3R5bGUpOwogICAgICAgICAgICAgUGF0aCBw
YXRoRGF0YSA9IHN0eWxlZC0+dG9QYXRoRGF0YSgpOwogICAgICAgICAgICAgaWYgKGUtPmlzU3R5
bGVkVHJhbnNmb3JtYWJsZSgpKQotICAgICAgICAgICAgICAgIHBhdGhEYXRhLnRyYW5zZm9ybShz
dGF0aWNfY2FzdDxTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCo+KGUpLT5sb2NhbE1hdHJp
eCgpLT5tYXRyaXgoKSk7CisgICAgICAgICAgICAgICAgcGF0aERhdGEudHJhbnNmb3JtKHN0YXRp
Y19jYXN0PFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Kj4oZSktPmxvY2FsTWF0cml4KCkp
OwogICAgICAgICAgICAgaWYgKCFwYXRoRGF0YS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAg
bV9jbGlwcGVyLT5hZGRDbGlwRGF0YShwYXRoRGF0YSwgcGF0aFN0eWxlLT5zdmdTdHlsZSgpLT5j
bGlwUnVsZSgpLCBiYm94KTsKICAgICAgICAgICAgIHBhdGhTdHlsZS0+ZGVyZWYodmlldygpLT5y
ZW5kZXJBcmVuYSgpKTsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZpdFRvVmlld0JveC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcAko
cmV2aXNpb24gMTgxNjMpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04MiwxMSArODIsMTEgQEAgYmFpbF9vdXQ6OwogICAgIC8vIEZJ
WE1FOiBQZXIgdGhlIHNwZWMgd2UgYXJlIHN1cHBvc2VkIHRvIHNldCB0aGUgZG9jdW1lbnQgaW50
byBhbiAiZXJyb3Igc3RhdGUiIGhlcmUuCiB9CiAKLVNWR01hdHJpeCogU1ZHRml0VG9WaWV3Qm94
Ojp2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKGZsb2F0IHZpZXdXaWR0aCwgZmxvYXQgdmlld0hlaWdo
dCkgY29uc3QKK0FmZmluZVRyYW5zZm9ybSBTVkdGaXRUb1ZpZXdCb3g6OnZpZXdCb3hUb1ZpZXdU
cmFuc2Zvcm0oZmxvYXQgdmlld1dpZHRoLCBmbG9hdCB2aWV3SGVpZ2h0KSBjb25zdAogewogICAg
IEZsb2F0UmVjdCB2aWV3Qm94UmVjdCA9IHZpZXdCb3goKTsKICAgICBpZiAoIXZpZXdCb3hSZWN0
LndpZHRoKCkgfHwgIXZpZXdCb3hSZWN0LmhlaWdodCgpKQotICAgICAgICByZXR1cm4gU1ZHU1ZH
RWxlbWVudDo6Y3JlYXRlU1ZHTWF0cml4KCk7CisgICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zv
cm0oKTsKIAogICAgIHJldHVybiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKCktPmdldENUTSh2aWV3Qm94
UmVjdC54KCksCiAgICAgICAgICAgICB2aWV3Qm94UmVjdC55KCksIHZpZXdCb3hSZWN0LndpZHRo
KCksIHZpZXdCb3hSZWN0LmhlaWdodCgpLApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRml0
VG9WaWV3Qm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRml0VG9WaWV3
Qm94LmgJKHJldmlzaW9uIDE4MTYzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRml0VG9WaWV3
Qm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIGNsYXNzIEF0dHJpYnV0ZTsKLSAgICBjbGFzcyBTVkdNYXRyaXg7CisgICAgY2xh
c3MgQWZmaW5lVHJhbnNmb3JtOwogICAgIGNsYXNzIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW87CiAg
ICAgY2xhc3MgU3RyaW5nSW1wbDsKIApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICAgICAgLy8gJ1NWR0ZpdFRvVmlld0JveCcgZnVuY3Rpb25zCiAgICAgICAgIHZv
aWQgcGFyc2VWaWV3Qm94KGNvbnN0IFN0cmluZyYpOwotICAgICAgICBTVkdNYXRyaXgqIHZpZXdC
b3hUb1ZpZXdUcmFuc2Zvcm0oZmxvYXQgdmlld1dpZHRoLCBmbG9hdCB2aWV3SGVpZ2h0KSBjb25z
dDsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0oZmxvYXQg
dmlld1dpZHRoLCBmbG9hdCB2aWV3SGVpZ2h0KSBjb25zdDsKIAogICAgICAgICBib29sIHBhcnNl
TWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwogCkluZGV4OiBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdMZW5ndGhMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdMZW5ndGhMaXN0LmNwcAkocmV2aXNpb24gMTgxNjMpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdMZW5ndGhMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNiBAQAogCiAjaWZk
ZWYgU1ZHX1NVUFBPUlQKICNpbmNsdWRlICJTVkdMZW5ndGhMaXN0LmgiCi0jaW5jbHVkZSAiU1ZH
TWF0cml4LmgiCiAjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVu
dC5jcHAJKHJldmlzaW9uIDE4MTYzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1
ZGUgIlNWR1BhaW50U2VydmVyTGluZWFyR3JhZGllbnQuaCIKICNpbmNsdWRlICJTVkdIZWxwZXIu
aCIKICNpbmNsdWRlICJTVkdMZW5ndGguaCIKLSNpbmNsdWRlICJTVkdNYXRyaXguaCIKICNpbmNs
dWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1RyYW5zZm9ybS5oIgogI2luY2x1ZGUgIlNW
R1RyYW5zZm9ybUxpc3QuaCIKQEAgLTg4LDcgKzg3LDcgQEAgdm9pZCBTVkdMaW5lYXJHcmFkaWVu
dEVsZW1lbnQ6OmJ1aWxkR3JhZAogICAgIFJlZlB0cjxTVkdQYWludFNlcnZlckxpbmVhckdyYWRp
ZW50PiBncmFkID0gV1RGOjpzdGF0aWNfcG9pbnRlcl9jYXN0PFNWR1BhaW50U2VydmVyTGluZWFy
R3JhZGllbnQ+KF9ncmFkKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gbWF0OwogICAgIGlmIChncmFk
aWVudFRyYW5zZm9ybSgpLT5udW1iZXJPZkl0ZW1zKCkgPiAwKQotICAgICAgICBtYXQgPSBncmFk
aWVudFRyYW5zZm9ybSgpLT5jb25zb2xpZGF0ZSgpLT5tYXRyaXgoKS0+bWF0cml4KCk7CisgICAg
ICAgIG1hdCA9IGdyYWRpZW50VHJhbnNmb3JtKCktPmNvbnNvbGlkYXRlKCktPm1hdHJpeCgpOwog
CiAgICAgRGVwcmVjYXRlZFN0cmluZyByZWYgPSBocmVmKCkuZGVwcmVjYXRlZFN0cmluZygpOwog
ICAgIFJlZlB0cjxTVkdQYWludFNlcnZlcj4gcHNlcnZlciA9IGdldFBhaW50U2VydmVyQnlJZChk
b2N1bWVudCgpLCByZWYubWlkKDEpKTsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xvY2F0
YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTG9jYXRhYmxlLmNw
cAkocmV2aXNpb24gMTgxNjMpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMb2NhdGFibGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw4ICsyNCw5IEBACiAjaWZkZWYgU1ZHX1NVUFBPUlQKICNp
bmNsdWRlICJTVkdMb2NhdGFibGUuaCIKIAorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgog
I2luY2x1ZGUgIlJlbmRlclBhdGguaCIKLSNpbmNsdWRlICJTVkdNYXRyaXguaCIKKyNpbmNsdWRl
ICJTVkdFeGNlcHRpb24uaCIKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTg4LDU3ICs4OSw1NiBAQCBGbG9hdFJlY3QgU1ZHTG9jYXRhYmxlOjpn
ZXRCQm94KGNvbnN0IFNWCiAgICAgcmV0dXJuIGJib3hSZWN0OwogfQogCi1TVkdNYXRyaXgqIFNW
R0xvY2F0YWJsZTo6Z2V0Q1RNKGNvbnN0IFNWR0VsZW1lbnQqIGVsZW1lbnQpCitBZmZpbmVUcmFu
c2Zvcm0gU1ZHTG9jYXRhYmxlOjpnZXRDVE0oY29uc3QgU1ZHRWxlbWVudCogZWxlbWVudCkKIHsK
ICAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gQWZm
aW5lVHJhbnNmb3JtKCk7CiAKLSAgICBTVkdNYXRyaXgqIGN0bSA9IFNWR1NWR0VsZW1lbnQ6OmNy
ZWF0ZVNWR01hdHJpeCgpOworICAgIEFmZmluZVRyYW5zZm9ybSBjdG07CiAKICAgICBOb2RlKiBw
YXJlbnQgPSBlbGVtZW50LT5wYXJlbnROb2RlKCk7CiAgICAgaWYgKHBhcmVudCAmJiBwYXJlbnQt
PmlzRWxlbWVudE5vZGUoKSkgewogICAgICAgICBTVkdFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0g
c3ZnX2R5bmFtaWNfY2FzdChwYXJlbnQpOwogICAgICAgICBpZiAocGFyZW50RWxlbWVudCAmJiBw
YXJlbnRFbGVtZW50LT5pc1N0eWxlZExvY2F0YWJsZSgpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8
U1ZHTWF0cml4PiBwYXJlbnRDVE0gPSBzdGF0aWNfY2FzdDxTVkdTdHlsZWRMb2NhdGFibGVFbGVt
ZW50Kj4ocGFyZW50RWxlbWVudCktPmdldENUTSgpOwotICAgICAgICAgICAgY3RtLT5tdWx0aXBs
eShwYXJlbnRDVE0uZ2V0KCkpOworICAgICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHBhcmVudENU
TSA9IHN0YXRpY19jYXN0PFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQqPihwYXJlbnRFbGVtZW50
KS0+Z2V0Q1RNKCk7CisgICAgICAgICAgICBjdG0gPSBwYXJlbnRDVE0gKiBjdG07CiAgICAgICAg
IH0KICAgICB9CiAKICAgICByZXR1cm4gY3RtOwogfQogCi1TVkdNYXRyaXgqIFNWR0xvY2F0YWJs
ZTo6Z2V0U2NyZWVuQ1RNKGNvbnN0IFNWR0VsZW1lbnQqIGVsZW1lbnQpCitBZmZpbmVUcmFuc2Zv
cm0gU1ZHTG9jYXRhYmxlOjpnZXRTY3JlZW5DVE0oY29uc3QgU1ZHRWxlbWVudCogZWxlbWVudCkK
IHsKICAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4g
QWZmaW5lVHJhbnNmb3JtKCk7CiAKLSAgICBTVkdNYXRyaXgqIGN0bSA9IFNWR1NWR0VsZW1lbnQ6
OmNyZWF0ZVNWR01hdHJpeCgpOworICAgIEFmZmluZVRyYW5zZm9ybSBjdG07CiAKICAgICBOb2Rl
KiBwYXJlbnQgPSBlbGVtZW50LT5wYXJlbnROb2RlKCk7CiAgICAgaWYgKHBhcmVudCAmJiBwYXJl
bnQtPmlzRWxlbWVudE5vZGUoKSkgewogICAgICAgICBTVkdFbGVtZW50KiBwYXJlbnRFbGVtZW50
ID0gc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+KHBhcmVudCk7CiAgICAgICAgIGlmIChwYXJlbnRF
bGVtZW50LT5pc1N0eWxlZExvY2F0YWJsZSgpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8U1ZHTWF0
cml4PiBwYXJlbnRDVE0gPSBzdGF0aWNfY2FzdDxTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50Kj4o
cGFyZW50RWxlbWVudCktPmdldFNjcmVlbkNUTSgpOwotICAgICAgICAgICAgY3RtLT5tdWx0aXBs
eShwYXJlbnRDVE0uZ2V0KCkpOworICAgICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHBhcmVudENU
TSA9IHN0YXRpY19jYXN0PFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQqPihwYXJlbnRFbGVtZW50
KS0+Z2V0U2NyZWVuQ1RNKCk7CisgICAgICAgICAgICBjdG0gPSBwYXJlbnRDVE0gKiBjdG07CiAg
ICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gY3RtOwogfQogCi1TVkdNYXRyaXgqIFNWR0xv
Y2F0YWJsZTo6Z2V0VHJhbnNmb3JtVG9FbGVtZW50KFNWR0VsZW1lbnQqIHRhcmdldCwgRXhjZXB0
aW9uQ29kZSYgZWMpIGNvbnN0CitBZmZpbmVUcmFuc2Zvcm0gU1ZHTG9jYXRhYmxlOjpnZXRUcmFu
c2Zvcm1Ub0VsZW1lbnQoU1ZHRWxlbWVudCogdGFyZ2V0LCBFeGNlcHRpb25Db2RlJiBlYykgY29u
c3QKIHsKLSAgICBSZWZQdHI8U1ZHTWF0cml4PiBzdGFydGN0bShnZXRDVE0oKSk7Ci0gICAgU1ZH
TWF0cml4KiBjdG0gPSBTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdNYXRyaXgoKTsKLSAgICBjdG0t
Pm11bHRpcGx5KHN0YXJ0Y3RtLmdldCgpKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gY3RtID0gZ2V0
Q1RNKCk7CiAKICAgICBTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gc3ZnX2R5bmFtaWNfY2Fz
dCh0YXJnZXQpOwogICAgIGlmICh0YXJnZXRFbGVtZW50ICYmIHRhcmdldEVsZW1lbnQtPmlzU3R5
bGVkTG9jYXRhYmxlKCkpIHsKLSAgICAgICAgUmVmUHRyPFNWR01hdHJpeD4gdGFyZ2V0Q1RNID0g
c3RhdGljX2Nhc3Q8U1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudCo+KHRhcmdldEVsZW1lbnQpLT5n
ZXRDVE0oKTsKLSAgICAgICAgdGFyZ2V0Q1RNLmdldCgpLT5pbnZlcnNlKGVjKTsKLSAgICAgICAg
aWYgKGVjKQorICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdGFyZ2V0Q1RNID0gc3RhdGljX2Nhc3Q8
U1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudCo+KHRhcmdldEVsZW1lbnQpLT5nZXRDVE0oKTsKKyAg
ICAgICAgaWYgKCF0YXJnZXRDVE0uaXNJbnZlcnRpYmxlKCkpIHsKKyAgICAgICAgICAgIGVjID0g
U1ZHX01BVFJJWF9OT1RfSU5WRVJUQUJMRTsKICAgICAgICAgICAgIHJldHVybiBjdG07Ci0gICAg
ICAgIGN0bS0+cG9zdE11bHRpcGx5KHRhcmdldENUTS5nZXQoKSk7CisgICAgICAgIH0KKyAgICAg
ICAgY3RtICo9IHRhcmdldENUTS5pbnZlcnNlKCk7CiAgICAgfQogCiAgICAgcmV0dXJuIGN0bTsK
SW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xvY2F0YWJsZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR0xvY2F0YWJsZS5oCShyZXZpc2lvbiAxODE2MykKKysrIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR0xvY2F0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw5ICsyOSw5
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorICAgIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsK
ICAgICBjbGFzcyBGbG9hdFJlY3Q7CiAgICAgY2xhc3MgU1ZHRWxlbWVudDsKLSAgICBjbGFzcyBT
VkdNYXRyaXg7CiAgICAgY2xhc3MgU1ZHU3R5bGVkRWxlbWVudDsKIAogICAgIGNsYXNzIFNWR0xv
Y2F0YWJsZSB7CkBAIC00NCwxNiArNDQsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2aXJ0dWFsIFNWR0VsZW1lbnQqIGZhcnRoZXN0Vmlld3BvcnRFbGVtZW50KCkgY29uc3QgPSAw
OwogCiAgICAgICAgIHZpcnR1YWwgRmxvYXRSZWN0IGdldEJCb3goKSBjb25zdCA9IDA7Ci0gICAg
ICAgIHZpcnR1YWwgU1ZHTWF0cml4KiBnZXRDVE0oKSBjb25zdCA9IDA7Ci0gICAgICAgIHZpcnR1
YWwgU1ZHTWF0cml4KiBnZXRTY3JlZW5DVE0oKSBjb25zdCA9IDA7Ci0gICAgICAgIFNWR01hdHJp
eCogZ2V0VHJhbnNmb3JtVG9FbGVtZW50KFNWR0VsZW1lbnQqLCBFeGNlcHRpb25Db2RlJikgY29u
c3Q7CisgICAgICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGdldENUTSgpIGNvbnN0ID0gMDsK
KyAgICAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gZ2V0U2NyZWVuQ1RNKCkgY29uc3QgPSAw
OworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gZ2V0VHJhbnNmb3JtVG9FbGVtZW50KFNWR0VsZW1l
bnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHN0
YXRpYyBTVkdFbGVtZW50KiBuZWFyZXN0Vmlld3BvcnRFbGVtZW50KGNvbnN0IFNWR1N0eWxlZEVs
ZW1lbnQqKTsKICAgICAgICAgc3RhdGljIFNWR0VsZW1lbnQqIGZhcnRoZXN0Vmlld3BvcnRFbGVt
ZW50KGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqKTsKICAgICAgICAgc3RhdGljIEZsb2F0UmVjdCBn
ZXRCQm94KGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqKTsKLSAgICAgICAgc3RhdGljIFNWR01hdHJp
eCogZ2V0Q1RNKGNvbnN0IFNWR0VsZW1lbnQqKTsKLSAgICAgICAgc3RhdGljIFNWR01hdHJpeCog
Z2V0U2NyZWVuQ1RNKGNvbnN0IFNWR0VsZW1lbnQqKTsKKyAgICAgICAgc3RhdGljIEFmZmluZVRy
YW5zZm9ybSBnZXRDVE0oY29uc3QgU1ZHRWxlbWVudCopOworICAgICAgICBzdGF0aWMgQWZmaW5l
VHJhbnNmb3JtIGdldFNjcmVlbkNUTShjb25zdCBTVkdFbGVtZW50Kik7CiAgICAgfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFya2VyRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFya2VyRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDE4MTYzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFya2VyRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJTVkdG
aXRUb1ZpZXdCb3guaCIKICNpbmNsdWRlICJTVkdIZWxwZXIuaCIKICNpbmNsdWRlICJTVkdMZW5n
dGguaCIKLSNpbmNsdWRlICJTVkdNYXRyaXguaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2lu
Y2x1ZGUgIlNWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaCIKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50
LmgiCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXRyaXguY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hdHJpeC5jcHAJKHJldmlzaW9uIDE4MTYzKQorKysgV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHTWF0cml4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwzMDUgKzAs
MCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5u
IDx3aWxkZm94QGtkZS5vcmc+Ci0gICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1IFJvYiBCdWlz
IDxidWlzQGtkZS5vcmc+Ci0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2pl
Y3QKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBs
ZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpZmRlZiBTVkdfU1VQUE9SVAotI2luY2x1ZGUgIlNW
R01hdHJpeC5oIgotCi0jaW5jbHVkZSAiU1ZHQW5nbGUuaCIKLSNpbmNsdWRlICJTVkdFeGNlcHRp
b24uaCIKLSNpbmNsdWRlICJTVkdIZWxwZXIuaCIKLSNpbmNsdWRlIDxtYXRoLmg+Ci0KLXVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwotCi1TVkdNYXRyaXg6OlNWR01hdHJpeCgpIDogU2hhcmVkPFNW
R01hdHJpeD4oKQotewotfQotCi1TVkdNYXRyaXg6OlNWR01hdHJpeChjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIG1hdCkKLSAgICA6IFNoYXJlZDxTVkdNYXRyaXg+KCkKLSAgICAsIG1fbWF0KG1hdCkK
LXsKLX0KLQotU1ZHTWF0cml4OjpTVkdNYXRyaXgoZG91YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUg
YywgZG91YmxlIGQsIGRvdWJsZSBlLCBkb3VibGUgZikgOiBTaGFyZWQ8U1ZHTWF0cml4PigpCi17
Ci0gICAgbV9tYXQuc2V0TWF0cml4KGEsIGIsIGMsIGQsIGUsIGYpOwotfQotCi1TVkdNYXRyaXg6
On5TVkdNYXRyaXgoKQotewotfQotCi12b2lkIFNWR01hdHJpeDo6c2V0QShkb3VibGUgYSkKLXsK
LSAgICBtX21hdC5zZXRNYXRyaXgoYSwgbV9tYXQubTEyKCksIG1fbWF0Lm0yMSgpLCBtX21hdC5t
MjIoKSwgbV9tYXQuZHgoKSwgbV9tYXQuZHkoKSk7Ci19Ci0KLWRvdWJsZSBTVkdNYXRyaXg6OmEo
KSBjb25zdAotewotICAgIHJldHVybiBtX21hdC5tMTEoKTsKLX0KLQotdm9pZCBTVkdNYXRyaXg6
OnNldEIoZG91YmxlIGIpCi17Ci0gICAgbV9tYXQuc2V0TWF0cml4KG1fbWF0Lm0xMSgpLCBiLCBt
X21hdC5tMjEoKSwgbV9tYXQubTIyKCksIG1fbWF0LmR4KCksIG1fbWF0LmR5KCkpOwotfQotCi1k
b3VibGUgU1ZHTWF0cml4OjpiKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9tYXQubTEyKCk7Ci19
Ci0KLXZvaWQgU1ZHTWF0cml4OjpzZXRDKGRvdWJsZSBjKQotewotICAgIG1fbWF0LnNldE1hdHJp
eChtX21hdC5tMTEoKSwgbV9tYXQubTEyKCksIGMsIG1fbWF0Lm0yMigpLCBtX21hdC5keCgpLCBt
X21hdC5keSgpKTsKLX0KLQotZG91YmxlIFNWR01hdHJpeDo6YygpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fbWF0Lm0yMSgpOwotfQotCi12b2lkIFNWR01hdHJpeDo6c2V0RChkb3VibGUgZCkKLXsK
LSAgICBtX21hdC5zZXRNYXRyaXgobV9tYXQubTExKCksIG1fbWF0Lm0xMigpLCBtX21hdC5tMjEo
KSwgZCwgbV9tYXQuZHgoKSwgbV9tYXQuZHkoKSk7Ci19Ci0KLWRvdWJsZSBTVkdNYXRyaXg6OmQo
KSBjb25zdAotewotICAgIHJldHVybiBtX21hdC5tMjIoKTsKLX0KLQotdm9pZCBTVkdNYXRyaXg6
OnNldEUoZG91YmxlIGUpCi17Ci0gICAgbV9tYXQuc2V0TWF0cml4KG1fbWF0Lm0xMSgpLCBtX21h
dC5tMTIoKSwgbV9tYXQubTIxKCksIG1fbWF0Lm0yMigpLCBlLCBtX21hdC5keSgpKTsKLX0KLQot
ZG91YmxlIFNWR01hdHJpeDo6ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbWF0LmR4KCk7Ci19
Ci0KLXZvaWQgU1ZHTWF0cml4OjpzZXRGKGRvdWJsZSBmKQotewotICAgIG1fbWF0LnNldE1hdHJp
eChtX21hdC5tMTEoKSwgbV9tYXQubTEyKCksIG1fbWF0Lm0yMSgpLCBtX21hdC5tMjIoKSwgbV9t
YXQuZHgoKSwgZik7Ci19Ci0KLWRvdWJsZSBTVkdNYXRyaXg6OmYoKSBjb25zdAotewotICAgIHJl
dHVybiBtX21hdC5keSgpOwotfQotCi12b2lkIFNWR01hdHJpeDo6Y29weShjb25zdCBTVkdNYXRy
aXgqIG90aGVyKQotewotICAgIG1fbWF0LnNldE1hdHJpeChvdGhlci0+bV9tYXQubTExKCksIG90
aGVyLT5tX21hdC5tMTIoKSwgb3RoZXItPm1fbWF0Lm0yMSgpLCBvdGhlci0+bV9tYXQubTIyKCks
IG90aGVyLT5tX21hdC5keCgpLCBvdGhlci0+bV9tYXQuZHkoKSk7Ci19Ci0KLVNWR01hdHJpeCog
U1ZHTWF0cml4Ojpwb3N0TXVsdGlwbHkoY29uc3QgU1ZHTWF0cml4KiBzZWNvbmRNYXRyaXgpCi17
Ci0gICAgQWZmaW5lVHJhbnNmb3JtIHRlbXAoc2Vjb25kTWF0cml4LT5hKCksIHNlY29uZE1hdHJp
eC0+YigpLCBzZWNvbmRNYXRyaXgtPmMoKSwgc2Vjb25kTWF0cml4LT5kKCksIHNlY29uZE1hdHJp
eC0+ZSgpLCBzZWNvbmRNYXRyaXgtPmYoKSk7Ci0gICAgbV9tYXQgKj0gdGVtcDsKLSAgICByZXR1
cm4gdGhpczsKLX0KLQotU1ZHTWF0cml4KiBTVkdNYXRyaXg6OmludmVyc2UoRXhjZXB0aW9uQ29k
ZSYgZWMpCi17Ci0gICAgaWYgKCFtX21hdC5pc0ludmVydGlibGUoKSkKLSAgICAgICAgZWMgPSBT
VkdfTUFUUklYX05PVF9JTlZFUlRBQkxFOwotICAgIG1fbWF0ID0gbV9tYXQuaW52ZXJ0KCk7Ci0g
ICAgcmV0dXJuIHRoaXM7Ci19Ci0KLVNWR01hdHJpeCogU1ZHTWF0cml4Ojpwb3N0VHJhbnNsYXRl
KGRvdWJsZSB4LCAgZG91YmxlIHkpCi17Ci0gICAgLy8gQ291bGQgb3B0aW1pc2UgdGhlc2UuCi0g
ICAgQWZmaW5lVHJhbnNmb3JtIHRlbXA7Ci0gICAgdGVtcC50cmFuc2xhdGUoeCwgeSk7Ci0gICAg
bV9tYXQgKj0gdGVtcDsKLSAgICByZXR1cm4gdGhpczsKLX0KLQotU1ZHTWF0cml4KiBTVkdNYXRy
aXg6OnBvc3RTY2FsZShkb3VibGUgc2NhbGVGYWN0b3IpCi17Ci0gICAgQWZmaW5lVHJhbnNmb3Jt
IHRlbXA7Ci0gICAgdGVtcC5zY2FsZShzY2FsZUZhY3Rvciwgc2NhbGVGYWN0b3IpOwotICAgIG1f
bWF0ICo9IHRlbXA7Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0KLVNWR01hdHJpeCogU1ZHTWF0cml4
Ojpwb3N0U2NhbGVOb25Vbmlmb3JtKGRvdWJsZSBzY2FsZUZhY3RvclgsIGRvdWJsZSBzY2FsZUZh
Y3RvclkpCi17Ci0gICAgQWZmaW5lVHJhbnNmb3JtIHRlbXA7Ci0gICAgdGVtcC5zY2FsZShzY2Fs
ZUZhY3RvclgsIHNjYWxlRmFjdG9yWSk7Ci0gICAgbV9tYXQgKj0gdGVtcDsKLSAgICByZXR1cm4g
dGhpczsKLX0KLQotU1ZHTWF0cml4KiBTVkdNYXRyaXg6OnBvc3RSb3RhdGUoZG91YmxlIGFuZ2xl
KQotewotICAgIEFmZmluZVRyYW5zZm9ybSB0ZW1wOwotICAgIHRlbXAucm90YXRlKGFuZ2xlKTsK
LSAgICBtX21hdCAqPSB0ZW1wOwotICAgIHJldHVybiB0aGlzOwotfQotCi1TVkdNYXRyaXgqIFNW
R01hdHJpeDo6cG9zdFJvdGF0ZUZyb21WZWN0b3IoZG91YmxlIHgsIGRvdWJsZSB5KQotewotICAg
IEFmZmluZVRyYW5zZm9ybSB0ZW1wOwotICAgIHRlbXAucm90YXRlKFNWR0FuZ2xlOjp0b2RlZyhh
dGFuMih5LCB4KSkpOwotICAgIG1fbWF0ICo9IHRlbXA7Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0K
LVNWR01hdHJpeCogU1ZHTWF0cml4Ojpwb3N0RmxpcFgoKQotewotICAgIEFmZmluZVRyYW5zZm9y
bSB0ZW1wKC0xLjBGLCAwLjBGLCAwLjBGLCAxLjBGLCAwLjBGLCAwLjBGKTsKLSAgICBtX21hdCAq
PSB0ZW1wOwotICAgIHJldHVybiB0aGlzOwotfQotCi1TVkdNYXRyaXgqIFNWR01hdHJpeDo6cG9z
dEZsaXBZKCkKLXsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gdGVtcCgxLjBGLCAwLjBGLCAwLjBGLCAt
MS4wRiwgMC4wRiwgMC4wRik7Ci0gICAgbV9tYXQgKj0gdGVtcDsKLSAgICByZXR1cm4gdGhpczsK
LX0KLQotU1ZHTWF0cml4KiBTVkdNYXRyaXg6OnBvc3RTa2V3WChkb3VibGUgYW5nbGUpCi17Ci0g
ICAgQWZmaW5lVHJhbnNmb3JtIHRlbXA7Ci0gICAgdGVtcC5zaGVhcih0YW4oU1ZHQW5nbGU6OnRv
cmFkKGFuZ2xlKSksIDAuMEYpOwotICAgIG1fbWF0ICo9IHRlbXA7Ci0gICAgcmV0dXJuIHRoaXM7
Ci19Ci0KLVNWR01hdHJpeCogU1ZHTWF0cml4Ojpwb3N0U2tld1koZG91YmxlIGFuZ2xlKQotewot
ICAgIEFmZmluZVRyYW5zZm9ybSB0ZW1wOwotICAgIHRlbXAuc2hlYXIoMC4wRiwgdGFuKFNWR0Fu
Z2xlOjp0b3JhZChhbmdsZSkpKTsKLSAgICBtX21hdCAqPSB0ZW1wOwotICAgIHJldHVybiB0aGlz
OwotfQotCi1TVkdNYXRyaXgqIFNWR01hdHJpeDo6bXVsdGlwbHkoY29uc3QgU1ZHTWF0cml4KiBz
ZWNvbmRNYXRyaXgpCi17Ci0gICAgQWZmaW5lVHJhbnNmb3JtIHRlbXAoc2Vjb25kTWF0cml4LT5h
KCksIHNlY29uZE1hdHJpeC0+YigpLCBzZWNvbmRNYXRyaXgtPmMoKSwgc2Vjb25kTWF0cml4LT5k
KCksIHNlY29uZE1hdHJpeC0+ZSgpLCBzZWNvbmRNYXRyaXgtPmYoKSk7Ci0gICAgdGVtcCAqPSBt
X21hdDsKLSAgICBtX21hdCA9IHRlbXA7Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0KLVNWR01hdHJp
eCogU1ZHTWF0cml4Ojp0cmFuc2xhdGUoZG91YmxlIHgsICBkb3VibGUgeSkKLXsKLSAgICBtX21h
dC50cmFuc2xhdGUoeCwgeSk7Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0KLVNWR01hdHJpeCogU1ZH
TWF0cml4OjpzY2FsZShkb3VibGUgc2NhbGVGYWN0b3IpCi17Ci0gICAgbV9tYXQuc2NhbGUoc2Nh
bGVGYWN0b3IsIHNjYWxlRmFjdG9yKTsKLSAgICByZXR1cm4gdGhpczsKLX0KLQotU1ZHTWF0cml4
KiBTVkdNYXRyaXg6OnNjYWxlTm9uVW5pZm9ybShkb3VibGUgc2NhbGVGYWN0b3JYLCBkb3VibGUg
c2NhbGVGYWN0b3JZKQotewotICAgIG1fbWF0LnNjYWxlKHNjYWxlRmFjdG9yWCwgc2NhbGVGYWN0
b3JZKTsKLSAgICByZXR1cm4gdGhpczsKLX0KLQotU1ZHTWF0cml4KiBTVkdNYXRyaXg6OnJvdGF0
ZShkb3VibGUgYW5nbGUpCi17Ci0gICAgbV9tYXQucm90YXRlKGFuZ2xlKTsKLSAgICByZXR1cm4g
dGhpczsKLX0KLQotU1ZHTWF0cml4KiBTVkdNYXRyaXg6OnJvdGF0ZUZyb21WZWN0b3IoZG91Ymxl
IHgsIGRvdWJsZSB5LCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAoeCA9PSAwIHx8IHkg
PT0gMCkgewotICAgICAgICBlYyA9IFNWR19JTlZBTElEX1ZBTFVFX0VSUjsKLSAgICAgICAgcmV0
dXJuIHRoaXM7Ci0gICAgfQotICAgIG1fbWF0LnJvdGF0ZShTVkdBbmdsZTo6dG9kZWcoYXRhbjIo
eSwgeCkpKTsKLSAgICByZXR1cm4gdGhpczsKLX0KLQotU1ZHTWF0cml4KiBTVkdNYXRyaXg6OmZs
aXBYKCkKLXsKLSAgICBtX21hdC5zY2FsZSgtMS4wZiwgMS4wZik7Ci0gICAgcmV0dXJuIHRoaXM7
Ci19Ci0KLVNWR01hdHJpeCogU1ZHTWF0cml4OjpmbGlwWSgpCi17Ci0gICAgbV9tYXQuc2NhbGUo
MS4wZiwgLTEuMGYpOwotICAgIHJldHVybiB0aGlzOwotfQotCi1TVkdNYXRyaXgqIFNWR01hdHJp
eDo6c2tld1goZG91YmxlIGFuZ2xlKQotewotICAgIG1fbWF0LnNoZWFyKHRhbihTVkdBbmdsZTo6
dG9yYWQoYW5nbGUpKSwgMC4wRik7Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0KLVNWR01hdHJpeCog
U1ZHTWF0cml4Ojpza2V3WShkb3VibGUgYW5nbGUpCi17Ci0gICAgbV9tYXQuc2hlYXIoMC4wRiwg
dGFuKFNWR0FuZ2xlOjp0b3JhZChhbmdsZSkpKTsKLSAgICByZXR1cm4gdGhpczsKLX0KLQotdm9p
ZCBTVkdNYXRyaXg6OnNldE1hdHJpeChjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIG1hdCkKLXsKLSAg
ICBtX21hdCA9IG1hdDsKLX0KLQotQWZmaW5lVHJhbnNmb3JtJiBTVkdNYXRyaXg6Om1hdHJpeCgp
Ci17Ci0gICAgcmV0dXJuIG1fbWF0OwotfQotCi1jb25zdCBBZmZpbmVUcmFuc2Zvcm0mIFNWR01h
dHJpeDo6bWF0cml4KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9tYXQ7Ci19Ci0KLXZvaWQgU1ZH
TWF0cml4OjpyZXNldCgpCi17Ci0gICAgbV9tYXQucmVzZXQoKTsKLX0KLQotdm9pZCBTVkdNYXRy
aXg6OnJlbW92ZVNjYWxlKGRvdWJsZSogeFNjYWxlLCBkb3VibGUqIHlTY2FsZSkKLXsKLSAgICBk
b3VibGUgc3ggPSBzcXJ0KGEoKSAqIGEoKSArIGIoKSAqIGIoKSk7Ci0gICAgZG91YmxlIHN5ID0g
c3FydChjKCkgKiBjKCkgKyBkKCkgKiBkKCkpOwotCi0gICAgLy8gUmVtb3ZlIHRoZSBzY2FsaW5n
IGZyb20gdGhlIG1hdHJpeC4KLSAgICBzZXRBKGEoKSAvIHN4KTsgc2V0QihiKCkgLyBzeCk7Ci0g
ICAgc2V0QyhjKCkgLyBzeSk7IHNldEQoZCgpIC8gc3kpOwotCi0gICAgKnhTY2FsZSA9IHN4Owot
ICAgICp5U2NhbGUgPSBzeTsKLX0KLQotLy8gdmltOnRzPTQ6bm9ldAotI2VuZGlmIC8vIFNWR19T
VVBQT1JUCi0KSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hdHJpeC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hdHJpeC5oCShyZXZpc2lvbiAxODE2MykKKysrIFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR01hdHJpeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwNyArMCww
IEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4g
PHdpbGRmb3hAa2RlLm9yZz4KLSAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUgUm9iIEJ1aXMg
PGJ1aXNAa2RlLm9yZz4KLQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVj
dAotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
Ci0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxl
IFBsYWNlIC0gU3VpdGUgMzMwLAotICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotKi8K
LQotI2lmbmRlZiBLU1ZHX1NWR01hdHJpeEltcGxfSAotI2RlZmluZSBLU1ZHX1NWR01hdHJpeElt
cGxfSAotI2lmZGVmIFNWR19TVVBQT1JUCi0KLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIK
LSNpbmNsdWRlICJTaGFyZWQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0gICAgdHlwZWRl
ZiBpbnQgRXhjZXB0aW9uQ29kZTsKLQotICAgIGNsYXNzIFNWR01hdHJpeCA6IHB1YmxpYyBTaGFy
ZWQ8U1ZHTWF0cml4PiB7IAotICAgIHB1YmxpYzoKLSAgICAgICAgU1ZHTWF0cml4KCk7Ci0gICAg
ICAgIFNWR01hdHJpeChkb3VibGUgYSwgZG91YmxlIGIsIGRvdWJsZSBjLCBkb3VibGUgZCwgZG91
YmxlIGUsIGRvdWJsZSBmKTsKLSAgICAgICAgU1ZHTWF0cml4KGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgbWF0KTsKLSAgICAgICAgdmlydHVhbCB+U1ZHTWF0cml4KCk7Ci0KLSAgICAgICAgdm9pZCBz
ZXRBKGRvdWJsZSk7Ci0gICAgICAgIGRvdWJsZSBhKCkgY29uc3Q7Ci0KLSAgICAgICAgdm9pZCBz
ZXRCKGRvdWJsZSk7Ci0gICAgICAgIGRvdWJsZSBiKCkgY29uc3Q7Ci0KLSAgICAgICAgdm9pZCBz
ZXRDKGRvdWJsZSk7Ci0gICAgICAgIGRvdWJsZSBjKCkgY29uc3Q7Ci0KLSAgICAgICAgdm9pZCBz
ZXREKGRvdWJsZSk7Ci0gICAgICAgIGRvdWJsZSBkKCkgY29uc3Q7Ci0KLSAgICAgICAgdm9pZCBz
ZXRFKGRvdWJsZSk7Ci0gICAgICAgIGRvdWJsZSBlKCkgY29uc3Q7Ci0KLSAgICAgICAgdm9pZCBz
ZXRGKGRvdWJsZSk7Ci0gICAgICAgIGRvdWJsZSBmKCkgY29uc3Q7Ci0KLSAgICAgICAgdm9pZCBj
b3B5KGNvbnN0IFNWR01hdHJpeCopOwotCi0gICAgICAgIFNWR01hdHJpeCogaW52ZXJzZShFeGNl
cHRpb25Db2RlJik7Ci0KLSAgICAgICAgLy8gUHJlLW11bHRpcGxpZWQgb3BlcmF0aW9ucywgYXMg
cGVyIHRoZSBzcGVjcy4KLSAgICAgICAgU1ZHTWF0cml4KiBtdWx0aXBseShjb25zdCBTVkdNYXRy
aXgqKTsKLSAgICAgICAgU1ZHTWF0cml4KiB0cmFuc2xhdGUoZG91YmxlIHgsIGRvdWJsZSB5KTsK
LSAgICAgICAgU1ZHTWF0cml4KiBzY2FsZShkb3VibGUgc2NhbGVGYWN0b3IpOwotICAgICAgICBT
VkdNYXRyaXgqIHNjYWxlTm9uVW5pZm9ybShkb3VibGUgc2NhbGVGYWN0b3JYLCBkb3VibGUgc2Nh
bGVGYWN0b3JZKTsKLSAgICAgICAgU1ZHTWF0cml4KiByb3RhdGUoZG91YmxlIGFuZ2xlKTsKLSAg
ICAgICAgU1ZHTWF0cml4KiByb3RhdGVGcm9tVmVjdG9yKGRvdWJsZSB4LCBkb3VibGUgeSwgRXhj
ZXB0aW9uQ29kZSYpOwotICAgICAgICBTVkdNYXRyaXgqIGZsaXBYKCk7Ci0gICAgICAgIFNWR01h
dHJpeCogZmxpcFkoKTsKLSAgICAgICAgU1ZHTWF0cml4KiBza2V3WChkb3VibGUgYW5nbGUpOwot
ICAgICAgICBTVkdNYXRyaXgqIHNrZXdZKGRvdWJsZSBhbmdsZSk7Ci0KLSAgICAgICAgLy8gUG9z
dC1tdWx0aXBsaWVkIG9wZXJhdGlvbnMKLSAgICAgICAgU1ZHTWF0cml4KiBwb3N0TXVsdGlwbHko
Y29uc3QgU1ZHTWF0cml4Kik7Ci0gICAgICAgIFNWR01hdHJpeCogcG9zdFRyYW5zbGF0ZShkb3Vi
bGUgeCwgZG91YmxlIHkpOwotICAgICAgICBTVkdNYXRyaXgqIHBvc3RTY2FsZShkb3VibGUgc2Nh
bGVGYWN0b3IpOwotICAgICAgICBTVkdNYXRyaXgqIHBvc3RTY2FsZU5vblVuaWZvcm0oZG91Ymxl
IHNjYWxlRmFjdG9yWCwgZG91YmxlIHNjYWxlRmFjdG9yWSk7Ci0gICAgICAgIFNWR01hdHJpeCog
cG9zdFJvdGF0ZShkb3VibGUgYW5nbGUpOwotICAgICAgICBTVkdNYXRyaXgqIHBvc3RSb3RhdGVG
cm9tVmVjdG9yKGRvdWJsZSB4LCBkb3VibGUgeSk7Ci0gICAgICAgIFNWR01hdHJpeCogcG9zdEZs
aXBYKCk7Ci0gICAgICAgIFNWR01hdHJpeCogcG9zdEZsaXBZKCk7Ci0gICAgICAgIFNWR01hdHJp
eCogcG9zdFNrZXdYKGRvdWJsZSBhbmdsZSk7Ci0gICAgICAgIFNWR01hdHJpeCogcG9zdFNrZXdZ
KGRvdWJsZSBhbmdsZSk7Ci0KLSAgICAgICAgdm9pZCByZXNldCgpOwotCi0gICAgICAgIC8vIEtT
VkcgaGVscGVyIG1ldGhvZAotICAgICAgICBBZmZpbmVUcmFuc2Zvcm0mIG1hdHJpeCgpOwotICAg
ICAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIG1hdHJpeCgpIGNvbnN0OwotCi0gICAgICAgIC8v
IERldGVybWluZSB0aGUgc2NhbGluZyBjb21wb25lbnQgb2YgdGhlIG1hdHJpeCBhbmQgZmFjdG9y
IGl0IG91dC4gQWZ0ZXIKLSAgICAgICAgLy8gdGhpcyBvcGVyYXRpb24sIHRoZSBtYXRyaXggaGFz
IHggYW5kIHkgc2NhbGUgb2Ygb25lLgotICAgICAgICB2b2lkIHJlbW92ZVNjYWxlKGRvdWJsZSog
eFNjYWxlLCBkb3VibGUqIHlTY2FsZSk7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICB2b2lkIHNl
dE1hdHJpeChjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3Jt
IG1fbWF0OwotICAgIH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFNW
R19TVVBQT1JUCi0jZW5kaWYgLy8gS1NWR19TVkdNYXRyaXhJbXBsX0gKLQotLy8gdmltOnRzPTQ6
bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWF0cml4LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXRyaXguaWRsCShyZXZpc2lvbiAxODE2MykKKysrIFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR01hdHJpeC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0
LDcgQEAKIAogbW9kdWxlIHN2ZyB7CiAKLSAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFsPVNWR10g
U1ZHTWF0cml4IHsgCisgICAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD1TVkcsIFBPRFR5cGU9QWZm
aW5lVHJhbnNmb3JtXSBTVkdNYXRyaXggeyAKICAgICAgICAgYXR0cmlidXRlIGZsb2F0IGE7CiAg
ICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBiOwogICAgICAgICBhdHRyaWJ1dGUgZmxvYXQgYzsKQEAg
LTMzLDEzICszMywxMyBAQCBtb2R1bGUgc3ZnIHsKICAgICAgICAgYXR0cmlidXRlIGZsb2F0IGY7
CiAKICAgICAgICAgU1ZHTWF0cml4IG11bHRpcGx5KGluIFNWR01hdHJpeCBzZWNvbmRNYXRyaXgp
OwotICAgICAgICBTVkdNYXRyaXggaW52ZXJzZSgpCisgICAgICAgIFtDdXN0b21dIFNWR01hdHJp
eCBpbnZlcnNlKCkKICAgICAgICAgICAgIHJhaXNlcyhTVkdFeGNlcHRpb24pOwogICAgICAgICBT
VkdNYXRyaXggdHJhbnNsYXRlKGluIGZsb2F0IHgsIGluIGZsb2F0IHkpOwogICAgICAgICBTVkdN
YXRyaXggc2NhbGUoaW4gZmxvYXQgc2NhbGVGYWN0b3IpOwogICAgICAgICBTVkdNYXRyaXggc2Nh
bGVOb25Vbmlmb3JtKGluIGZsb2F0IHNjYWxlRmFjdG9yWCwgaW4gZmxvYXQgc2NhbGVGYWN0b3JZ
KTsKICAgICAgICAgU1ZHTWF0cml4IHJvdGF0ZShpbiBmbG9hdCBhbmdsZSk7Ci0gICAgICAgIFNW
R01hdHJpeCByb3RhdGVGcm9tVmVjdG9yKGluIGZsb2F0IHgsIGluIGZsb2F0IHkpCisgICAgICAg
IFtDdXN0b21dIFNWR01hdHJpeCByb3RhdGVGcm9tVmVjdG9yKGluIGZsb2F0IHgsIGluIGZsb2F0
IHkpCiAgICAgICAgICAgICByYWlzZXMoU1ZHRXhjZXB0aW9uKTsKICAgICAgICAgU1ZHTWF0cml4
IGZsaXBYKCk7CiAgICAgICAgIFNWR01hdHJpeCBmbGlwWSgpOwpJbmRleDogV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHTnVtYmVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdO
dW1iZXIuaWRsCShyZXZpc2lvbiAxODE2MykKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR051bWJl
ci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKIAogbW9kdWxlIHN2ZyB7CiAK
LSAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFsPVNWRywgUE9EVHlwZT1mbG9hdF0gU1ZHTnVtYmVy
IHsKKyAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFsPVNWRywgUE9EVHlwZT1kb3VibGVdIFNWR051
bWJlciB7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBmbG9hdCB2YWx1ZQogICAgICAgICAg
ICAgICAgICAgICAgc2V0dGVyIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgIH07CkluZGV4OiBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdOdW1iZXJMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdOdW1iZXJMaXN0LmNwcAkocmV2aXNpb24gMTgxNjMpCisrKyBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdOdW1iZXJMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUs
NiBAQAogI2lmZGVmIFNWR19TVVBQT1JUCiAjaW5jbHVkZSAiU1ZHTnVtYmVyTGlzdC5oIgogCi0j
aW5jbHVkZSAiU1ZHTWF0cml4LmgiCiAjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXR0ZXJuRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0dGVybkVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxODE2MykKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdHRlcm5FbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIlJlbmRl
clNWR0NvbnRhaW5lci5oIgogI2luY2x1ZGUgIlNWR0hlbHBlci5oIgogI2luY2x1ZGUgIlNWR0xl
bmd0aC5oIgotI2luY2x1ZGUgIlNWR01hdHJpeC5oIgorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9y
bS5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgog
I2luY2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3QuaCIKQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIFNW
R1BhdHRlcm5FbGVtZW50Ojpub3RpZnlBdHRyaWJ1dGVDCiAKICAgICBBZmZpbmVUcmFuc2Zvcm0g
cGF0dGVyblRyYW5zZm9ybU1hdHJpeDsKICAgICBpZiAocGF0dGVyblRyYW5zZm9ybSgpLT5udW1i
ZXJPZkl0ZW1zKCkgPiAwKQotICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtTWF0cml4ID0gcGF0dGVy
blRyYW5zZm9ybSgpLT5jb25zb2xpZGF0ZSgpLT5tYXRyaXgoKS0+bWF0cml4KCk7CisgICAgICAg
IHBhdHRlcm5UcmFuc2Zvcm1NYXRyaXggPSBwYXR0ZXJuVHJhbnNmb3JtKCktPmNvbnNvbGlkYXRl
KCktPm1hdHJpeCgpOwogCiAKICAgICBTVkdQYXR0ZXJuRWxlbWVudCogbm9uQ29uc3RUaGlzID0g
Y29uc3RfY2FzdDxTVkdQYXR0ZXJuRWxlbWVudCo+KHRoaXMpOwpAQCAtMzI4LDE0ICszMjgsMTEg
QEAgU1ZHUmVzb3VyY2UqIFNWR1BhdHRlcm5FbGVtZW50OjpjYW52YXNSZQogICAgIHJldHVybiBt
X3BhaW50U2VydmVyLmdldCgpOwogfQogCi1TVkdNYXRyaXgqIFNWR1BhdHRlcm5FbGVtZW50Ojpn
ZXRDVE0oKSBjb25zdAorQWZmaW5lVHJhbnNmb3JtIFNWR1BhdHRlcm5FbGVtZW50OjpnZXRDVE0o
KSBjb25zdAogewotICAgIFNWR01hdHJpeCogbWF0ID0gU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZH
TWF0cml4KCk7Ci0gICAgaWYgKG1hdCkgewotICAgICAgICBSZWZQdHI8U1ZHTWF0cml4PiB2aWV3
Qm94ID0gdmlld0JveFRvVmlld1RyYW5zZm9ybSh3aWR0aCgpLT52YWx1ZSgpLCBoZWlnaHQoKS0+
dmFsdWUoKSk7Ci0gICAgICAgIG1hdC0+bXVsdGlwbHkodmlld0JveC5nZXQoKSk7Ci0gICAgfQot
CisgICAgQWZmaW5lVHJhbnNmb3JtIG1hdDsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gdmlld0JveCA9
IHZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0od2lkdGgoKS0+dmFsdWUoKSwgaGVpZ2h0KCktPnZhbHVl
KCkpOworICAgIG1hdCAqPSB2aWV3Qm94OwogICAgIHJldHVybiBtYXQ7CiB9CiAKSW5kZXg6IFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAkocmV2aXNpb24gMTgxNjMpCisrKyBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3
ICs2Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgU1ZHUmVzb3VyY2Uq
IGNhbnZhc1Jlc291cmNlKCk7CiAKICAgICAgICAgLy8gJ3ZpcnR1YWwgU1ZHTG9jYXRhYmxlJyBm
dW5jdGlvbnMKLSAgICAgICAgdmlydHVhbCBTVkdNYXRyaXgqIGdldENUTSgpIGNvbnN0OworICAg
ICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBnZXRDVE0oKSBjb25zdDsKIAogICAgIHByb3Rl
Y3RlZDoKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZH
VVJJUmVmZXJlbmNlLCBTdHJpbmcsIEhyZWYsIGhyZWYpCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdQb2ludC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUG9pbnQu
aWRsCShyZXZpc2lvbiAxODE2MykKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BvaW50LmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsNyBAQCBtb2R1bGUgc3ZnIHsKICAgICAgICAgICAg
ICAgICAgYXR0cmlidXRlIGZsb2F0IHkKICAgICAgICAgICAgICAgICAgICAgIHNldHRlciByYWlz
ZXMoRE9NRXhjZXB0aW9uKTsKIAotICAgICAgICAvLyBGSVhNRSAtIFJlZW5hYmxlIHRoaXMgb25j
ZSBTVkdNYXRyaXggaXMgY29udmVydGVkIHRvIEFmZmluZVRyYW5zZm9ybQotICAgICAgICAvL1NW
R1BvaW50IG1hdHJpeFRyYW5zZm9ybShpbiBTVkdNYXRyaXggbWF0cml4KTsKKyAgICAgICAgU1ZH
UG9pbnQgbWF0cml4VHJhbnNmb3JtKGluIFNWR01hdHJpeCBtYXRyaXgpOwogICAgIH07CiAKIH0K
SW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uY3BwCShy
ZXZpc2lvbiAxODE2MykKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0
aW8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw2IEBACiAjaWZkZWYgU1ZHX1NVUFBP
UlQKICNpbmNsdWRlICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCiAKLSNpbmNsdWRlICJTVkdN
YXRyaXguaCIKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTEwMSwxMiArMTAwLDEyIEBAIHZvaWQgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6cGFy
c2VQcmVzZXIKICAgICAgICAgbV9jb250ZXh0LT5ub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKTsKIH0K
IAotU1ZHTWF0cml4KiBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpnZXRDVE0oZmxvYXQgbG9naWNY
LCBmbG9hdCBsb2dpY1ksCitBZmZpbmVUcmFuc2Zvcm0gU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6
Z2V0Q1RNKGZsb2F0IGxvZ2ljWCwgZmxvYXQgbG9naWNZLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxvYXQgbG9naWNXaWR0aCwgZmxvYXQgbG9naWNIZWlnaHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCAvKnBoeXNY
Ki8sIGZsb2F0IC8qcGh5c1kqLywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZsb2F0IHBoeXNXaWR0aCwgZmxvYXQgcGh5c0hlaWdodCkKIHsKLSAgICBTVkdNYXRy
aXgqIHRlbXAgPSBTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdNYXRyaXgoKTsKKyAgICBBZmZpbmVU
cmFuc2Zvcm0gdGVtcDsKIAogICAgIGlmIChhbGlnbigpID09IFNWR19QUkVTRVJWRUFTUEVDVFJB
VElPX1VOS05PV04pCiAgICAgICAgIHJldHVybiB0ZW1wOwpAQCAtMTE1LDI2ICsxMTQsMjYgQEAg
U1ZHTWF0cml4KiBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpnZXRDVAogICAgIGZsb2F0IHN2Z2Fy
ID0gcGh5c1dpZHRoIC8gcGh5c0hlaWdodDsKIAogICAgIGlmIChhbGlnbigpID09IFNWR19QUkVT
RVJWRUFTUEVDVFJBVElPX05PTkUpIHsKLSAgICAgICAgdGVtcC0+c2NhbGVOb25Vbmlmb3JtKHBo
eXNXaWR0aCAvIGxvZ2ljV2lkdGgsIHBoeXNIZWlnaHQgLyBsb2dpY0hlaWdodCk7Ci0gICAgICAg
IHRlbXAtPnRyYW5zbGF0ZSgtbG9naWNYLCAtbG9naWNZKTsKKyAgICAgICAgdGVtcC5zY2FsZShw
aHlzV2lkdGggLyBsb2dpY1dpZHRoLCBwaHlzSGVpZ2h0IC8gbG9naWNIZWlnaHQpOworICAgICAg
ICB0ZW1wLnRyYW5zbGF0ZSgtbG9naWNYLCAtbG9naWNZKTsKICAgICB9IGVsc2UgaWYgKHZwYXIg
PCBzdmdhciAmJiAobWVldE9yU2xpY2UoKSA9PSBTVkdfTUVFVE9SU0xJQ0VfTUVFVCkgfHwgdnBh
ciA+PSBzdmdhciAmJiAobWVldE9yU2xpY2UoKSA9PSBTVkdfTUVFVE9SU0xJQ0VfU0xJQ0UpKSB7
Ci0gICAgICAgIHRlbXAtPnNjYWxlKHBoeXNIZWlnaHQgLyBsb2dpY0hlaWdodCk7CisgICAgICAg
IHRlbXAuc2NhbGUocGh5c0hlaWdodCAvIGxvZ2ljSGVpZ2h0LCBwaHlzSGVpZ2h0IC8gbG9naWNI
ZWlnaHQpOwogCiAgICAgICAgIGlmIChhbGlnbigpID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElP
X1hNSU5ZTUlOIHx8IGFsaWduKCkgPT0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNSUQg
fHwgYWxpZ24oKSA9PSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1BWCkKLSAgICAgICAg
ICAgIHRlbXAtPnRyYW5zbGF0ZSgtbG9naWNYLCAtbG9naWNZKTsKKyAgICAgICAgICAgIHRlbXAu
dHJhbnNsYXRlKC1sb2dpY1gsIC1sb2dpY1kpOwogICAgICAgICBlbHNlIGlmIChhbGlnbigpID09
IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlOIHx8IGFsaWduKCkgPT0gU1ZHX1BSRVNF
UlZFQVNQRUNUUkFUSU9fWE1JRFlNSUQgfHwgYWxpZ24oKSA9PSBTVkdfUFJFU0VSVkVBU1BFQ1RS
QVRJT19YTUlEWU1BWCkKLSAgICAgICAgICAgIHRlbXAtPnRyYW5zbGF0ZSgtbG9naWNYIC0gKGxv
Z2ljV2lkdGggLSBwaHlzV2lkdGggKiBsb2dpY0hlaWdodCAvIHBoeXNIZWlnaHQpIC8gMiwgLWxv
Z2ljWSk7CisgICAgICAgICAgICB0ZW1wLnRyYW5zbGF0ZSgtbG9naWNYIC0gKGxvZ2ljV2lkdGgg
LSBwaHlzV2lkdGggKiBsb2dpY0hlaWdodCAvIHBoeXNIZWlnaHQpIC8gMiwgLWxvZ2ljWSk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRlbXAtPnRyYW5zbGF0ZSgtbG9naWNYIC0gKGxvZ2lj
V2lkdGggLSBwaHlzV2lkdGggKiBsb2dpY0hlaWdodCAvIHBoeXNIZWlnaHQpLCAtbG9naWNZKTsK
KyAgICAgICAgICAgIHRlbXAudHJhbnNsYXRlKC1sb2dpY1ggLSAobG9naWNXaWR0aCAtIHBoeXNX
aWR0aCAqIGxvZ2ljSGVpZ2h0IC8gcGh5c0hlaWdodCksIC1sb2dpY1kpOwogICAgIH0gZWxzZSB7
Ci0gICAgICAgIHRlbXAtPnNjYWxlKHBoeXNXaWR0aCAvIGxvZ2ljV2lkdGgpOworICAgICAgICB0
ZW1wLnNjYWxlKHBoeXNXaWR0aCAvIGxvZ2ljV2lkdGgsIHBoeXNXaWR0aCAvIGxvZ2ljV2lkdGgp
OwogCiAgICAgICAgIGlmIChhbGlnbigpID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5Z
TUlOIHx8IGFsaWduKCkgPT0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNSU4gfHwgYWxp
Z24oKSA9PSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JTikKLSAgICAgICAgICAgIHRl
bXAtPnRyYW5zbGF0ZSgtbG9naWNYLCAtbG9naWNZKTsKKyAgICAgICAgICAgIHRlbXAudHJhbnNs
YXRlKC1sb2dpY1gsIC1sb2dpY1kpOwogICAgICAgICBlbHNlIGlmIChhbGlnbigpID09IFNWR19Q
UkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUlEIHx8IGFsaWduKCkgPT0gU1ZHX1BSRVNFUlZFQVNQ
RUNUUkFUSU9fWE1JRFlNSUQgfHwgYWxpZ24oKSA9PSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19Y
TUFYWU1JRCkKLSAgICAgICAgICAgIHRlbXAtPnRyYW5zbGF0ZSgtbG9naWNYLCAtbG9naWNZIC0g
KGxvZ2ljSGVpZ2h0IC0gcGh5c0hlaWdodCAqIGxvZ2ljV2lkdGggLyBwaHlzV2lkdGgpIC8gMik7
CisgICAgICAgICAgICB0ZW1wLnRyYW5zbGF0ZSgtbG9naWNYLCAtbG9naWNZIC0gKGxvZ2ljSGVp
Z2h0IC0gcGh5c0hlaWdodCAqIGxvZ2ljV2lkdGggLyBwaHlzV2lkdGgpIC8gMik7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHRlbXAtPnRyYW5zbGF0ZSgtbG9naWNYLCAtbG9naWNZIC0gKGxv
Z2ljSGVpZ2h0IC0gcGh5c0hlaWdodCAqIGxvZ2ljV2lkdGggLyBwaHlzV2lkdGgpKTsKKyAgICAg
ICAgICAgIHRlbXAudHJhbnNsYXRlKC1sb2dpY1gsIC1sb2dpY1kgLSAobG9naWNIZWlnaHQgLSBw
aHlzSGVpZ2h0ICogbG9naWNXaWR0aCAvIHBoeXNXaWR0aCkpOwogICAgIH0KIAogICAgIHJldHVy
biB0ZW1wOwpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8u
aAkocmV2aXNpb24gMTgxNjMpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgIGNsYXNzIFN0cmluZzsKLSAgICBjbGFzcyBTVkdNYXRyaXg7CisgICAgY2xh
c3MgQWZmaW5lVHJhbnNmb3JtOwogICAgIGNsYXNzIFNWR1N0eWxlZEVsZW1lbnQ7CiAKICAgICBj
bGFzcyBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvIDogcHVibGljIFNoYXJlZDxTVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvPiB7IApAQCAtNjQsMTAgKzY0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdm9pZCBzZXRNZWV0T3JTbGljZSh1bnNpZ25lZCBzaG9ydCk7CiAgICAgICAgIHVuc2ln
bmVkIHNob3J0IG1lZXRPclNsaWNlKCkgY29uc3Q7CiAgICAgICAgIAotICAgICAgICBTVkdNYXRy
aXgqIGdldENUTShmbG9hdCBsb2dpY1gsIGZsb2F0IGxvZ2ljWSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmxvYXQgbG9naWNXaWR0aCwgZmxvYXQgbG9naWNIZWlnaHQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsb2F0IHBoeXNYLCBmbG9hdCBwaHlzWSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxvYXQgcGh5c1dpZHRoLCBmbG9hdCBwaHlzSGVpZ2h0KTsKKyAgICAgICAg
QWZmaW5lVHJhbnNmb3JtIGdldENUTShmbG9hdCBsb2dpY1gsIGZsb2F0IGxvZ2ljWSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBsb2dpY1dpZHRoLCBmbG9hdCBsb2dpY0hl
aWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBwaHlzWCwgZmxvYXQg
cGh5c1ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgcGh5c1dpZHRoLCBm
bG9hdCBwaHlzSGVpZ2h0KTsKIAogICAgICAgICAvLyBIZWxwZXIKICAgICAgICAgdm9pZCBwYXJz
ZVByZXNlcnZlQXNwZWN0UmF0aW8oY29uc3QgU3RyaW5nJik7CkluZGV4OiBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MTYzKQor
KysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIlNWR1BhaW50U2VydmVyUmFkaWFs
R3JhZGllbnQuaCIKICNpbmNsdWRlICJTVkdIZWxwZXIuaCIKICNpbmNsdWRlICJTVkdMZW5ndGgu
aCIKLSNpbmNsdWRlICJTVkdNYXRyaXguaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1
ZGUgIlNWR1N0b3BFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtLmgiCkBAIC05Nyw3
ICs5Niw3IEBAIHZvaWQgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpidWlsZEdyYWQKICAgICBS
ZWZQdHI8U1ZHUGFpbnRTZXJ2ZXJSYWRpYWxHcmFkaWVudD4gZ3JhZCA9IFdURjo6c3RhdGljX3Bv
aW50ZXJfY2FzdDxTVkdQYWludFNlcnZlclJhZGlhbEdyYWRpZW50PihfZ3JhZCk7CiAgICAgQWZm
aW5lVHJhbnNmb3JtIG1hdDsKICAgICBpZiAoZ3JhZGllbnRUcmFuc2Zvcm0oKS0+bnVtYmVyT2ZJ
dGVtcygpID4gMCkKLSAgICAgICAgbWF0ID0gZ3JhZGllbnRUcmFuc2Zvcm0oKS0+Y29uc29saWRh
dGUoKS0+bWF0cml4KCktPm1hdHJpeCgpOworICAgICAgICBtYXQgPSBncmFkaWVudFRyYW5zZm9y
bSgpLT5jb25zb2xpZGF0ZSgpLT5tYXRyaXgoKTsKIAogICAgIERlcHJlY2F0ZWRTdHJpbmcgcmVm
ID0gaHJlZigpLmRlcHJlY2F0ZWRTdHJpbmcoKTsKICAgICBSZWZQdHI8U1ZHUGFpbnRTZXJ2ZXI+
IHBzZXJ2ZXIgPSBnZXRQYWludFNlcnZlckJ5SWQoZG9jdW1lbnQoKSwgcmVmLm1pZCgxKSk7Cklu
ZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkocmV2aXNpb24gMTgxNjMpCisrKyBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMs
NyArMzMsNyBAQAogI2luY2x1ZGUgIlJlbmRlclNWR0NvbnRhaW5lci5oIgogI2luY2x1ZGUgIlNW
R0FuZ2xlLmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCi0jaW5jbHVkZSAiU1ZHTWF0cml4Lmgi
CisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNp
bmNsdWRlICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3Jt
LmgiCkBAIC0xMDgsOSArMTA4LDkgQEAgRmxvYXRSZWN0IFNWR1NWR0VsZW1lbnQ6OnZpZXdwb3J0
KCkgY29ucwogICAgIGRvdWJsZSBfeSA9IHkoKS0+dmFsdWUoKTsKICAgICBkb3VibGUgdyA9IHdp
ZHRoKCktPnZhbHVlKCk7CiAgICAgZG91YmxlIGggPSBoZWlnaHQoKS0+dmFsdWUoKTsKLSAgICBS
ZWZQdHI8U1ZHTWF0cml4PiB2aWV3Qm94ID0gdmlld0JveFRvVmlld1RyYW5zZm9ybSh3LCBoKTsK
LSAgICB2aWV3Qm94LT5tYXRyaXgoKS5tYXAoX3gsIF95LCAmX3gsICZfeSk7Ci0gICAgdmlld0Jv
eC0+bWF0cml4KCkubWFwKHcsIGgsICZ3LCAmaCk7CisgICAgQWZmaW5lVHJhbnNmb3JtIHZpZXdC
b3ggPSB2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKHcsIGgpOworICAgIHZpZXdCb3gubWFwKF94LCBf
eSwgJl94LCAmX3kpOworICAgIHZpZXdCb3gubWFwKHcsIGgsICZ3LCAmaCk7CiAgICAgcmV0dXJu
IEZsb2F0UmVjdChfeCwgX3ksIHcsIGgpOwogfQogCkBAIC0yNzEsOSArMjcxLDkgQEAgdm9pZCBT
VkdTVkdFbGVtZW50OjpkZXNlbGVjdEFsbCgpCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBtZSAo
c2VlIGJ1ZyAxMTI3NSkKIH0KIAotZmxvYXQgU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHTnVtYmVy
KCkKK2RvdWJsZSBTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdOdW1iZXIoKQogewotICAgIHJldHVy
biAwOworICAgIHJldHVybiAwLjA7CiB9CiAKIFNWR0xlbmd0aCogU1ZHU1ZHRWxlbWVudDo6Y3Jl
YXRlU1ZHTGVuZ3RoKCkKQEAgLTI5MSw5ICsyOTEsOSBAQCBGbG9hdFBvaW50IFNWR1NWR0VsZW1l
bnQ6OmNyZWF0ZVNWR1BvaW50CiAgICAgcmV0dXJuIEZsb2F0UG9pbnQoKTsKIH0KIAotU1ZHTWF0
cml4KiBTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdNYXRyaXgoKQorQWZmaW5lVHJhbnNmb3JtIFNW
R1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR01hdHJpeCgpCiB7Ci0gICAgcmV0dXJuIG5ldyBTVkdNYXRy
aXgoKTsKKyAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7CiB9CiAKIEZsb2F0UmVjdCBTVkdT
VkdFbGVtZW50OjpjcmVhdGVTVkdSZWN0KCkKQEAgLTMwNiwzOCArMzA2LDM0IEBAIFNWR1RyYW5z
Zm9ybSogU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHVHIKICAgICByZXR1cm4gbmV3IFNWR1RyYW5z
Zm9ybSgpOwogfQogCi1TVkdUcmFuc2Zvcm0qIFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR1RyYW5z
Zm9ybUZyb21NYXRyaXgoU1ZHTWF0cml4KiBtYXRyaXgpCitTVkdUcmFuc2Zvcm0qIFNWR1NWR0Vs
ZW1lbnQ6OmNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgoY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBtYXRyaXgpCiB7ICAgIAogICAgIFNWR1RyYW5zZm9ybSogb2JqID0gU1ZHU1ZHRWxlbWVudDo6
Y3JlYXRlU1ZHVHJhbnNmb3JtKCk7CiAgICAgb2JqLT5zZXRNYXRyaXgobWF0cml4KTsKICAgICBy
ZXR1cm4gb2JqOwogfQogCi1TVkdNYXRyaXgqIFNWR1NWR0VsZW1lbnQ6OmdldENUTSgpIGNvbnN0
CitBZmZpbmVUcmFuc2Zvcm0gU1ZHU1ZHRWxlbWVudDo6Z2V0Q1RNKCkgY29uc3QKIHsKLSAgICBT
VkdNYXRyaXgqIG1hdCA9IGNyZWF0ZVNWR01hdHJpeCgpOwotICAgIGlmIChtYXQpIHsKLSAgICAg
ICAgbWF0LT50cmFuc2xhdGUoeCgpLT52YWx1ZSgpLCB5KCktPnZhbHVlKCkpOwotCi0gICAgICAg
IGlmIChhdHRyaWJ1dGVzKCktPmdldE5hbWVkSXRlbShTVkdOYW1lczo6dmlld0JveEF0dHIpKSB7
Ci0gICAgICAgICAgICBSZWZQdHI8U1ZHTWF0cml4PiB2aWV3Qm94ID0gdmlld0JveFRvVmlld1Ry
YW5zZm9ybSh3aWR0aCgpLT52YWx1ZSgpLCBoZWlnaHQoKS0+dmFsdWUoKSk7Ci0gICAgICAgICAg
ICBtYXQtPm11bHRpcGx5KHZpZXdCb3guZ2V0KCkpOwotICAgICAgICB9CisgICAgQWZmaW5lVHJh
bnNmb3JtIG1hdDsKKyAgICBtYXQudHJhbnNsYXRlKHgoKS0+dmFsdWUoKSwgeSgpLT52YWx1ZSgp
KTsKKworICAgIGlmIChhdHRyaWJ1dGVzKCktPmdldE5hbWVkSXRlbShTVkdOYW1lczo6dmlld0Jv
eEF0dHIpKSB7CisgICAgICAgIEFmZmluZVRyYW5zZm9ybSB2aWV3Qm94ID0gdmlld0JveFRvVmll
d1RyYW5zZm9ybSh3aWR0aCgpLT52YWx1ZSgpLCBoZWlnaHQoKS0+dmFsdWUoKSk7CisgICAgICAg
IG1hdCA9IHZpZXdCb3ggKiBtYXQ7CiAgICAgfQogCiAgICAgcmV0dXJuIG1hdDsKIH0KIAotU1ZH
TWF0cml4KiBTVkdTVkdFbGVtZW50OjpnZXRTY3JlZW5DVE0oKSBjb25zdAorQWZmaW5lVHJhbnNm
b3JtIFNWR1NWR0VsZW1lbnQ6OmdldFNjcmVlbkNUTSgpIGNvbnN0CiB7Ci0gICAgU1ZHTWF0cml4
KiBtYXQgPSBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50OjpnZXRTY3JlZW5DVE0oKTsKLSAgICBp
ZiAobWF0KSB7Ci0gICAgICAgIG1hdC0+dHJhbnNsYXRlKHgoKS0+dmFsdWUoKSwgeSgpLT52YWx1
ZSgpKTsKLQotICAgICAgICBpZiAoYXR0cmlidXRlcygpLT5nZXROYW1lZEl0ZW0oU1ZHTmFtZXM6
OnZpZXdCb3hBdHRyKSkgewotICAgICAgICAgICAgUmVmUHRyPFNWR01hdHJpeD4gdmlld0JveCA9
IHZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0od2lkdGgoKS0+dmFsdWUoKSwgaGVpZ2h0KCktPnZhbHVl
KCkpOwotICAgICAgICAgICAgbWF0LT5tdWx0aXBseSh2aWV3Qm94LmdldCgpKTsKLSAgICAgICAg
fQorICAgIEFmZmluZVRyYW5zZm9ybSBtYXQgPSBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50Ojpn
ZXRTY3JlZW5DVE0oKTsKKyAgICBtYXQudHJhbnNsYXRlKHgoKS0+dmFsdWUoKSwgeSgpLT52YWx1
ZSgpKTsKKworICAgIGlmIChhdHRyaWJ1dGVzKCktPmdldE5hbWVkSXRlbShTVkdOYW1lczo6dmll
d0JveEF0dHIpKSB7CisgICAgICAgIEFmZmluZVRyYW5zZm9ybSB2aWV3Qm94ID0gdmlld0JveFRv
Vmlld1RyYW5zZm9ybSh3aWR0aCgpLT52YWx1ZSgpLCBoZWlnaHQoKS0+dmFsdWUoKSk7CisgICAg
ICAgIG1hdCA9IHZpZXdCb3ggKiBtYXQ7CiAgICAgfQogCiAgICAgcmV0dXJuIG1hdDsKSW5kZXg6
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmgJKHJldmlzaW9uIDE4MTYzKQorKysgV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlCiB7CiAgICAgY2xhc3MgU1ZHQW5nbGU7CiAgICAgY2xhc3MgU1ZH
TGVuZ3RoOwotICAgIGNsYXNzIFNWR01hdHJpeDsKICAgICBjbGFzcyBTVkdUcmFuc2Zvcm07CiAg
ICAgY2xhc3MgU1ZHTGVuZ3RoOwogICAgIGNsYXNzIFRpbWVTY2hlZHVsZXI7CkBAIC0xMDQsMjAg
KzEwMywyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBib29sIGNoZWNrRW5jbG9zdXJl
KFNWR0VsZW1lbnQqLCBjb25zdCBGbG9hdFJlY3QmKTsKICAgICAgICAgdm9pZCBkZXNlbGVjdEFs
bCgpOwogCi0gICAgICAgIHN0YXRpYyBmbG9hdCBjcmVhdGVTVkdOdW1iZXIoKTsKKyAgICAgICAg
c3RhdGljIGRvdWJsZSBjcmVhdGVTVkdOdW1iZXIoKTsKICAgICAgICAgc3RhdGljIFNWR0xlbmd0
aCogY3JlYXRlU1ZHTGVuZ3RoKCk7CiAgICAgICAgIHN0YXRpYyBTVkdBbmdsZSogY3JlYXRlU1ZH
QW5nbGUoKTsKICAgICAgICAgc3RhdGljIEZsb2F0UG9pbnQgY3JlYXRlU1ZHUG9pbnQoKTsKLSAg
ICAgICAgc3RhdGljIFNWR01hdHJpeCogY3JlYXRlU1ZHTWF0cml4KCk7CisgICAgICAgIHN0YXRp
YyBBZmZpbmVUcmFuc2Zvcm0gY3JlYXRlU1ZHTWF0cml4KCk7CiAgICAgICAgIHN0YXRpYyBGbG9h
dFJlY3QgY3JlYXRlU1ZHUmVjdCgpOwogICAgICAgICBzdGF0aWMgU1ZHVHJhbnNmb3JtKiBjcmVh
dGVTVkdUcmFuc2Zvcm0oKTsKLSAgICAgICAgc3RhdGljIFNWR1RyYW5zZm9ybSogY3JlYXRlU1ZH
VHJhbnNmb3JtRnJvbU1hdHJpeChTVkdNYXRyaXgqKTsKKyAgICAgICAgc3RhdGljIFNWR1RyYW5z
Zm9ybSogY3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
KTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0
cmlidXRlKik7CiAKICAgICAgICAgLy8gJ3ZpcnR1YWwgU1ZHTG9jYXRhYmxlJyBmdW5jdGlvbnMK
LSAgICAgICAgdmlydHVhbCBTVkdNYXRyaXgqIGdldENUTSgpIGNvbnN0OwotICAgICAgICB2aXJ0
dWFsIFNWR01hdHJpeCogZ2V0U2NyZWVuQ1RNKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgQWZm
aW5lVHJhbnNmb3JtIGdldENUTSgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIEFmZmluZVRyYW5z
Zm9ybSBnZXRTY3JlZW5DVE0oKSBjb25zdDsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVy
ZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6OnJl
bmRlcmVySXNOZWVkZWQoc3R5bGUpOyB9CiAgICAgICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBj
cmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CkluZGV4OiBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAkocmV2aXNpb24gMTgxNjMpCisrKyBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyAr
MzMsNiBAQAogI2luY2x1ZGUgIlJlbmRlclBhdGguaCIKICNpbmNsdWRlICJTVkdFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiU1ZHSGVscGVyLmgiCi0jaW5jbHVkZSAiU1ZHTWF0cml4LmgiCiAjaW5jbHVk
ZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlNW
R1NWR0VsZW1lbnQuaCIKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxlZExvY2F0YWJs
ZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxlZExv
Y2F0YWJsZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODE2MykKKysrIFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsy
OCw3IEBACiAKICNpbmNsdWRlICJSZW5kZXJQYXRoLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5o
IgotI2luY2x1ZGUgIlNWR01hdHJpeC5oIgorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgog
I2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTgs
MTIgKzU4LDEyIEBAIEZsb2F0UmVjdCBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50OjpnZXQKICAg
ICByZXR1cm4gU1ZHTG9jYXRhYmxlOjpnZXRCQm94KHRoaXMpOwogfQogCi1TVkdNYXRyaXgqIFNW
R1N0eWxlZExvY2F0YWJsZUVsZW1lbnQ6OmdldENUTSgpIGNvbnN0CitBZmZpbmVUcmFuc2Zvcm0g
U1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6Z2V0Q1RNKCkgY29uc3QKIHsKICAgICByZXR1cm4g
U1ZHTG9jYXRhYmxlOjpnZXRDVE0odGhpcyk7CiB9CiAKLVNWR01hdHJpeCogU1ZHU3R5bGVkTG9j
YXRhYmxlRWxlbWVudDo6Z2V0U2NyZWVuQ1RNKCkgY29uc3QKK0FmZmluZVRyYW5zZm9ybSBTVkdT
dHlsZWRMb2NhdGFibGVFbGVtZW50OjpnZXRTY3JlZW5DVE0oKSBjb25zdAogewogICAgIHJldHVy
biBTVkdMb2NhdGFibGU6OmdldFNjcmVlbkNUTSh0aGlzKTsKIH0KSW5kZXg6IFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50LmgJKHJldmlzaW9uIDE4MTYzKQor
KysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNs
YXNzIFNWR01hdHJpeDsKICAgICBjbGFzcyBTVkdFbGVtZW50OwogCiAgICAgY2xhc3MgU1ZHU3R5
bGVkTG9jYXRhYmxlRWxlbWVudCA6IHB1YmxpYyBTVkdTdHlsZWRFbGVtZW50LCB2aXJ0dWFsIHB1
YmxpYyBTVkdMb2NhdGFibGUgewpAQCAtNDQsOCArNDMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZpcnR1YWwgU1ZHRWxlbWVudCogZmFydGhlc3RWaWV3cG9ydEVsZW1lbnQoKSBj
b25zdDsKIAogICAgICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBnZXRCQm94KCkgY29uc3Q7Ci0gICAg
ICAgIHZpcnR1YWwgU1ZHTWF0cml4KiBnZXRDVE0oKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBT
VkdNYXRyaXgqIGdldFNjcmVlbkNUTSgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIEFmZmluZVRy
YW5zZm9ybSBnZXRDVE0oKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0g
Z2V0U2NyZWVuQ1RNKCkgY29uc3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVF
bGVtZW50LmNwcAkocmV2aXNpb24gMTgxNjMpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcg
QEAKICNpbmNsdWRlICJSZW5kZXJQYXRoLmgiCiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJTVkdIZWxwZXIuaCIKLSNpbmNsdWRlICJTVkdNYXRyaXguaCIKKyNpbmNsdWRlICJB
ZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJTVkdTdHlsZWRFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgogCkBAIC01MCwxNyArNTAsMTcgQEAgU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQ6On5TVkdTdHlsZQogCiBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCwgU1ZHVHJhbnNmb3JtTGlzdCosIFRy
YW5zZm9ybUxpc3QsIHRyYW5zZm9ybUxpc3QsIFRyYW5zZm9ybSwgdHJhbnNmb3JtLCBTVkdOYW1l
czo6dHJhbnNmb3JtQXR0ci5sb2NhbE5hbWUoKSwgbV90cmFuc2Zvcm0uZ2V0KCkpCiAKLVNWR01h
dHJpeCogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmxvY2FsTWF0cml4KCkgY29uc3QK
K0FmZmluZVRyYW5zZm9ybSBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6bG9jYWxNYXRy
aXgoKSBjb25zdAogewotICAgIHJldHVybiBsYXp5X2NyZWF0ZTxTVkdNYXRyaXg+KG1fbG9jYWxN
YXRyaXgpOworICAgIHJldHVybiBtX2xvY2FsTWF0cml4OwogfQogCi1TVkdNYXRyaXgqIFNWR1N0
eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpnZXRDVE0oKSBjb25zdAorQWZmaW5lVHJhbnNmb3Jt
IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpnZXRDVE0oKSBjb25zdAogewogICAgIHJl
dHVybiBTVkdUcmFuc2Zvcm1hYmxlOjpnZXRDVE0odGhpcyk7CiB9CiAKLVNWR01hdHJpeCogU1ZH
U3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmdldFNjcmVlbkNUTSgpIGNvbnN0CitBZmZpbmVU
cmFuc2Zvcm0gU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmdldFNjcmVlbkNUTSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIFNWR1RyYW5zZm9ybWFibGU6OmdldFNjcmVlbkNUTSh0aGlzKTsK
IH0KQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6
dXBkYQogICAgIGlmKGxvY2FsVHJhbnNmb3JtKSB7CiAgICAgICAgIG1fbG9jYWxNYXRyaXggPSBs
b2NhbFRyYW5zZm9ybS0+bWF0cml4KCk7CiAgICAgICAgIGlmIChyZW5kZXJlcigpKSB7Ci0gICAg
ICAgICAgICByZW5kZXJlcigpLT5zZXRMb2NhbFRyYW5zZm9ybShtX2xvY2FsTWF0cml4LT5tYXRy
aXgoKSk7CisgICAgICAgICAgICByZW5kZXJlcigpLT5zZXRMb2NhbFRyYW5zZm9ybShtX2xvY2Fs
TWF0cml4KTsKICAgICAgICAgICAgIHJlbmRlcmVyKCktPnNldE5lZWRzTGF5b3V0KHRydWUpOwog
ICAgICAgICB9CiAgICAgfQpAQCAtMTEzLDggKzExMyw4IEBAIHZvaWQgU1ZHU3R5bGVkVHJhbnNm
b3JtYWJsZUVsZW1lbnQ6OmF0dGEKIHsKICAgICBTVkdTdHlsZWRFbGVtZW50OjphdHRhY2goKTsK
IAotICAgIGlmIChyZW5kZXJlcigpICYmIG1fbG9jYWxNYXRyaXgpCi0gICAgICAgIHJlbmRlcmVy
KCktPnNldExvY2FsVHJhbnNmb3JtKG1fbG9jYWxNYXRyaXgtPm1hdHJpeCgpKTsKKyAgICBpZiAo
cmVuZGVyZXIoKSAmJiAhbV9sb2NhbE1hdHJpeC5pc0lkZW50aXR5KCkpCisgICAgICAgIHJlbmRl
cmVyKCktPnNldExvY2FsVHJhbnNmb3JtKG1fbG9jYWxNYXRyaXgpOwogfQogCiB9CkluZGV4OiBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmgJ
KHJldmlzaW9uIDE4MTYzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgY2xhc3MgTm9kZTsKICAgICBjbGFzcyBTdHJpbmdJbXBsOwogICAgIGNs
YXNzIFNWR1RyYW5zZm9ybUxpc3Q7Ci0gICAgY2xhc3MgU1ZHTWF0cml4OwotICAgIGNsYXNzIFNW
R1RyYW5zZm9ybUxpc3Q7CiAKICAgICBjbGFzcyBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVu
dCA6IHB1YmxpYyBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50LCBwdWJsaWMgU1ZHVHJhbnNmb3Jt
YWJsZSB7CiAgICAgcHVibGljOgpAQCAtNDUsMTEgKzQzLDExIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdmlydHVhbCBib29sIGlzU3R5bGVkVHJhbnNmb3JtYWJsZSgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KIAogICAgICAgICAvLyAnU1ZHVHJhbnNmb3JtYWJsZScgZnVuY3Rpb25z
Ci0gICAgICAgIHZpcnR1YWwgU1ZHTWF0cml4KiBsb2NhbE1hdHJpeCgpIGNvbnN0OworICAgICAg
ICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBsb2NhbE1hdHJpeCgpIGNvbnN0OwogCiAgICAgICAg
IC8vIERlcml2ZWQgZnJvbTogJ1NWR0xvY2F0YWJsZScKLSAgICAgICAgdmlydHVhbCBTVkdNYXRy
aXgqIGdldENUTSgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIFNWR01hdHJpeCogZ2V0U2NyZWVu
Q1RNKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGdldENUTSgpIGNv
bnN0OworICAgICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBnZXRTY3JlZW5DVE0oKSBjb25z
dDsKICAgICAgICAgdmlydHVhbCBTVkdFbGVtZW50KiBuZWFyZXN0Vmlld3BvcnRFbGVtZW50KCkg
Y29uc3Q7CiAgICAgICAgIHZpcnR1YWwgU1ZHRWxlbWVudCogZmFydGhlc3RWaWV3cG9ydEVsZW1l
bnQoKSBjb25zdDsKIApAQCAtNjIsNyArNjAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgbXV0
YWJsZSBSZWZQdHI8U1ZHTWF0cml4PiBtX2xvY2FsTWF0cml4OworICAgICAgICBtdXRhYmxlIEFm
ZmluZVRyYW5zZm9ybSBtX2xvY2FsTWF0cml4OwogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9E
RUNMQVJBVElPTlMoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQsIFNWR1RyYW5zZm9ybUxp
c3QqLCBSZWZQdHI8U1ZHVHJhbnNmb3JtTGlzdD4sIFRyYW5zZm9ybSwgdHJhbnNmb3JtKQogICAg
IH07CiAKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE4
MTYzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNCwxMCArMjQsMTAgQEAKICNpZmRlZiBTVkdfU1VQUE9SVAogI2luY2x1ZGUgIlNW
R1RleHRFbGVtZW50LmgiCiAKKyNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRl
ICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdUZXh0LmgiCiAjaW5jbHVkZSAiU1ZH
TGVuZ3RoTGlzdC5oIgotI2luY2x1ZGUgIlNWR01hdHJpeC5oIgogI2luY2x1ZGUgIlNWR1JlbmRl
clN0eWxlLmgiCiAjaW5jbHVkZSAiU1ZHVFNwYW5FbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHVHJh
bnNmb3JtTGlzdC5oIgpAQCAtNDcsOSArNDcsOSBAQCBTVkdUZXh0RWxlbWVudDo6flNWR1RleHRF
bGVtZW50KCkKIAogQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHVGV4dEVsZW1lbnQs
IFNWR1RyYW5zZm9ybUxpc3QqLCBUcmFuc2Zvcm1MaXN0LCB0cmFuc2Zvcm1MaXN0LCBUcmFuc2Zv
cm0sIHRyYW5zZm9ybSwgU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIubG9jYWxOYW1lKCksIG1fdHJh
bnNmb3JtLmdldCgpKQogCi1TVkdNYXRyaXgqIFNWR1RleHRFbGVtZW50Ojpsb2NhbE1hdHJpeCgp
IGNvbnN0CitBZmZpbmVUcmFuc2Zvcm0gU1ZHVGV4dEVsZW1lbnQ6OmxvY2FsTWF0cml4KCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbGF6eV9jcmVhdGU8U1ZHTWF0cml4PihtX2xvY2FsTWF0cml4KTsK
KyAgICByZXR1cm4gbV9sb2NhbE1hdHJpeDsKIH0KIAogdm9pZCBTVkdUZXh0RWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQpAQCAtNzUsNyArNzUsNyBA
QCB2b2lkIFNWR1RleHRFbGVtZW50Ojp1cGRhdGVMb2NhbFRyYW5zZm9yCiAgICAgaWYgKGxvY2Fs
VHJhbnNmb3JtKSB7CiAgICAgICAgIG1fbG9jYWxNYXRyaXggPSBsb2NhbFRyYW5zZm9ybS0+bWF0
cml4KCk7CiAgICAgICAgIGlmIChyZW5kZXJlcigpKSB7Ci0gICAgICAgICAgICByZW5kZXJlcigp
LT5zZXRMb2NhbFRyYW5zZm9ybShtX2xvY2FsTWF0cml4LT5tYXRyaXgoKSk7CisgICAgICAgICAg
ICByZW5kZXJlcigpLT5zZXRMb2NhbFRyYW5zZm9ybShtX2xvY2FsTWF0cml4KTsKICAgICAgICAg
ICAgIHJlbmRlcmVyKCktPnNldE5lZWRzTGF5b3V0KHRydWUpOwogICAgICAgICB9CiAgICAgfQpA
QCAtODUsOCArODUsOCBAQCB2b2lkIFNWR1RleHRFbGVtZW50OjphdHRhY2goKQogewogICAgIFNW
R1N0eWxlZEVsZW1lbnQ6OmF0dGFjaCgpOwogCi0gICAgaWYgKHJlbmRlcmVyKCkgJiYgbV9sb2Nh
bE1hdHJpeCkKLSAgICAgICAgcmVuZGVyZXIoKS0+c2V0TG9jYWxUcmFuc2Zvcm0obV9sb2NhbE1h
dHJpeC0+bWF0cml4KCkpOworICAgIGlmIChyZW5kZXJlcigpICYmICFtX2xvY2FsTWF0cml4Lmlz
SWRlbnRpdHkoKSkKKyAgICAgICAgcmVuZGVyZXIoKS0+c2V0TG9jYWxUcmFuc2Zvcm0obV9sb2Nh
bE1hdHJpeCk7CiB9CiAKIFNWR0VsZW1lbnQqIFNWR1RleHRFbGVtZW50OjpuZWFyZXN0Vmlld3Bv
cnRFbGVtZW50KCkgY29uc3QKQEAgLTEwNCwxMiArMTA0LDEyIEBAIEZsb2F0UmVjdCBTVkdUZXh0
RWxlbWVudDo6Z2V0QkJveCgpIGNvbnMKICAgICByZXR1cm4gU1ZHVHJhbnNmb3JtYWJsZTo6Z2V0
QkJveCh0aGlzKTsKIH0KIAotU1ZHTWF0cml4KiBTVkdUZXh0RWxlbWVudDo6Z2V0U2NyZWVuQ1RN
KCkgY29uc3QKK0FmZmluZVRyYW5zZm9ybSBTVkdUZXh0RWxlbWVudDo6Z2V0U2NyZWVuQ1RNKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gU1ZHVHJhbnNmb3JtYWJsZTo6Z2V0U2NyZWVuQ1RNKHRoaXMp
OwogfQogCi1TVkdNYXRyaXgqIFNWR1RleHRFbGVtZW50OjpnZXRDVE0oKSBjb25zdAorQWZmaW5l
VHJhbnNmb3JtIFNWR1RleHRFbGVtZW50OjpnZXRDVE0oKSBjb25zdAogewogICAgIHJldHVybiBT
VkdUcmFuc2Zvcm1hYmxlOjpnZXRDVE0odGhpcyk7CiB9CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdUZXh0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1Rl
eHRFbGVtZW50LmgJKHJldmlzaW9uIDE4MTYzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVGV4
dEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTQgKzQzLDE0IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgU1ZHRWxlbWVudCogZmFydGhlc3RWaWV3cG9ydEVsZW1l
bnQoKSBjb25zdDsKIAogICAgICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBnZXRCQm94KCkgY29uc3Q7
Ci0gICAgICAgIHZpcnR1YWwgU1ZHTWF0cml4KiBnZXRDVE0oKSBjb25zdDsKLSAgICAgICAgdmly
dHVhbCBTVkdNYXRyaXgqIGdldFNjcmVlbkNUTSgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIEFm
ZmluZVRyYW5zZm9ybSBnZXRDVE0oKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBBZmZpbmVUcmFu
c2Zvcm0gZ2V0U2NyZWVuQ1RNKCkgY29uc3Q7CiAKICAgICAgICAgdmlydHVhbCBib29sIHJlbmRl
cmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKSB7IHJldHVybiBTdHlsZWRFbGVtZW50Ojpy
ZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsgfQogICAgICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCog
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgICAgICB2aXJ0
dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKikgY29uc3Q7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKLSAgICAgICAgdmlydHVhbCBTVkdNYXRyaXgqIGxvY2Fs
TWF0cml4KCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGxvY2FsTWF0
cml4KCkgY29uc3Q7CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTG9jYWxU
cmFuc2Zvcm0oU1ZHVHJhbnNmb3JtTGlzdCopOwogICAgICAgICAKQEAgLTU4LDcgKzU4LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250
ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIG11dGFibGUgUmVmUHRyPFNWR01hdHJpeD4gbV9sb2NhbE1hdHJpeDsKKyAgICAgICAgbXV0
YWJsZSBBZmZpbmVUcmFuc2Zvcm0gbV9sb2NhbE1hdHJpeDsKICAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfREVDTEFSQVRJT05TKFNWR1RleHRFbGVtZW50LCBTVkdUcmFuc2Zvcm1MaXN0KiwgUmVm
UHRyPFNWR1RyYW5zZm9ybUxpc3Q+LCBUcmFuc2Zvcm0sIHRyYW5zZm9ybSkKICAgICB9OwogCklu
ZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm0uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybS5jcHAJKHJldmlzaW9uIDE4MTYzKQorKysgV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyAr
MjMsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lmZGVmIFNWR19TVVBQT1JUCiAKLSNpbmNs
dWRlICJTVkdNYXRyaXguaCIKKyNpbmNsdWRlICJTVkdBbmdsZS5oIgogI2luY2x1ZGUgIlNWR1Ry
YW5zZm9ybS5oIgogI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKIApAQCAtMzEsNyArMzEsNiBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogU1ZHVHJhbnNmb3JtOjpTVkdUcmFuc2Zvcm0o
KQogICAgIDogU2hhcmVkPFNWR1RyYW5zZm9ybT4oKQotICAgICwgbV9tYXRyaXgoU1ZHU1ZHRWxl
bWVudDo6Y3JlYXRlU1ZHTWF0cml4KCkpCiB7CiAgICAgbV90eXBlID0gU1ZHX1RSQU5TRk9STV9V
TktOT1dOOwogICAgIG1fYW5nbGUgPSAwOwpAQCAtNDYsOSArNDUsOSBAQCB1bnNpZ25lZCBzaG9y
dCBTVkdUcmFuc2Zvcm06OnR5cGUoKSBjb25zCiAgICAgcmV0dXJuIG1fdHlwZTsKIH0KIAotU1ZH
TWF0cml4ICpTVkdUcmFuc2Zvcm06Om1hdHJpeCgpIGNvbnN0CitBZmZpbmVUcmFuc2Zvcm0gU1ZH
VHJhbnNmb3JtOjptYXRyaXgoKSBjb25zdAogewotICAgIHJldHVybiBtX21hdHJpeC5nZXQoKTsK
KyAgICByZXR1cm4gbV9tYXRyaXg7CiB9CiAKIGRvdWJsZSBTVkdUcmFuc2Zvcm06OmFuZ2xlKCkg
Y29uc3QKQEAgLTU2LDExICs1NSwxMSBAQCBkb3VibGUgU1ZHVHJhbnNmb3JtOjphbmdsZSgpIGNv
bnN0CiAgICAgcmV0dXJuIG1fYW5nbGU7CiB9CiAKLXZvaWQgU1ZHVHJhbnNmb3JtOjpzZXRNYXRy
aXgoU1ZHTWF0cml4ICptYXRyaXgpCit2b2lkIFNWR1RyYW5zZm9ybTo6c2V0TWF0cml4KGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgbWF0cml4KQogewogICAgIG1fdHlwZSA9IFNWR19UUkFOU0ZPUk1f
TUFUUklYOwogICAgIG1fYW5nbGUgPSAwOwotICAgIAorCiAgICAgbV9tYXRyaXggPSBtYXRyaXg7
CiB9CiAKQEAgLTY4LDQ4ICs2Nyw0OCBAQCB2b2lkIFNWR1RyYW5zZm9ybTo6c2V0VHJhbnNsYXRl
KGRvdWJsZSB0CiB7CiAgICAgbV90eXBlID0gU1ZHX1RSQU5TRk9STV9UUkFOU0xBVEU7CiAgICAg
bV9hbmdsZSA9IDA7Ci0gICAgCi0gICAgbV9tYXRyaXgtPnJlc2V0KCk7Ci0gICAgbV9tYXRyaXgt
PnRyYW5zbGF0ZSh0eCwgdHkpOworCisgICAgbV9tYXRyaXgucmVzZXQoKTsKKyAgICBtX21hdHJp
eC50cmFuc2xhdGUodHgsIHR5KTsKIH0KIAogdm9pZCBTVkdUcmFuc2Zvcm06OnNldFNjYWxlKGRv
dWJsZSBzeCwgZG91YmxlIHN5KQogewogICAgIG1fdHlwZSA9IFNWR19UUkFOU0ZPUk1fU0NBTEU7
CiAgICAgbV9hbmdsZSA9IDA7Ci0gICAgCi0gICAgbV9tYXRyaXgtPnJlc2V0KCk7Ci0gICAgbV9t
YXRyaXgtPnNjYWxlTm9uVW5pZm9ybShzeCwgc3kpOworCisgICAgbV9tYXRyaXgucmVzZXQoKTsK
KyAgICBtX21hdHJpeC5zY2FsZShzeCwgc3kpOwogfQogCiB2b2lkIFNWR1RyYW5zZm9ybTo6c2V0
Um90YXRlKGRvdWJsZSBhbmdsZSwgZG91YmxlIGN4LCBkb3VibGUgY3kpCiB7CiAgICAgbV90eXBl
ID0gU1ZHX1RSQU5TRk9STV9ST1RBVEU7CiAgICAgbV9hbmdsZSA9IGFuZ2xlOwotICAgIAorCiAg
ICAgLy8gVE9ETzogdG9TdHJpbmcoKSBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggY2FuIHNob3cgY3gs
IGN5IChuZWVkIHRvIGJlIHN0b3JlZD8pCi0gICAgbV9tYXRyaXgtPnJlc2V0KCk7Ci0gICAgbV9t
YXRyaXgtPnRyYW5zbGF0ZShjeCwgY3kpOwotICAgIG1fbWF0cml4LT5yb3RhdGUoYW5nbGUpOwot
ICAgIG1fbWF0cml4LT50cmFuc2xhdGUoLWN4LCAtY3kpOworICAgIG1fbWF0cml4LnJlc2V0KCk7
CisgICAgbV9tYXRyaXgudHJhbnNsYXRlKGN4LCBjeSk7CisgICAgbV9tYXRyaXgucm90YXRlKGFu
Z2xlKTsKKyAgICBtX21hdHJpeC50cmFuc2xhdGUoLWN4LCAtY3kpOwogfQogCiB2b2lkIFNWR1Ry
YW5zZm9ybTo6c2V0U2tld1goZG91YmxlIGFuZ2xlKQogewogICAgIG1fdHlwZSA9IFNWR19UUkFO
U0ZPUk1fU0tFV1g7CiAgICAgbV9hbmdsZSA9IGFuZ2xlOwotICAgIAotICAgIG1fbWF0cml4LT5y
ZXNldCgpOwotICAgIG1fbWF0cml4LT5za2V3WChhbmdsZSk7CisKKyAgICBtX21hdHJpeC5yZXNl
dCgpOworICAgIG1fbWF0cml4LnNoZWFyKHRhbihTVkdBbmdsZTo6dG9yYWQoYW5nbGUpKSwgMC4w
Rik7CiB9CiAKIHZvaWQgU1ZHVHJhbnNmb3JtOjpzZXRTa2V3WShkb3VibGUgYW5nbGUpCiB7CiAg
ICAgbV90eXBlID0gU1ZHX1RSQU5TRk9STV9TS0VXWTsKICAgICBtX2FuZ2xlID0gYW5nbGU7Ci0g
ICAgCi0gICAgbV9tYXRyaXgtPnJlc2V0KCk7Ci0gICAgbV9tYXRyaXgtPnNrZXdZKGFuZ2xlKTsK
KworICAgIG1fbWF0cml4LnJlc2V0KCk7CisgICAgbV9tYXRyaXguc2hlYXIoMC4wRiwgdGFuKFNW
R0FuZ2xlOjp0b3JhZChhbmdsZSkpKTsKIH0KIAogLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHVHJhbnNmb3JtLmgJKHJldmlzaW9uIDE4MTYzKQorKysgV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHVHJhbnNmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDEyICsyNCwxMiBAQAogI2Rl
ZmluZSBLU1ZHX1NWR1RyYW5zZm9ybUltcGxfSAogI2lmZGVmIFNWR19TVVBQT1JUCiAKKyNpbmNs
dWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJTaGFyZWQuaCIKICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIFNWR01hdHJp
eDsKICAgICBjbGFzcyBTVkdUcmFuc2Zvcm0gOiBwdWJsaWMgU2hhcmVkPFNWR1RyYW5zZm9ybT4g
ewogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBTVkdUcmFuc2Zvcm1UeXBlIHsKQEAgLTQ3LDEx
ICs0NywxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAgICAKICAgICAgICAg
dW5zaWduZWQgc2hvcnQgdHlwZSgpIGNvbnN0OwogCi0gICAgICAgIFNWR01hdHJpeCogbWF0cml4
KCkgY29uc3Q7CisgICAgICAgIEFmZmluZVRyYW5zZm9ybSBtYXRyaXgoKSBjb25zdDsKICAgICAK
ICAgICAgICAgZG91YmxlIGFuZ2xlKCkgY29uc3Q7CiAKLSAgICAgICAgdm9pZCBzZXRNYXRyaXgo
U1ZHTWF0cml4Kik7CisgICAgICAgIHZvaWQgc2V0TWF0cml4KGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYpOwogICAgICAgICB2b2lkIHNldFRyYW5zbGF0ZShkb3VibGUgdHgsIGRvdWJsZSB0eSk7CiAg
ICAgICAgIHZvaWQgc2V0U2NhbGUoZG91YmxlIHN4LCBkb3VibGUgc3kpOwogICAgICAgICB2b2lk
IHNldFJvdGF0ZShkb3VibGUgYW5nbGUsIGRvdWJsZSBjeCwgZG91YmxlIGN5KTsKQEAgLTYxLDcg
KzYxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAgICAgICAgIGRvdWJs
ZSBtX2FuZ2xlOwogICAgICAgICB1bnNpZ25lZCBzaG9ydCBtX3R5cGU7Ci0gICAgICAgIFJlZlB0
cjxTVkdNYXRyaXg+IG1fbWF0cml4OworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gbV9tYXRyaXg7
CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHVHJhbnNmb3JtTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHVHJhbnNmb3JtTGlzdC5jcHAJKHJldmlzaW9uIDE4MTYzKQorKysgV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHVHJhbnNmb3JtTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAK
IAogI2lmZGVmIFNWR19TVVBQT1JUCiAKLSNpbmNsdWRlICJTVkdNYXRyaXguaCIKKyNpbmNsdWRl
ICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm0uaCIKICNpbmNsdWRl
ICJTVkdTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgpAQCAtNDAs
NyArNDAsNyBAQCBTVkdUcmFuc2Zvcm1MaXN0Ojp+U1ZHVHJhbnNmb3JtTGlzdCgpCiB7CiB9CiAK
LVJlZlB0cjxTVkdUcmFuc2Zvcm0+IFNWR1RyYW5zZm9ybUxpc3Q6OmNyZWF0ZVNWR1RyYW5zZm9y
bUZyb21NYXRyaXgoU1ZHTWF0cml4KiBtYXRyaXgpIGNvbnN0CitSZWZQdHI8U1ZHVHJhbnNmb3Jt
PiBTVkdUcmFuc2Zvcm1MaXN0OjpjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4KGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgbWF0cml4KSBjb25zdAogewogICAgIHJldHVybiBTVkdTVkdFbGVtZW50
OjpjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4KG1hdHJpeCk7CiB9CkBAIC02MiwxMSArNjIs
MTEgQEAgU1ZHVHJhbnNmb3JtKiBTVkdUcmFuc2Zvcm1MaXN0Ojpjb25jYXRlbgogICAgICAgICBy
ZXR1cm4gMDsKICAgICAgICAgCiAgICAgU1ZHVHJhbnNmb3JtKiBvYmogPSBTVkdTVkdFbGVtZW50
OjpjcmVhdGVTVkdUcmFuc2Zvcm0oKTsKLSAgICBTVkdNYXRyaXgqIG1hdHJpeCA9IFNWR1NWR0Vs
ZW1lbnQ6OmNyZWF0ZVNWR01hdHJpeCgpOworICAgIEFmZmluZVRyYW5zZm9ybSBtYXRyaXg7CiAK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBmb3IodW5zaWduZWQgaW50IGkgPSAwOyBp
IDwgbGVuZ3RoOyBpKyspCi0gICAgICAgIG1hdHJpeC0+bXVsdGlwbHkoZ2V0SXRlbShpLCBlYykt
Pm1hdHJpeCgpKTsKKyAgICAgICAgbWF0cml4ID0gZ2V0SXRlbShpLCBlYyktPm1hdHJpeCgpICog
bWF0cml4OwogCiAgICAgb2JqLT5zZXRNYXRyaXgobWF0cml4KTsKICAgICByZXR1cm4gb2JqOwpJ
bmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtTGlzdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuaAkocmV2aXNpb24gMTgxNjMpCisr
KyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTVkdUcmFuc2Zvcm1M
aXN0KCk7CiAgICAgICAgIHZpcnR1YWwgflNWR1RyYW5zZm9ybUxpc3QoKTsKIAotICAgICAgICBS
ZWZQdHI8U1ZHVHJhbnNmb3JtPiBjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4KFNWR01hdHJp
eCopIGNvbnN0OworICAgICAgICBSZWZQdHI8U1ZHVHJhbnNmb3JtPiBjcmVhdGVTVkdUcmFuc2Zv
cm1Gcm9tTWF0cml4KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIGNvbnN0OwogICAgICAgICBSZWZQ
dHI8U1ZHVHJhbnNmb3JtPiBjb25zb2xpZGF0ZSgpOwogCiAgICAgICAgIC8vIEludGVybmFsIHVz
ZSBvbmx5CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcAkocmV2aXNp
b24gMTgxNjMpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogCiAjaW5jbHVkZSAiUmVndWxhckV4cHJlc3Np
b24uaCIKICNpbmNsdWRlICJTVkdIZWxwZXIuaCIKLSNpbmNsdWRlICJTVkdNYXRyaXguaCIKKyNp
bmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1
ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0LmgiCkBA
IC00MSwxOCArNDEsMTYgQEAgU1ZHVHJhbnNmb3JtYWJsZTo6flNWR1RyYW5zZm9ybWFibGUoKQog
ewogfQogCi1TVkdNYXRyaXgqIFNWR1RyYW5zZm9ybWFibGU6OmdldENUTShjb25zdCBTVkdFbGVt
ZW50KiBlbGVtZW50KSBjb25zdAorQWZmaW5lVHJhbnNmb3JtIFNWR1RyYW5zZm9ybWFibGU6Omdl
dENUTShjb25zdCBTVkdFbGVtZW50KiBlbGVtZW50KSBjb25zdAogewotICAgIFNWR01hdHJpeCog
Y3RtID0gU1ZHTG9jYXRhYmxlOjpnZXRDVE0oZWxlbWVudCk7Ci0gICAgY3RtLT5tdWx0aXBseShs
b2NhbE1hdHJpeCgpKTsKLSAgICByZXR1cm4gY3RtOworICAgIEFmZmluZVRyYW5zZm9ybSBjdG0g
PSBTVkdMb2NhdGFibGU6OmdldENUTShlbGVtZW50KTsKKyAgICByZXR1cm4gbG9jYWxNYXRyaXgo
KSAqIGN0bTsKIH0KIAotU1ZHTWF0cml4KiBTVkdUcmFuc2Zvcm1hYmxlOjpnZXRTY3JlZW5DVE0o
Y29uc3QgU1ZHRWxlbWVudCogZWxlbWVudCkgY29uc3QKK0FmZmluZVRyYW5zZm9ybSBTVkdUcmFu
c2Zvcm1hYmxlOjpnZXRTY3JlZW5DVE0oY29uc3QgU1ZHRWxlbWVudCogZWxlbWVudCkgY29uc3QK
IHsKLSAgICBTVkdNYXRyaXgqIGN0bSA9IFNWR0xvY2F0YWJsZTo6Z2V0U2NyZWVuQ1RNKGVsZW1l
bnQpOwotICAgIGN0bS0+bXVsdGlwbHkobG9jYWxNYXRyaXgoKSk7Ci0gICAgcmV0dXJuIGN0bTsK
KyAgICBBZmZpbmVUcmFuc2Zvcm0gY3RtID0gU1ZHTG9jYXRhYmxlOjpnZXRTY3JlZW5DVE0oZWxl
bWVudCk7CisgICAgcmV0dXJuIGxvY2FsTWF0cml4KCkgKiBjdG07CiB9CiAKIGJvb2wgU1ZHVHJh
bnNmb3JtYWJsZTo6cGFyc2VUcmFuc2Zvcm1BdHRyaWJ1dGUoU1ZHVHJhbnNmb3JtTGlzdCogbGlz
dCwgY29uc3QgQXRvbWljU3RyaW5nJiB0cmFuc2Zvcm0pCkBAIC0xMTIsMTIgKzExMCwxMiBAQCBi
b29sIFNWR1RyYW5zZm9ybWFibGU6OnBhcnNlVHJhbnNmb3JtQXR0CiAgICAgICAgIGVsc2UgaWYg
KHN1YnRyYW5zZm9ybVswXSA9PSAic2tld3kiICYmIG5wYXJhbXMgPT0gMSkKICAgICAgICAgICAg
IHQtPnNldFNrZXdZKHBhcmFtc1swXS50b0RvdWJsZSgpKTsKICAgICAgICAgZWxzZSBpZiAoc3Vi
dHJhbnNmb3JtWzBdID09ICJtYXRyaXgiICYmIG5wYXJhbXMgPT0gNikgewotICAgICAgICAgICAg
U1ZHTWF0cml4KiByZXQgPSBuZXcgU1ZHTWF0cml4KHBhcmFtc1swXS50b0RvdWJsZSgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1sxXS50b0RvdWJs
ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1sy
XS50b0RvdWJsZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBhcmFtc1szXS50b0RvdWJsZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcmFtc1s0XS50b0RvdWJsZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcmFtc1s1XS50b0RvdWJsZSgpKTsKKyAgICAgICAgICAgIEFm
ZmluZVRyYW5zZm9ybSByZXQocGFyYW1zWzBdLnRvRG91YmxlKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBhcmFtc1sxXS50b0RvdWJsZSgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXJhbXNbMl0udG9Eb3VibGUoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyYW1zWzNdLnRvRG91YmxlKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcmFtc1s0XS50b0RvdWJsZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYXJhbXNbNV0udG9Eb3VibGUoKSk7CiAgICAgICAgICAgICB0LT5zZXRNYXRyaXgo
cmV0KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGRlbGV0ZSB0OwpJbmRleDogV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybWFibGUuaAkocmV2aXNpb24gMTgxNjMpCisrKyBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKICAgICBjbGFzcyBBdG9taWNTdHJpbmc7
Ci0gICAgY2xhc3MgU1ZHTWF0cml4OworICAgIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKICAgICBj
bGFzcyBTVkdUcmFuc2Zvcm1MaXN0OwogCiAgICAgY2xhc3MgU1ZHVHJhbnNmb3JtYWJsZSA6IHZp
cnR1YWwgcHVibGljIFNWR0xvY2F0YWJsZSB7CkBAIC0zOCwxMyArMzgsMTMgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIH5TVkdUcmFuc2Zvcm1hYmxlKCk7CiAKICAgICAg
ICAgLy8gJ1NWR1RyYW5zZm9ybWFibGUnIGZ1bmN0aW9ucwotICAgICAgICB2aXJ0dWFsIFNWR01h
dHJpeCogbG9jYWxNYXRyaXgoKSBjb25zdCA9IDA7CisgICAgICAgIHZpcnR1YWwgQWZmaW5lVHJh
bnNmb3JtIGxvY2FsTWF0cml4KCkgY29uc3QgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVMb2NhbFRyYW5zZm9ybShTVkdUcmFuc2Zvcm1MaXN0KikgPSAwOwogCiAgICAgICAgIHN0
YXRpYyBib29sIHBhcnNlVHJhbnNmb3JtQXR0cmlidXRlKFNWR1RyYW5zZm9ybUxpc3QqLCBjb25z
dCBBdG9taWNTdHJpbmcmIHRyYW5zZm9ybSk7Ci0gICAgICAgIFNWR01hdHJpeCogZ2V0Q1RNKGNv
bnN0IFNWR0VsZW1lbnQqKSBjb25zdDsKLSAgICAgICAgU1ZHTWF0cml4KiBnZXRTY3JlZW5DVE0o
Y29uc3QgU1ZHRWxlbWVudCopIGNvbnN0OworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gZ2V0Q1RN
KGNvbnN0IFNWR0VsZW1lbnQqKSBjb25zdDsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGdldFNj
cmVlbkNUTShjb25zdCBTVkdFbGVtZW50KikgY29uc3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BZmZpbmVUcmFuc2Zv
cm0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQWZmaW5lVHJh
bnNmb3JtLmNwcAkocmV2aXNpb24gMTgxNjMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0FmZmluZVRyYW5zZm9ybS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDExICsyOSw1NSBAQAog
I2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKIAorI2luY2x1ZGUg
PG1hdGguaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjb25zdCBkb3VibGUgZGVnMnJhZCA9
IDAuMDE3NDUzMjkyNTE5OTQzMjk1NzY5OyAvLyBwaS8xODAKKwogYm9vbCBBZmZpbmVUcmFuc2Zv
cm06OmlzSW52ZXJ0aWJsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGRldCgpICE9IDAuMDsKIH0K
IAorQWZmaW5lVHJhbnNmb3JtJiBBZmZpbmVUcmFuc2Zvcm06Om11bHRpcGx5KGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgb3RoZXIpCit7CisgICAgcmV0dXJuICgqdGhpcykgKj0gb3RoZXI7Cit9CisK
K0FmZmluZVRyYW5zZm9ybSYgQWZmaW5lVHJhbnNmb3JtOjpzY2FsZShkb3VibGUgcykKK3sKKyAg
ICByZXR1cm4gc2NhbGUocywgcyk7Cit9CisKK0FmZmluZVRyYW5zZm9ybSYgQWZmaW5lVHJhbnNm
b3JtOjpzY2FsZU5vblVuaWZvcm0oZG91YmxlIHN4LCBkb3VibGUgc3kpCit7CisgICAgcmV0dXJu
IHNjYWxlKHN4LCBzeSk7Cit9CisKK0FmZmluZVRyYW5zZm9ybSYgQWZmaW5lVHJhbnNmb3JtOjpy
b3RhdGVGcm9tVmVjdG9yKGRvdWJsZSB4LCBkb3VibGUgeSkKK3sKKyAgICByZXR1cm4gcm90YXRl
KGF0YW4yKHksIHgpIC8gZGVnMnJhZCk7Cit9CisKK0FmZmluZVRyYW5zZm9ybSYgQWZmaW5lVHJh
bnNmb3JtOjpmbGlwWCgpCit7CisgICAgcmV0dXJuIHNjYWxlKC0xLjBmLCAxLjBmKTsKK30KKwor
QWZmaW5lVHJhbnNmb3JtJiBBZmZpbmVUcmFuc2Zvcm06OmZsaXBZKCkKK3sKKyAgICByZXR1cm4g
c2NhbGUoMS4wZiwgLTEuMGYpOworfQorCitBZmZpbmVUcmFuc2Zvcm0mIEFmZmluZVRyYW5zZm9y
bTo6c2tld1goZG91YmxlIGFuZ2xlKQoreworICAgIHJldHVybiBzaGVhcih0YW4oYW5nbGUgKiBk
ZWcycmFkKSwgMC4wZik7Cit9CisKK0FmZmluZVRyYW5zZm9ybSYgQWZmaW5lVHJhbnNmb3JtOjpz
a2V3WShkb3VibGUgYW5nbGUpCit7CisgICAgcmV0dXJuIHNoZWFyKDAuMGYsIHRhbihhbmdsZSAq
IGRlZzJyYWQpKTsKK30KKwogfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BZmZp
bmVUcmFuc2Zvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Fm
ZmluZVRyYW5zZm9ybS5oCShyZXZpc2lvbiAxODE2MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQWZmaW5lVHJhbnNmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE1ICszNCwxNyBA
QAogI2luY2x1ZGUgImNhaXJvLmgiCiAjZW5kaWYKIAordHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29k
ZTsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgSW50UmVjdDsKLSAgICBjbGFz
cyBGbG9hdFJlY3Q7CitjbGFzcyBJbnRSZWN0OworY2xhc3MgRmxvYXRSZWN0OwogCiBjbGFzcyBB
ZmZpbmVUcmFuc2Zvcm0gewogcHVibGljOgogICAgIEFmZmluZVRyYW5zZm9ybSgpOwotICAgIEFm
ZmluZVRyYW5zZm9ybShkb3VibGUgYSwgZG91YmxlIGIsIGRvdWJsZSBjLCBkb3VibGUgZCwgZG91
YmxlIHR4LCBkb3VibGUgdHkpOworICAgIEFmZmluZVRyYW5zZm9ybShkb3VibGUgYSwgZG91Ymxl
IGIsIGRvdWJsZSBjLCBkb3VibGUgZCwgZG91YmxlIGUsIGRvdWJsZSBmKTsKICNpZiBQTEFURk9S
TShDRykKICAgICBBZmZpbmVUcmFuc2Zvcm0oQ0dBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtKTsK
ICNlbGlmIFBMQVRGT1JNKFFUKQpAQCAtNTEsMzAgKzUzLDQ5IEBAIHB1YmxpYzoKICAgICBBZmZp
bmVUcmFuc2Zvcm0oY29uc3QgY2Fpcm9fbWF0cml4X3QgJm1hdHJpeCk7CiAjZW5kaWYKIAotICAg
IHZvaWQgc2V0TWF0cml4KGRvdWJsZSBhLCBkb3VibGUgYiwgZG91YmxlIGMsIGRvdWJsZSBkLCBk
b3VibGUgdHgsIGRvdWJsZSB0eSk7CisgICAgdm9pZCBzZXRNYXRyaXgoZG91YmxlIGEsIGRvdWJs
ZSBiLCBkb3VibGUgYywgZG91YmxlIGQsIGRvdWJsZSBlLCBkb3VibGUgZik7CiAgICAgdm9pZCBt
YXAoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgKngyLCBkb3VibGUgKnkyKSBjb25zdDsKICAg
ICBJbnRSZWN0IG1hcFJlY3QoY29uc3QgSW50UmVjdCYpIGNvbnN0OwogICAgIEZsb2F0UmVjdCBt
YXBSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OwogICAgIAogICAgIGJvb2wgaXNJZGVudGl0
eSgpIGNvbnN0OwogICAgIAotICAgIGRvdWJsZSBtMTEoKSBjb25zdDsKLSAgICBkb3VibGUgbTEy
KCkgY29uc3Q7Ci0gICAgZG91YmxlIG0yMSgpIGNvbnN0OwotICAgIGRvdWJsZSBtMjIoKSBjb25z
dDsKLSAgICBkb3VibGUgZHgoKSBjb25zdDsKLSAgICBkb3VibGUgZHkoKSBjb25zdDsKKyAgICBk
b3VibGUgYSgpIGNvbnN0OworICAgIHZvaWQgc2V0QShkb3VibGUgYSk7CisKKyAgICBkb3VibGUg
YigpIGNvbnN0OworICAgIHZvaWQgc2V0Qihkb3VibGUgYik7CisKKyAgICBkb3VibGUgYygpIGNv
bnN0OworICAgIHZvaWQgc2V0Qyhkb3VibGUgYyk7CisKKyAgICBkb3VibGUgZCgpIGNvbnN0Owor
ICAgIHZvaWQgc2V0RChkb3VibGUgZCk7CisKKyAgICBkb3VibGUgZSgpIGNvbnN0OworICAgIHZv
aWQgc2V0RShkb3VibGUgZSk7CisKKyAgICBkb3VibGUgZigpIGNvbnN0OworICAgIHZvaWQgc2V0
Rihkb3VibGUgZik7CiAKICAgICB2b2lkIHJlc2V0KCk7Ci0gICAgCi0gICAgQWZmaW5lVHJhbnNm
b3JtICZzY2FsZShkb3VibGUgc3gsIGRvdWJsZSBzeSk7Ci0gICAgQWZmaW5lVHJhbnNmb3JtICZy
b3RhdGUoZG91YmxlIGQpOwotICAgIEFmZmluZVRyYW5zZm9ybSAmdHJhbnNsYXRlKGRvdWJsZSB0
eCwgZG91YmxlIHR5KTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gJnNoZWFyKGRvdWJsZSBzeCwgZG91
YmxlIHN5KTsKLSAgICAKKworICAgIEFmZmluZVRyYW5zZm9ybSYgbXVsdGlwbHkoY29uc3QgQWZm
aW5lVHJhbnNmb3JtJik7CisgICAgQWZmaW5lVHJhbnNmb3JtJiBzY2FsZShkb3VibGUpOyAKKyAg
ICBBZmZpbmVUcmFuc2Zvcm0mIHNjYWxlKGRvdWJsZSBzeCwgZG91YmxlIHN5KTsgCisgICAgQWZm
aW5lVHJhbnNmb3JtJiBzY2FsZU5vblVuaWZvcm0oZG91YmxlIHN4LCBkb3VibGUgc3kpOworICAg
IEFmZmluZVRyYW5zZm9ybSYgcm90YXRlKGRvdWJsZSBkKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0m
IHJvdGF0ZUZyb21WZWN0b3IoZG91YmxlIHgsIGRvdWJsZSB5KTsKKyAgICBBZmZpbmVUcmFuc2Zv
cm0mIHRyYW5zbGF0ZShkb3VibGUgdHgsIGRvdWJsZSB0eSk7CisgICAgQWZmaW5lVHJhbnNmb3Jt
JiBzaGVhcihkb3VibGUgc3gsIGRvdWJsZSBzeSk7CisgICAgQWZmaW5lVHJhbnNmb3JtJiBmbGlw
WCgpOworICAgIEFmZmluZVRyYW5zZm9ybSYgZmxpcFkoKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0m
IHNrZXdYKGRvdWJsZSBhbmdsZSk7CisgICAgQWZmaW5lVHJhbnNmb3JtJiBza2V3WShkb3VibGUg
YW5nbGUpOworIAogICAgIGRvdWJsZSBkZXQoKSBjb25zdDsKICAgICBib29sIGlzSW52ZXJ0aWJs
ZSgpIGNvbnN0OwotICAgIEFmZmluZVRyYW5zZm9ybSBpbnZlcnQoKSBjb25zdDsKKyAgICBBZmZp
bmVUcmFuc2Zvcm0gaW52ZXJzZSgpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oQ0cpCiAgICAgb3Bl
cmF0b3IgQ0dBZmZpbmVUcmFuc2Zvcm0oKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQWZmaW5lVHJhbnNmb3JtQ2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQWZmaW5lVHJhbnNmb3JtQ2Fpcm8uY3BwCShy
ZXZpc2lvbiAxODE2MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQWZmaW5l
VHJhbnNmb3JtQ2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsMzYgKzEzMyw2NyBAQCBi
b29sIEFmZmluZVRyYW5zZm9ybTo6aXNJZGVudGl0eSgpIGNvbnN0CiAgICAgICAgICAmJiAobV90
cmFuc2Zvcm0ueDAgPT0gMCkgJiYgKG1fdHJhbnNmb3JtLnkwID09IDApKTsKIH0KIAotZG91Ymxl
IEFmZmluZVRyYW5zZm9ybTo6bTExKCkgY29uc3QKK2RvdWJsZSBBZmZpbmVUcmFuc2Zvcm06OmEo
KSBjb25zdAogewogICAgIHJldHVybiBtX3RyYW5zZm9ybS54eDsKIH0KIAotZG91YmxlIEFmZmlu
ZVRyYW5zZm9ybTo6bTEyKCkgY29uc3QKK3ZvaWQgQWZmaW5lVHJhbnNmb3JtOjpzZXRBKGRvdWJs
ZSBhKQoreworICAgIGNhaXJvX21hdHJpeF9pbml0KCZtX3RyYW5zZm9ybSwgYSwgYigpLCBjKCks
IGQoKSwgZSgpLCBmKCkpOworfQorCitkb3VibGUgQWZmaW5lVHJhbnNmb3JtOjpiKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV90cmFuc2Zvcm0ueHk7CiB9CiAKLWRvdWJsZSBBZmZpbmVUcmFuc2Zv
cm06Om0yMSgpIGNvbnN0Cit2b2lkIEFmZmluZVRyYW5zZm9ybTo6c2V0Qihkb3VibGUgYikKK3sK
KyAgICBjYWlyb19tYXRyaXhfaW5pdCgmbV90cmFuc2Zvcm0sIGEoKSwgYiwgYygpLCBkKCksIGUo
KSwgZigpKTsKK30KKworZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6YygpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fdHJhbnNmb3JtLnl4OwogfQogCi1kb3VibGUgQWZmaW5lVHJhbnNmb3JtOjptMjIo
KSBjb25zdAordm9pZCBBZmZpbmVUcmFuc2Zvcm06OnNldEMoZG91YmxlIGMpCit7CisgICAgY2Fp
cm9fbWF0cml4X2luaXQoJm1fdHJhbnNmb3JtLCBhKCksIGIoKSwgYywgZCgpLCBlKCksIGYoKSk7
Cit9CisKK2RvdWJsZSBBZmZpbmVUcmFuc2Zvcm06OmQoKSBjb25zdAogewogICAgIHJldHVybiBt
X3RyYW5zZm9ybS55eTsKIH0KIAotZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6ZHgoKSBjb25zdAor
dm9pZCBBZmZpbmVUcmFuc2Zvcm06OnNldEQoZG91YmxlIGQpCit7CisgICAgY2Fpcm9fbWF0cml4
X2luaXQoJm1fdHJhbnNmb3JtLCBhKCksIGIoKSwgYygpLCBkLCBlKCksIGYoKSk7Cit9CisKK2Rv
dWJsZSBBZmZpbmVUcmFuc2Zvcm06OmUoKSBjb25zdAogewogICAgIHJldHVybiBtX3RyYW5zZm9y
bS54MDsKIH0KIAotZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6ZHkoKSBjb25zdAordm9pZCBBZmZp
bmVUcmFuc2Zvcm06OnNldEUoZG91YmxlIGUpCit7CisgICAgY2Fpcm9fbWF0cml4X2luaXQoJm1f
dHJhbnNmb3JtLCBhKCksIGIoKSwgYygpLCBkKCksIGUsIGYoKSk7Cit9CisKK2RvdWJsZSBBZmZp
bmVUcmFuc2Zvcm06OmYoKSBjb25zdAogewogICAgIHJldHVybiBtX3RyYW5zZm9ybS55MDsKIH0K
IAordm9pZCBBZmZpbmVUcmFuc2Zvcm06OnNldEYoZG91YmxlIGYpCit7CisgICAgY2Fpcm9fbWF0
cml4X2luaXQoJm1fdHJhbnNmb3JtLCBhKCksIGIoKSwgYygpLCBkKCksIGUoKSwgZik7Cit9CisK
Kwogdm9pZCBBZmZpbmVUcmFuc2Zvcm06OnJlc2V0KCkKIHsKICAgICBjYWlyb19tYXRyaXhfaW5p
dF9pZGVudGl0eSgmbV90cmFuc2Zvcm0pOwpAQCAtMjAzLDcgKzIzNCw3IEBAIGRvdWJsZSBBZmZp
bmVUcmFuc2Zvcm06OmRldCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdHJhbnNmb3JtLnh4ICogbV90
cmFuc2Zvcm0ueXkgLSBtX3RyYW5zZm9ybS54eSAqIG1fdHJhbnNmb3JtLnl4OwogfQogCi1BZmZp
bmVUcmFuc2Zvcm0gQWZmaW5lVHJhbnNmb3JtOjppbnZlcnQoKSBjb25zdAorQWZmaW5lVHJhbnNm
b3JtIEFmZmluZVRyYW5zZm9ybTo6aW52ZXJzZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFpc0ludmVy
dGlibGUoKSkgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpOwogCkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0FmZmluZVRyYW5zZm9ybUNHLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0FmZmluZVRyYW5zZm9ybUNHLmNwcAkocmV2aXNpb24g
MTgxNjMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0FmZmluZVRyYW5zZm9ybUNH
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsMzYgKzc3LDY2IEBAIGJvb2wgQWZmaW5lVHJhbnNm
b3JtOjppc0lkZW50aXR5KCkgY29uc3QKICAgICByZXR1cm4gQ0dBZmZpbmVUcmFuc2Zvcm1Jc0lk
ZW50aXR5KG1fdHJhbnNmb3JtKTsKIH0KIAotZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6bTExKCkg
Y29uc3QKK2RvdWJsZSBBZmZpbmVUcmFuc2Zvcm06OmEoKSBjb25zdAogewogICAgIHJldHVybiBt
X3RyYW5zZm9ybS5hOwogfQogCi1kb3VibGUgQWZmaW5lVHJhbnNmb3JtOjptMTIoKSBjb25zdAor
dm9pZCBBZmZpbmVUcmFuc2Zvcm06OnNldEEoZG91YmxlIGEpCit7CisgICAgbV90cmFuc2Zvcm0g
PSBDR0FmZmluZVRyYW5zZm9ybU1ha2UoYSwgYigpLCBjKCksIGQoKSwgZSgpLCBmKCkpOworfQor
Citkb3VibGUgQWZmaW5lVHJhbnNmb3JtOjpiKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90cmFu
c2Zvcm0uYjsKIH0KIAotZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6bTIxKCkgY29uc3QKK3ZvaWQg
QWZmaW5lVHJhbnNmb3JtOjpzZXRCKGRvdWJsZSBiKQoreworICAgIG1fdHJhbnNmb3JtID0gQ0dB
ZmZpbmVUcmFuc2Zvcm1NYWtlKGEoKSwgYiwgYygpLCBkKCksIGUoKSwgZigpKTsKK30KKworZG91
YmxlIEFmZmluZVRyYW5zZm9ybTo6YygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHJhbnNmb3Jt
LmM7CiB9CiAKLWRvdWJsZSBBZmZpbmVUcmFuc2Zvcm06Om0yMigpIGNvbnN0Cit2b2lkIEFmZmlu
ZVRyYW5zZm9ybTo6c2V0Qyhkb3VibGUgYykKK3sKKyAgICBtX3RyYW5zZm9ybSA9IENHQWZmaW5l
VHJhbnNmb3JtTWFrZShhKCksIGIoKSwgYywgZCgpLCBlKCksIGYoKSk7Cit9CisKK2RvdWJsZSBB
ZmZpbmVUcmFuc2Zvcm06OmQoKSBjb25zdAogewogICAgIHJldHVybiBtX3RyYW5zZm9ybS5kOwog
fQogCi1kb3VibGUgQWZmaW5lVHJhbnNmb3JtOjpkeCgpIGNvbnN0Cit2b2lkIEFmZmluZVRyYW5z
Zm9ybTo6c2V0RChkb3VibGUgZCkKK3sKKyAgICBtX3RyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNm
b3JtTWFrZShhKCksIGIoKSwgYygpLCBkLCBlKCksIGYoKSk7Cit9CisKK2RvdWJsZSBBZmZpbmVU
cmFuc2Zvcm06OmUoKSBjb25zdAogewogICAgIHJldHVybiBtX3RyYW5zZm9ybS50eDsKIH0KIAot
ZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6ZHkoKSBjb25zdAordm9pZCBBZmZpbmVUcmFuc2Zvcm06
OnNldEUoZG91YmxlIGUpCit7CisgICAgbV90cmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybU1h
a2UoYSgpLCBiKCksIGMoKSwgZCgpLCBlLCBmKCkpOworfQorCitkb3VibGUgQWZmaW5lVHJhbnNm
b3JtOjpmKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90cmFuc2Zvcm0udHk7CiB9CiAKK3ZvaWQg
QWZmaW5lVHJhbnNmb3JtOjpzZXRGKGRvdWJsZSBmKQoreworICAgIG1fdHJhbnNmb3JtID0gQ0dB
ZmZpbmVUcmFuc2Zvcm1NYWtlKGEoKSwgYigpLCBjKCksIGQoKSwgZSgpLCBmKTsKK30KKwogdm9p
ZCBBZmZpbmVUcmFuc2Zvcm06OnJlc2V0KCkKIHsKICAgICBtX3RyYW5zZm9ybSA9IENHQWZmaW5l
VHJhbnNmb3JtSWRlbnRpdHk7CkBAIC0xNDIsNyArMTcyLDcgQEAgZG91YmxlIEFmZmluZVRyYW5z
Zm9ybTo6ZGV0KCkgY29uc3QKICAgICByZXR1cm4gbV90cmFuc2Zvcm0uYSAqIG1fdHJhbnNmb3Jt
LmQgLSBtX3RyYW5zZm9ybS5iICogbV90cmFuc2Zvcm0uYzsKIH0KIAotQWZmaW5lVHJhbnNmb3Jt
IEFmZmluZVRyYW5zZm9ybTo6aW52ZXJ0KCkgY29uc3QKK0FmZmluZVRyYW5zZm9ybSBBZmZpbmVU
cmFuc2Zvcm06OmludmVyc2UoKSBjb25zdAogewogICAgIGlmIChpc0ludmVydGlibGUoKSkKICAg
ICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybShDR0FmZmluZVRyYW5zZm9ybUludmVydChtX3Ry
YW5zZm9ybSkpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9BZmZpbmVUcmFu
c2Zvcm1RdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9B
ZmZpbmVUcmFuc2Zvcm1RdC5jcHAJKHJldmlzaW9uIDE4MTYzKQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9BZmZpbmVUcmFuc2Zvcm1RdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcx
LDM2ICs3MSw2NiBAQCBib29sIEFmZmluZVRyYW5zZm9ybTo6aXNJZGVudGl0eSgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fdHJhbnNmb3JtLmlzSWRlbnRpdHkoKTsKIH0KIAotZG91YmxlIEFmZmluZVRy
YW5zZm9ybTo6bTExKCkgY29uc3QKK2RvdWJsZSBBZmZpbmVUcmFuc2Zvcm06OmEoKSBjb25zdAog
ewogICAgIHJldHVybiBtX3RyYW5zZm9ybS5tMTEoKTsKIH0KIAotZG91YmxlIEFmZmluZVRyYW5z
Zm9ybTo6bTEyKCkgY29uc3QKK3ZvaWQgQWZmaW5lVHJhbnNmb3JtOjpzZXRBKGRvdWJsZSBhKQor
eworICAgIG1fdHJhbnNmb3JtLnNldE1hdHJpeChhLCBiKCksIGMoKSwgZCgpLCBlKCksIGYoKSk7
Cit9CisKK2RvdWJsZSBBZmZpbmVUcmFuc2Zvcm06OmIoKSBjb25zdAogewogICAgIHJldHVybiBt
X3RyYW5zZm9ybS5tMTIoKTsKIH0KIAotZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6bTIxKCkgY29u
c3QKK3ZvaWQgQWZmaW5lVHJhbnNmb3JtOjpzZXRCKGRvdWJsZSBiKQoreworICAgIG1fdHJhbnNm
b3JtLnNldE1hdHJpeChhKCksIGIsIGMoKSwgZCgpLCBlKCksIGYoKSk7Cit9CisKK2RvdWJsZSBB
ZmZpbmVUcmFuc2Zvcm06OmMoKSBjb25zdAogewogICAgIHJldHVybiBtX3RyYW5zZm9ybS5tMjEo
KTsKIH0KIAotZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6bTIyKCkgY29uc3QKK3ZvaWQgQWZmaW5l
VHJhbnNmb3JtOjpzZXRDKGRvdWJsZSBjKQoreworICAgIG1fdHJhbnNmb3JtLnNldE1hdHJpeChh
KCksIGIoKSwgYywgZCgpLCBlKCksIGYoKSk7Cit9CisKK2RvdWJsZSBBZmZpbmVUcmFuc2Zvcm06
OmQoKSBjb25zdAogewogICAgIHJldHVybiBtX3RyYW5zZm9ybS5tMjIoKTsKIH0KIAotZG91Ymxl
IEFmZmluZVRyYW5zZm9ybTo6ZHgoKSBjb25zdAordm9pZCBBZmZpbmVUcmFuc2Zvcm06OnNldEQo
ZG91YmxlIGQpCit7CisgICAgbV90cmFuc2Zvcm0uc2V0TWF0cml4KGEoKSwgYigpLCBjKCksIGQs
IGUoKSwgZigpKTsKK30KKworZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6ZSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fdHJhbnNmb3JtLmR4KCk7CiB9CiAKLWRvdWJsZSBBZmZpbmVUcmFuc2Zvcm06
OmR5KCkgY29uc3QKK3ZvaWQgQWZmaW5lVHJhbnNmb3JtOjpzZXRFKGRvdWJsZSBlKQoreworICAg
IG1fdHJhbnNmb3JtLnNldE1hdHJpeChhKCksIGIoKSwgYygpLCBkKCksIGUsIGYoKSk7Cit9CisK
K2RvdWJsZSBBZmZpbmVUcmFuc2Zvcm06OmYoKSBjb25zdAogewogICAgIHJldHVybiBtX3RyYW5z
Zm9ybS5keSgpOwogfQogCit2b2lkIEFmZmluZVRyYW5zZm9ybTo6c2V0Rihkb3VibGUgZikKK3sK
KyAgICBtX3RyYW5zZm9ybS5zZXRNYXRyaXgoYSgpLCBiKCksIGMoKSwgZCgpLCBlKCksIGYpOwor
fQorCiB2b2lkIEFmZmluZVRyYW5zZm9ybTo6cmVzZXQoKQogewogICAgIG1fdHJhbnNmb3JtLnJl
c2V0KCk7CkBAIC0xMzUsNyArMTY1LDcgQEAgZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6ZGV0KCkg
Y29uc3QKICAgICByZXR1cm4gbV90cmFuc2Zvcm0uZGV0KCk7CiB9CiAKLUFmZmluZVRyYW5zZm9y
bSBBZmZpbmVUcmFuc2Zvcm06OmludmVydCgpIGNvbnN0CitBZmZpbmVUcmFuc2Zvcm0gQWZmaW5l
VHJhbnNmb3JtOjppbnZlcnNlKCkgY29uc3QKIHsKICAgICBpZighaXNJbnZlcnRpYmxlKCkpCiAg
ICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZvcmVpZ25PYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZvcmVpZ25PYmplY3QuY3BwCShyZXZpc2lvbiAxODE2MykKKysrIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZvcmVpZ25PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2
MCw3IEBAIHZvaWQgUmVuZGVyRm9yZWlnbk9iamVjdDo6cGFpbnQoUGFpbnRJbmYKICAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIob3BhY2l0eSk7CiAKICAg
ICBQYWludEluZm8gcGkocGFpbnRJbmZvKTsKLSAgICBwaS5yZWN0ID0gYWJzb2x1dGVUcmFuc2Zv
cm0oKS5pbnZlcnQoKS5tYXBSZWN0KHBhaW50SW5mby5yZWN0KTsKKyAgICBwaS5yZWN0ID0gYWJz
b2x1dGVUcmFuc2Zvcm0oKS5pbnZlcnNlKCkubWFwUmVjdChwYWludEluZm8ucmVjdCk7CiAgICAg
UmVuZGVyQmxvY2s6OnBhaW50KHBpLCAwLCAwKTsKIAogICAgIGlmIChvcGFjaXR5IDwgMS4wZikK
QEAgLTEwNyw3ICsxMDcsNyBAQCBib29sIFJlbmRlckZvcmVpZ25PYmplY3Q6Om5vZGVBdFBvaW50
KGNvCiAgICAgQWZmaW5lVHJhbnNmb3JtIHRvdGFsVHJhbnNmb3JtID0gYWJzb2x1dGVUcmFuc2Zv
cm0oKTsKICAgICB0b3RhbFRyYW5zZm9ybSAqPSB0cmFuc2xhdGlvbkZvckF0dHJpYnV0ZXMoKTsK
ICAgICBkb3VibGUgbG9jYWxYLCBsb2NhbFk7Ci0gICAgdG90YWxUcmFuc2Zvcm0uaW52ZXJ0KCku
bWFwKHgsIHksICZsb2NhbFgsICZsb2NhbFkpOworICAgIHRvdGFsVHJhbnNmb3JtLmludmVyc2Uo
KS5tYXAoeCwgeSwgJmxvY2FsWCwgJmxvY2FsWSk7CiAgICAgcmV0dXJuIFJlbmRlckJsb2NrOjpu
b2RlQXRQb2ludChyZXF1ZXN0LCByZXN1bHQsIHN0YXRpY19jYXN0PGludD4obG9jYWxYKSwgc3Rh
dGljX2Nhc3Q8aW50Pihsb2NhbFkpLCB0eCwgdHksIGhpdFRlc3RBY3Rpb24pOwogfQogCkluZGV4
OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJQYXRoLmNwcAkocmV2aXNpb24gMTgxNjMpCisrKyBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJQYXRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQCBG
bG9hdFBvaW50IFJlbmRlclBhdGg6Om1hcEFic29sdXRlUG9pbnRUCiAgICAgLy8gYWJzb2x1dGUg
dHJhbnNmb3JtPyAKICAgICBkb3VibGUgbG9jYWxYOwogICAgIGRvdWJsZSBsb2NhbFk7Ci0gICAg
YWJzb2x1dGVUcmFuc2Zvcm0oKS5pbnZlcnQoKS5tYXAocG9pbnQueCgpLCBwb2ludC55KCksICZs
b2NhbFgsICZsb2NhbFkpOworICAgIGFic29sdXRlVHJhbnNmb3JtKCkuaW52ZXJzZSgpLm1hcChw
b2ludC54KCksIHBvaW50LnkoKSwgJmxvY2FsWCwgJmxvY2FsWSk7CiAgICAgcmV0dXJuIEZsb2F0
UG9pbnQobG9jYWxYLCBsb2NhbFkpOwogfQogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTVkdJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZH
SW1hZ2UuY3BwCShyZXZpc2lvbiAxODE2MykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNW
R0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgUmVuZGVy
U1ZHSW1hZ2U6OnBhaW50KFBhaW50SW5mbyYgcGEKICAgICB9CiAKICAgICBQYWludEluZm8gcGko
cGFpbnRJbmZvKTsKLSAgICBwaS5yZWN0ID0gYWJzb2x1dGVUcmFuc2Zvcm0oKS5pbnZlcnQoKS5t
YXBSZWN0KHBpLnJlY3QpOworICAgIHBpLnJlY3QgPSBhYnNvbHV0ZVRyYW5zZm9ybSgpLmludmVy
c2UoKS5tYXBSZWN0KHBpLnJlY3QpOwogCiAgICAgaW50IHggPSAwLCB5ID0gMDsKICAgICBpZiAo
c2hvdWxkUGFpbnQocGksIHgsIHkpKSB7CkBAIC0xODgsNyArMTg4LDcgQEAgYm9vbCBSZW5kZXJT
VkdJbWFnZTo6bm9kZUF0UG9pbnQoY29uc3QgSAogICAgIEFmZmluZVRyYW5zZm9ybSB0b3RhbFRy
YW5zZm9ybSA9IGFic29sdXRlVHJhbnNmb3JtKCk7CiAgICAgdG90YWxUcmFuc2Zvcm0gKj0gdHJh
bnNsYXRpb25Gb3JBdHRyaWJ1dGVzKCk7CiAgICAgZG91YmxlIGxvY2FsWCwgbG9jYWxZOwotICAg
IHRvdGFsVHJhbnNmb3JtLmludmVydCgpLm1hcChfeCArIF90eCwgX3kgKyBfdHksICZsb2NhbFgs
ICZsb2NhbFkpOworICAgIHRvdGFsVHJhbnNmb3JtLmludmVyc2UoKS5tYXAoX3ggKyBfdHgsIF95
ICsgX3R5LCAmbG9jYWxYLCAmbG9jYWxZKTsKICAgICByZXR1cm4gUmVuZGVySW1hZ2U6Om5vZGVB
dFBvaW50KHJlcXVlc3QsIHJlc3VsdCwgKGludClsb2NhbFgsIChpbnQpbG9jYWxZLCAwLCAwLCBo
aXRUZXN0QWN0aW9uKTsKIH0KIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVGV4
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dC5jcHAJ
KHJldmlzaW9uIDE4MTYzKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBSZW5kZXJTVkdUZXh0Ojpjb21w
dXRlQWJzb2x1dGVSZXBhaQogICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBsb2NhbFRy
YW5zZm9ybSgpOwogICAgIHIgPSB0cmFuc2Zvcm0ubWFwUmVjdChyKTsKICAgICBSZW5kZXJDb250
YWluZXI6OmNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0KHIsIGYpOwotICAgIHIgPSB0cmFuc2Zv
cm0uaW52ZXJ0KCkubWFwUmVjdChyKTsKKyAgICByID0gdHJhbnNmb3JtLmludmVyc2UoKS5tYXBS
ZWN0KHIpOwogfQogCiBib29sIFJlbmRlclNWR1RleHQ6OnJlcXVpcmVzTGF5ZXIoKQpAQCAtMTAw
LDcgKzEwMCw3IEBAIGJvb2wgUmVuZGVyU1ZHVGV4dDo6bm9kZUF0UG9pbnQoY29uc3QgSGkKIHsK
ICAgICBBZmZpbmVUcmFuc2Zvcm0gdG90YWxUcmFuc2Zvcm0gPSBhYnNvbHV0ZVRyYW5zZm9ybSgp
OwogICAgIGRvdWJsZSBsb2NhbFgsIGxvY2FsWTsKLSAgICB0b3RhbFRyYW5zZm9ybS5pbnZlcnQo
KS5tYXAoX3gsIF95LCAmbG9jYWxYLCAmbG9jYWxZKTsKKyAgICB0b3RhbFRyYW5zZm9ybS5pbnZl
cnNlKCkubWFwKF94LCBfeSwgJmxvY2FsWCwgJmxvY2FsWSk7CiAgICAgcmV0dXJuIFJlbmRlckJs
b2NrOjpub2RlQXRQb2ludChyZXF1ZXN0LCByZXN1bHQsIChpbnQpbG9jYWxYLCAoaW50KWxvY2Fs
WSwgX3R4LCBfdHksIGhpdFRlc3RBY3Rpb24pOwogfQogCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9p
ZCBSZW5kZXJTVkdUZXh0OjphYnNvbHV0ZVJlY3RzKFZlY3Rvcgogdm9pZCBSZW5kZXJTVkdUZXh0
OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpCiB7ICAgCiAgICAg
UmVuZGVyT2JqZWN0OjpQYWludEluZm8gcGkocGFpbnRJbmZvKTsKLSAgICBwaS5yZWN0ID0gKGFi
c29sdXRlVHJhbnNmb3JtKCkpLmludmVydCgpLm1hcFJlY3QocGkucmVjdCk7CisgICAgcGkucmVj
dCA9IChhYnNvbHV0ZVRyYW5zZm9ybSgpKS5pbnZlcnNlKCkubWFwUmVjdChwaS5yZWN0KTsKICAg
ICBSZW5kZXJCbG9jazo6cGFpbnQocGksIHR4LCB0eSk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL1NWR0lubGluZUZsb3dCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVy
aW5nL1NWR0lubGluZUZsb3dCb3guY3BwCShyZXZpc2lvbiAxODE2MykKKysrIFdlYkNvcmUvcmVu
ZGVyaW5nL1NWR0lubGluZUZsb3dCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3
IEBAIHZvaWQgcGFpbnRTVkdJbmxpbmVGbG93KElubGluZUZsb3dCb3gqIGYKICAgICBSZW5kZXJP
YmplY3Q6OlBhaW50SW5mbyBwaShwYWludEluZm8pOwogICAgIAogICAgIGlmICghZmxvdy0+aXNS
b290SW5saW5lQm94KCkpCi0gICAgICAgIHBpLnJlY3QgPSAob2JqZWN0LT5sb2NhbFRyYW5zZm9y
bSgpKS5pbnZlcnQoKS5tYXBSZWN0KHBpLnJlY3QpOworICAgICAgICBwaS5yZWN0ID0gKG9iamVj
dC0+bG9jYWxUcmFuc2Zvcm0oKSkuaW52ZXJzZSgpLm1hcFJlY3QocGkucmVjdCk7CiAKICAgICBm
bG9hdCBvcGFjaXR5ID0gb2JqZWN0LT5zdHlsZSgpLT5vcGFjaXR5KCk7CiAgICAgaWYgKG9wYWNp
dHkgPCAxLjBmKSB7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJUcmVlQXNUZXh0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJUcmVlQXNUZXh0
LmNwcAkocmV2aXNpb24gMTgxNjMpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJUcmVl
QXNUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDggKzE0OSw4IEBAIFRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGMKICAgICAgICAgdHMgPDwgImlkZW50aXR5IjsK
ICAgICBlbHNlIAogICAgIHsKLSAgICAgICAgdHMgPDwgInttPSgoIiA8PCBtLm0xMSgpIDw8ICIs
IiA8PCBtLm0xMigpIDw8ICIpKCIgPDwgbS5tMjEoKSA8PCAiLCIgPDwgbS5tMjIoKSA8PCAiKSki
OwotICAgICAgICB0cyA8PCAiIHQ9KCIgPDwgbS5keCgpIDw8ICIsIiA8PCBtLmR5KCkgPDwgIil9
IjsKKyAgICAgICAgdHMgPDwgInttPSgoIiA8PCBtLmEoKSA8PCAiLCIgPDwgbS5iKCkgPDwgIiko
IiA8PCBtLmMoKSA8PCAiLCIgPDwgbS5kKCkgPDwgIikpIjsKKyAgICAgICAgdHMgPDwgIiB0PSgi
IDw8IG0uZSgpIDw8ICIsIiA8PCBtLmYoKSA8PCAiKX0iOwogICAgIH0KICAgICByZXR1cm4gdHM7
CiB9Cg==
</data>
<flag name="review"
          id="4286"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11816</attachid>
            <date>2006-12-12 03:15:26 -0800</date>
            <delta_ts>2006-12-12 03:26:30 -0800</delta_ts>
            <desc>Final patch</desc>
            <filename>KillSVGMatrix.diff</filename>
            <type>text/plain</type>
            <size>112451</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE4MTc2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDYtMTItMTIgIE5pa29sYXMgWmltbWVybWFu
biAgPHppbW1lcm1hbm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2Vpbmln
LgorCisgICAgICAgIFNWR1BvaW50LW1hdHJpeFRyYW5zZm9ybSB3b3JrcyBhZ2FpbiBhcyBleHBl
Y3RlZCwgbm93IHRoYXQgU1ZHTWF0cml4CisgICAgICAgIGlzIGNvbnZlcnRlZCB0byB0aGUgQWZm
aW5lVHJhbnNmb3JtIFBPRCB0eXBlLiBVcGRhdGluZyBsYXlvdXQgdGVzdCByZXN1bHQuCisKKyAg
ICAgICAgKiBzdmcvY3VzdG9tL1NWR1BvaW50LW1hdHJpeFRyYW5zZm9ybS1leHBlY3RlZC50eHQ6
CisKIDIwMDYtMTItMTIgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBCZXRoIERha2luLgpAQCAtNTEsNiArNjAsNyBAQAogICAgICAgICBu
ZXcgcmVzdWx0IGlzIHByb2JhYmx5IE9LLiBPciB0aGVyZSBjb3VsZCBiZSBzb21lIHByb2JsZW0s
IGJ1dCBpZiBzbyB3ZSBuZWVkCiAgICAgICAgIHNvbWUgb3RoZXIgaW52ZXN0aWdhdGlvbiAtLSBJ
IGNvdWxkbid0IHNlZSBhbnl0aGluZy4KIAorPj4+Pj4+PiAucjE4MTc2CiAyMDA2LTEyLTExICBO
aWtvbGFzIFppbW1lcm1hbm4gIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAKICAgICAgICAgVXBkYXRl
IFNWRyBwaXhlbCB0ZXN0cyAtIGhhc24ndCBiZWVuIGRvbmUgZm9yIGEgbG9uZyB0aW1lLgpJbmRl
eDogTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9TVkdQb2ludC1tYXRyaXhUcmFuc2Zvcm0tZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9jdXN0b20vU1ZHUG9pbnQtbWF0
cml4VHJhbnNmb3JtLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTgxNzYpCisrKyBMYXlvdXRUZXN0
cy9zdmcvY3VzdG9tL1NWR1BvaW50LW1hdHJpeFRyYW5zZm9ybS1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEsNiArMSw2IEBACiBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAg
UmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLSAgICBLQ2FudmFzQ29udGFpbmVyIHtz
dmd9IGF0ICg4MCwyNCkgc2l6ZSAxNTZ4NzIKKyAgICBLQ2FudmFzQ29udGFpbmVyIHtzdmd9IGF0
ICg4MCwyNCkgc2l6ZSAxNzJ4NzIKICAgICAgIFJlbmRlclNWR1RleHQge3RleHR9IGF0ICgyMCwy
MCkgc2l6ZSA4MDB4MTgKLSAgICAgICAgUmVuZGVyU1ZHSW5saW5lVGV4dCB7I3RleHR9IGF0ICgw
LC0xNCkgc2l6ZSAzOXgxOAotICAgICAgICAgIHRleHQgcnVuIGF0ICgwLC0xNCkgd2lkdGggMzk6
ICJGYWlsZWQiCisgICAgICAgIFJlbmRlclNWR0lubGluZVRleHQgeyN0ZXh0fSBhdCAoMCwtMTQp
IHNpemUgNDN4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwtMTQpIHdpZHRoIDQzOiAiUGFz
c2VkIgpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE4MTc2KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNzMgQEAKKzIwMDYtMTItMTIgIE5pa29sYXMgWmltbWVybWFubiAgPHpp
bW1lcm1hbm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBDaGFuZ2VMb2cuCisKKyAg
ICAgICAgRml4ZXM6IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzk3
CisKKyAgICAgICAgUmVtb3ZlIFNWR01hdHJpeCwgcmVwbGFjZSBpdCBieSBBZmZpbmVUcmFuc2Zv
cm0gdXNhZ2UgZXZlcnl3aGVyZS4KKyAgICAgICAgQ2hhbmdlZCBBZmZpbmVUcmFuc2Zvcm0gQVBJ
IHRvIGJlIGFibGUgdG8gYmUgdXNlZCB3aXRoaW4gZ2VuZXJhdGlvbgorICAgICAgICAobTExKCkg
LT4gYSgpLCBtMTIoKSAtPiBiKCksIC4uLikuIEFkZCBzb21lIG1ldGhvZHMgbmVlZGVkIGZvciBT
VkcuCisKKyAgICAgICAgVGhlIGFjdHVhbCBTVkdNYXRyaXggLT4gQWZmaW5lVHJhbnNmb3JtYXRp
b24gcGF0Y2ggaGFzIGJlZW4gY3JlYXRlZAorICAgICAgICBieSBSb2IgLSBJIGp1c3QgYWRhcHRl
ZCBpdCB0byB0aGUgYXV0b2dlbmVyYXRlZCBQT0Qgc3R5bGUuCisKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTVkdN
YXRyaXhDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHTWF0cml4Ojpp
bnZlcnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHTWF0cml4Ojpyb3RhdGVGcm9tVmVjdG9y
KToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUludGVybmFsLmg6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbToKKyAgICAgICAgKiBrc3ZnMi9taXNjL0tTVkdUaW1l
U2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKiBrc3ZnMi9taXNjL1NWR0ltYWdlTG9hZGVyLmNwcDoK
KyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmhhbmRsZVRpbWVyRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmNhbGN1
bGF0ZVJvdGF0aW9uRnJvbU1hdHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlVHJh
bnNmb3JtRWxlbWVudDo6aW5pdGlhbE1hdHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRlVHJhbnNmb3JtRWxlbWVudDo6dHJhbnNmb3JtTWF0cml4KToKKyAgICAgICAgKiBrc3ZnMi9z
dmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZH
Q2xpcFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxlbWVu
dDo6Y2FudmFzUmVzb3VyY2UpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGaXRUb1ZpZXdCb3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRml0VG9WaWV3Qm94Ojp2aWV3Qm94VG9WaWV3VHJh
bnNmb3JtKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRml0VG9WaWV3Qm94Lmg6CisgICAgICAg
ICoga3N2ZzIvc3ZnL1NWR0xlbmd0aExpc3QuY3BwOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdM
aW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50OjpidWlsZEdyYWRpZW50KToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTG9j
YXRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xvY2F0YWJsZTo6Z2V0Q1RNKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0xvY2F0YWJsZTo6Z2V0U2NyZWVuQ1RNKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0xvY2F0YWJsZTo6Z2V0VHJhbnNmb3JtVG9FbGVtZW50KToKKyAgICAgICAgKiBr
c3ZnMi9zdmcvU1ZHTG9jYXRhYmxlLmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR01hcmtlckVs
ZW1lbnQuY3BwOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdNYXRyaXguY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIGtzdmcyL3N2Zy9TVkdNYXRyaXguaDogUmVtb3ZlZC4KKyAgICAgICAgKiBrc3Zn
Mi9zdmcvU1ZHTWF0cml4LmlkbDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTnVtYmVyTGlzdC5j
cHA6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50Ojpub3RpZnlBdHRyaWJ1dGVDaGFuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OmdldENUTSk6CisgICAgICAgICoga3N2
ZzIvc3ZnL1NWR1BhdHRlcm5FbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1BvaW50
LmlkbDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpnZXRDVE0pOgorICAgICAg
ICAqIGtzdmcyL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmg6CisgICAgICAgICoga3N2ZzIv
c3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQ6OmJ1aWxkR3JhZGllbnQpOgorICAgICAgICAqIGtzdmcyL3N2
Zy9TVkdTVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnZp
ZXdwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR01hdHJp
eCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdUcmFuc2Zvcm1G
cm9tTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmdldENUTSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpnZXRTY3JlZW5DVE0pOgorICAgICAgICAq
IGtzdmcyL3N2Zy9TVkdTVkdFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1N0eWxl
ZEVsZW1lbnQuY3BwOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdTdHlsZWRMb2NhdGFibGVFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQ6Omdl
dENUTSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50OjpnZXRT
Y3JlZW5DVE0pOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50
Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojpsb2Nh
bE1hdHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVu
dDo6Z2V0Q1RNKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
ZW50OjpnZXRTY3JlZW5DVE0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQ6OnVwZGF0ZUxvY2FsVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjphdHRhY2gpOgorICAgICAgICAqIGtzdmcyL3N2
Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9T
VkdUZXh0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0RWxlbWVudDo6bG9j
YWxNYXRyaXgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dEVsZW1lbnQ6OnVwZGF0ZUxvY2Fs
VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRFbGVtZW50OjphdHRhY2gpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dEVsZW1lbnQ6OmdldFNjcmVlbkNUTSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdUZXh0RWxlbWVudDo6Z2V0Q1RNKToKKyAgICAgICAgKiBrc3ZnMi9zdmcv
U1ZHVGV4dEVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtLmNwcDoK
KyAgICAgICAgKFNWR1RyYW5zZm9ybTo6U1ZHVHJhbnNmb3JtKToKKyAgICAgICAgKFNWR1RyYW5z
Zm9ybTo6bWF0cml4KToKKyAgICAgICAgKFNWR1RyYW5zZm9ybTo6c2V0TWF0cml4KToKKyAgICAg
ICAgKFNWR1RyYW5zZm9ybTo6c2V0VHJhbnNsYXRlKToKKyAgICAgICAgKFNWR1RyYW5zZm9ybTo6
c2V0U2NhbGUpOgorICAgICAgICAoU1ZHVHJhbnNmb3JtOjpzZXRSb3RhdGUpOgorICAgICAgICAo
U1ZHVHJhbnNmb3JtOjpzZXRTa2V3WCk6CisgICAgICAgIChTVkdUcmFuc2Zvcm06OnNldFNrZXdZ
KToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtLmg6CisgICAgICAgICoga3N2ZzIv
c3ZnL1NWR1RyYW5zZm9ybUxpc3QuY3BwOgorICAgICAgICAoU1ZHVHJhbnNmb3JtTGlzdDo6Y3Jl
YXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeCk6CisgICAgICAgIChTVkdUcmFuc2Zvcm1MaXN0Ojpj
b25jYXRlbmF0ZSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuaDoKKyAg
ICAgICAgKiBrc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdUcmFuc2Zvcm1hYmxlOjpnZXRDVE0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNm
b3JtYWJsZTo6Z2V0U2NyZWVuQ1RNKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybWFi
bGU6OnBhcnNlVHJhbnNmb3JtQXR0cmlidXRlKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHVHJh
bnNmb3JtYWJsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0FmZmluZVRyYW5zZm9y
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06Om11bHRpcGx5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6c2NhbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6QWZmaW5lVHJhbnNmb3JtOjpzY2FsZU5vblVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6
QWZmaW5lVHJhbnNmb3JtOjpyb3RhdGVGcm9tVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkFm
ZmluZVRyYW5zZm9ybTo6ZmxpcFgpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3Jt
OjpmbGlwWSk6CisgICAgICAgIChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06OnNrZXdYKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6c2tld1kpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0FmZmluZVRyYW5zZm9ybS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0FmZmluZVRyYW5zZm9ybUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFm
ZmluZVRyYW5zZm9ybTo6YSk6CisgICAgICAgIChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06OnNl
dEEpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjpiKToKKyAgICAgICAgKFdl
YkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6c2V0Qik6CisgICAgICAgIChXZWJDb3JlOjpBZmZpbmVU
cmFuc2Zvcm06OmMpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjpzZXRDKToK
KyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6ZCk6CisgICAgICAgIChXZWJDb3Jl
OjpBZmZpbmVUcmFuc2Zvcm06OnNldEQpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNm
b3JtOjplKToKKyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6c2V0RSk6CisgICAg
ICAgIChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06OmYpOgorICAgICAgICAoV2ViQ29yZTo6QWZm
aW5lVHJhbnNmb3JtOjpzZXRGKToKKyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6
aW52ZXJzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQWZmaW5lVHJhbnNmb3Jt
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjphKToKKyAgICAgICAg
KFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6c2V0QSk6CisgICAgICAgIChXZWJDb3JlOjpBZmZp
bmVUcmFuc2Zvcm06OmIpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjpzZXRC
KToKKyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6Yyk6CisgICAgICAgIChXZWJD
b3JlOjpBZmZpbmVUcmFuc2Zvcm06OnNldEMpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJh
bnNmb3JtOjpkKToKKyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6c2V0RCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06OmUpOgorICAgICAgICAoV2ViQ29yZTo6
QWZmaW5lVHJhbnNmb3JtOjpzZXRFKToKKyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9y
bTo6Zik6CisgICAgICAgIChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06OnNldEYpOgorICAgICAg
ICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjppbnZlcnNlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9xdC9BZmZpbmVUcmFuc2Zvcm1RdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
ZmZpbmVUcmFuc2Zvcm06OmEpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjpz
ZXRBKToKKyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6Yik6CisgICAgICAgIChX
ZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06OnNldEIpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5l
VHJhbnNmb3JtOjpjKToKKyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6c2V0Qyk6
CisgICAgICAgIChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06OmQpOgorICAgICAgICAoV2ViQ29y
ZTo6QWZmaW5lVHJhbnNmb3JtOjpzZXREKToKKyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5z
Zm9ybTo6ZSk6CisgICAgICAgIChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06OnNldEUpOgorICAg
ICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjpmKToKKyAgICAgICAgKFdlYkNvcmU6OkFm
ZmluZVRyYW5zZm9ybTo6c2V0Rik6CisgICAgICAgIChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06
OmludmVyc2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZvcmVpZ25PYmplY3Q6OnBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckZvcmVpZ25PYmplY3Q6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyUGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJQYXRoOjpt
YXBBYnNvbHV0ZVBvaW50VG9Mb2NhbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR0lt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpwYWludCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6bm9kZUF0UG9pbnQpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJTVkdUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Rl
eHQ6OmNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR1RleHQ6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6
OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvU1ZHSW5saW5lRmxvd0JveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpwYWludFNWR0lubGluZUZsb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9T
VkdSZW5kZXJUcmVlQXNUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgor
CiAyMDA2LTEyLTEyICBHZW9yZ2UgU3RhaWtvcyAgPHN0YWlrb3NAa2RlLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBBbGV4ZXkuCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMTgxNzYpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTk1OCw4ICsxOTU4LDYgQEAK
IAkJQTg4QUQ0OUYwOTUyNDhGMDAwMUREMTk2IC8qIFNWR0xvY2F0YWJsZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDMEY4ODEwODk3MDFGMzAwQkE1
MTE0IC8qIFNWR0xvY2F0YWJsZS5oICovOyB9OwogCQlBODhBRDRBMDA5NTI0OEYwMDAxREQxOTYg
LyogU1ZHTWFya2VyRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBOEMwRjg4MjA4OTcwMUYzMDBCQTUxMTQgLyogU1ZHTWFya2VyRWxlbWVu
dC5jcHAgKi87IH07CiAJCUE4OEFENEExMDk1MjQ4RjAwMDFERDE5NiAvKiBTVkdNYXJrZXJFbGVt
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEMw
Rjg4MzA4OTcwMUYzMDBCQTUxMTQgLyogU1ZHTWFya2VyRWxlbWVudC5oICovOyB9OwotCQlBODhB
RDRBMjA5NTI0OEYwMDAxREQxOTYgLyogU1ZHTWF0cml4LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzBGODg0MDg5NzAxRjMwMEJBNTExNCAvKiBT
VkdNYXRyaXguY3BwICovOyB9OwotCQlBODhBRDRBMzA5NTI0OEYwMDAxREQxOTYgLyogU1ZHTWF0
cml4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEMw
Rjg4NTA4OTcwMUYzMDBCQTUxMTQgLyogU1ZHTWF0cml4LmggKi87IH07CiAJCUE4OEFENEE2MDk1
MjQ4RjAwMDFERDE5NiAvKiBTVkdOdW1iZXJMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzBGODg4MDg5NzAxRjMwMEJBNTExNCAvKiBTVkdO
dW1iZXJMaXN0LmNwcCAqLzsgfTsKIAkJQTg4QUQ0QTcwOTUyNDhGMDAwMUREMTk2IC8qIFNWR051
bWJlckxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE4QzBGODg5MDg5NzAxRjMwMEJBNTExNCAvKiBTVkdOdW1iZXJMaXN0LmggKi87IH07CiAJCUE4
OEFENEE4MDk1MjQ4RjAwMDFERDE5NiAvKiBTVkdQYWludC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEMwRjg4QTA4OTcwMUYzMDBCQTUxMTQgLyog
U1ZHUGFpbnQuY3BwICovOyB9OwpAQCAtMjIzMSw2ICsyMjI5LDcgQEAKIAkJQjIzMTBCNzYwQjFG
NDZBMjAwRDU1RDg3IC8qIENnU3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCMjMxMEI3MzBCMUY0NkEyMDBENTVEODcgLyogQ2dTdXBwb3J0
LmNwcCAqLzsgfTsKIAkJQjIzMTBCNzcwQjFGNDZBMjAwRDU1RDg3IC8qIENnU3VwcG9ydC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIzMTBCNzQwQjFG
NDZBMjAwRDU1RDg3IC8qIENnU3VwcG9ydC5oICovOyB9OwogCQlCMjMxMEI3ODBCMUY0NkEzMDBE
NTVEODcgLyogUmVuZGVyUGF0aENnLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEIyMzEwQjc1MEIxRjQ2QTIwMEQ1NUQ4NyAvKiBSZW5kZXJQYXRoQ2cu
Y3BwICovOyB9OworCQlCMjVERkFBRjBCMkUyOTI5MDAwRTY1MTAgLyogSlNTVkdNYXRyaXhDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1
REZBQUUwQjJFMjkyOTAwMEU2NTEwIC8qIEpTU1ZHTWF0cml4Q3VzdG9tLmNwcCAqLzsgfTsKIAkJ
QjI3NTM1NTYwQjA1MzgxNDAwMkNFNjRGIC8qIEFmZmluZVRyYW5zZm9ybS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUyNzBCMDUzODE0MDAy
Q0U2NEYgLyogQWZmaW5lVHJhbnNmb3JtLmNwcCAqLzsgfTsKIAkJQjI3NTM1NTcwQjA1MzgxNDAw
MkNFNjRGIC8qIEFmZmluZVRyYW5zZm9ybS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MjgwQjA1MzgxNDAwMkNFNjRGIC8qIEFmZmluZVRyYW5z
Zm9ybS5oICovOyB9OwogCQlCMjc1MzU1ODBCMDUzODE0MDAyQ0U2NEYgLyogQWZmaW5lVHJhbnNm
b3JtQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjI3NTM1MkEwQjA1MzgxNDAwMkNFNjRGIC8qIEFmZmluZVRyYW5zZm9ybUNHLmNwcCAqLzsgfTsK
QEAgLTQ5MTAsOCArNDkwOSw2IEBACiAJCUE4QzBGODgxMDg5NzAxRjMwMEJBNTExNCAvKiBTVkdM
b2NhdGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTVkdMb2NhdGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4
OyB1c2VzVGFicyA9IDA7IH07CiAJCUE4QzBGODgyMDg5NzAxRjMwMEJBNTExNCAvKiBTVkdNYXJr
ZXJFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU1ZHTWFya2VyRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlBOEMwRjg4MzA4OTcwMUYzMDBCQTUx
MTQgLyogU1ZHTWFya2VyRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNWR01hcmtlckVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07Ci0JCUE4QzBGODg0MDg5NzAxRjMw
MEJBNTExNCAvKiBTVkdNYXRyaXguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdNYXRyaXguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKLQkJQThDMEY4ODUwODk3MDFGMzAw
QkE1MTE0IC8qIFNWR01hdHJpeC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNWR01hdHJpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJX
aWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJQThDMEY4ODgwODk3MDFGMzAwQkE1MTE0IC8q
IFNWR051bWJlckxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTVkdOdW1iZXJMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUE4QzBGODg5MDg5NzAxRjMwMEJB
NTExNCAvKiBTVkdOdW1iZXJMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU1ZHTnVtYmVyTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJQThDMEY4OEEwODk3MDFGMzAwQkE1
MTE0IC8qIFNWR1BhaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU1ZHUGFpbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0
YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKQEAgLTUxOTQsNiArNTE5MSw3IEBACiAJCUIy
MzEwQjczMEIxRjQ2QTIwMEQ1NUQ4NyAvKiBDZ1N1cHBvcnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENnU3VwcG9ydC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUIyMzEwQjc0MEIxRjQ2QTIwMEQ1NUQ4NyAvKiBDZ1N1cHBvcnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENnU3VwcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCMjMxMEI3NTBCMUY0NkEyMDBENTVEODcgLyogUmVuZGVyUGF0aENnLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJQYXRoQ2cuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCMjVERkFBRTBCMkUyOTI5MDAwRTY1MTAg
LyogSlNTVkdNYXRyaXhDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTU1ZHTWF0cml4Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjI3NTM1MjcwQjA1MzgxNDAwMkNFNjRGIC8qIEFmZmluZVRyYW5zZm9ybS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWZmaW5lVHJhbnNmb3JtLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1MjgwQjA1MzgxNDAwMkNFNjRGIC8qIEFm
ZmluZVRyYW5zZm9ybS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWZmaW5l
VHJhbnNmb3JtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTJBMEIwNTM4
MTQwMDJDRTY0RiAvKiBBZmZpbmVUcmFuc2Zvcm1DRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQWZmaW5lVHJhbnNmb3JtQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtODI1NCw4ICs4MjUyLDYgQEAKIAkJCQlBOEMwRjg4MzA4OTcwMUYzMDBC
QTUxMTQgLyogU1ZHTWFya2VyRWxlbWVudC5oICovLAogCQkJCUE4MTY1NUUyMDk2QkMxMzkwMDYw
MTA1OCAvKiBTVkdNYXNrRWxlbWVudC5jcHAgKi8sCiAJCQkJQTgxNjU1RTMwOTZCQzEzOTAwNjAx
MDU4IC8qIFNWR01hc2tFbGVtZW50LmggKi8sCi0JCQkJQThDMEY4ODQwODk3MDFGMzAwQkE1MTE0
IC8qIFNWR01hdHJpeC5jcHAgKi8sCi0JCQkJQThDMEY4ODUwODk3MDFGMzAwQkE1MTE0IC8qIFNW
R01hdHJpeC5oICovLAogCQkJCUE4MzNCRUREMEEyQzM0NEIwMEQ1NzY2NCAvKiBTVkdNYXRyaXgu
aWRsICovLAogCQkJCUE4MzNCRUEyMEEyQzMyOTMwMEQ1NzY2NCAvKiBTVkdOdW1iZXIuaWRsICov
LAogCQkJCUE4QzBGODg4MDg5NzAxRjMwMEJBNTExNCAvKiBTVkdOdW1iZXJMaXN0LmNwcCAqLywK
QEAgLTg2NjEsNiArODY1Nyw3IEBACiAJCQkJMUE3NTBERDMwQTkwRTcyOTAwMEZGMjE1IC8qIEpT
Tm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcCAqLywKIAkJCQk4NTc0RDFGMTBBREU2MTIyMDA0Q0JBMTEg
LyogSlNTVkdFbGVtZW50V3JhcHBlckZhY3RvcnkuY3BwICovLAogCQkJCTg1NzREMUYyMEFERTYx
MjIwMDRDQkExMSAvKiBKU1NWR0VsZW1lbnRXcmFwcGVyRmFjdG9yeS5oICovLAorCQkJCUIyNURG
QUFFMEIyRTI5MjkwMDBFNjUxMCAvKiBKU1NWR01hdHJpeEN1c3RvbS5jcHAgKi8sCiAJCQkJMUE3
NTBFMzMwQTkwRjg5RjAwMEZGMjE1IC8qIEpTVHJlZVdhbGtlckN1c3RvbS5jcHAgKi8sCiAJCQkJ
OTNCNzBENDEwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTWE1MSHR0cFJlcXVlc3QuY3BwICovLAogCQkJ
CTkzQjcwRDQyMDlFQjBDN0MwMDlEODQ2OCAvKiBKU1hNTEh0dHBSZXF1ZXN0LmggKi8sCkBAIC05
NTIzLDcgKzk1MjAsNiBAQAogCQkJCUE4OEFENDlEMDk1MjQ4RjAwMDFERDE5NiAvKiBTVkdMaXN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODhBRDQ5RjA5NTI0OEYwMDAxREQxOTYgLyogU1ZHTG9j
YXRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODhBRDRBMTA5NTI0OEYwMDAxREQxOTYgLyog
U1ZHTWFya2VyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTg4QUQ0QTMwOTUyNDhGMDAw
MUREMTk2IC8qIFNWR01hdHJpeC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg4QUQ0QTcwOTUyNDhG
MDAwMUREMTk2IC8qIFNWR051bWJlckxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4OEFENEE5
MDk1MjQ4RjAwMDFERDE5NiAvKiBTVkdQYWludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg4QUQ0
QUIwOTUyNDhGMDAwMUREMTk2IC8qIFNWR1BhdGhFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAg
LTExMTA0LDcgKzExMTAwLDYgQEAKIAkJCQlBODhBRDQ5QjA5NTI0OEYwMDAxREQxOTYgLyogU1ZH
TGluZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg4QUQ0OUUwOTUyNDhGMDAwMURE
MTk2IC8qIFNWR0xvY2F0YWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODhBRDRBMDA5NTI0
OEYwMDAxREQxOTYgLyogU1ZHTWFya2VyRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlB
ODhBRDRBMjA5NTI0OEYwMDAxREQxOTYgLyogU1ZHTWF0cml4LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE4OEFENEE2MDk1MjQ4RjAwMDFERDE5NiAvKiBTVkdOdW1iZXJMaXN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE4OEFENEE4MDk1MjQ4RjAwMDFERDE5NiAvKiBTVkdQYWludC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBODhBRDRBQTA5NTI0OEYwMDAxREQxOTYgLyogU1ZHUGF0aEVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMjE2Myw2ICsxMjE1OCw3IEBACiAJCQkJQkMxOEM1
RDEwQjJBODg2RjAwMTg0NjFEIC8qIFRleHRCcmVha0l0ZXJhdG9ySUNVLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUFBNEMzQTc2MEIyQjE2NzkwMDIzMzRBMiAvKiBTdHlsZUVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTNFMjQyNUYwQjJCNTA5NTAwQzczMkExIC8qIEhUTUxGcmFtZU93
bmVyRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCMjVERkFBRjBCMkUyOTI5MDAwRTY1
MTAgLyogSlNTVkdNYXRyaXhDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTExRDUxOTQw
QjJFN0E1RjAwNTZDMTg4IC8qIEJhc2U2NC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNTVkdNYXRyaXhDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNTVkdNYXRyaXhDdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1NWR01hdHJpeEN1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1t
ZXJtYW5uQGtkZS5vcmc+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBV
U0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTU1ZHTWF0cml4Lmgi
CisKKyNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJTVkdFeGNlcHRpb24u
aCIKKwordXNpbmcgbmFtZXNwYWNlIEtKUzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitKU1Zh
bHVlKiBKU1NWR01hdHJpeDo6aW52ZXJzZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IExpc3QmKQor
eworICAgIEFmZmluZVRyYW5zZm9ybSYgaW1wKGltcGwoKSk7CisgICAgS0pTOjpKU1ZhbHVlKiBy
ZXN1bHQgPSB0b0pTKGV4ZWMsIGltcC5pbnZlcnNlKCkpOworCisgICAgaWYgKCFpbXAuaXNJbnZl
cnRpYmxlKCkpCisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBTVkdfTUFUUklYX05PVF9J
TlZFUlRBQkxFKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0pTVmFsdWUqIEpTU1ZHTWF0
cml4Ojpyb3RhdGVGcm9tVmVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTGlzdCYgYXJncykK
K3sKKyAgICBBZmZpbmVUcmFuc2Zvcm0mIGltcChpbXBsKCkpOworIAorICAgIGZsb2F0IHggPSBh
cmdzWzBdLT50b051bWJlcihleGVjKTsKKyAgICBmbG9hdCB5ID0gYXJnc1sxXS0+dG9OdW1iZXIo
ZXhlYyk7CisKKyAgICBLSlM6OkpTVmFsdWUqIHJlc3VsdCA9IHRvSlMoZXhlYywgaW1wLnJvdGF0
ZUZyb21WZWN0b3IoeCwgeSkpOworCisgICAgaWYgKHggPT0gMC4wIHx8IHkgPT0gMC4wKQorICAg
ICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgU1ZHX0lOVkFMSURfVkFMVUVfRVJSKTsKKworICAg
IHJldHVybiByZXN1bHQ7Cit9CisgICAgCit9CisKKy8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3Mvb2JqYy9ET01JbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3Mvb2JqYy9ET01JbnRlcm5hbC5oCShyZXZpc2lvbiAxODE3NikKKysrIFdlYkNvcmUv
YmluZGluZ3Mvb2JqYy9ET01JbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMiArMzEs
NiBAQAogI2ltcG9ydCAiRE9NT2JqZWN0LmgiCiAjaW1wb3J0ICJET01SR0JDb2xvci5oIgogCi0j
aWZkZWYgU1ZHX1NVUFBPUlQKLSNpbXBvcnQgIkRPTVNWR051bWJlci5oIgotI2ltcG9ydCAiRE9N
U1ZHUG9pbnQuaCIKLSNpbXBvcnQgIkRPTVNWR1JlY3QuaCIKLSNlbmRpZiAvLyBTVkdfU1VQUE9S
VAotCiAjaWZkZWYgWFBBVEhfU1VQUE9SVAogI2ltcG9ydCAiRE9NWFBhdGhOU1Jlc29sdmVyLmgi
CiAjZW5kaWYgLy8gWFBBVEhfU1VQUE9SVApAQCAtMjEyLDYgKzIwNiw3IEBACiAjaW1wb3J0ICJE
T01TVkdNYXNrRWxlbWVudEludGVybmFsLmgiCiAjaW1wb3J0ICJET01TVkdNYXRyaXhJbnRlcm5h
bC5oIgogI2ltcG9ydCAiRE9NU1ZHTWV0YWRhdGFFbGVtZW50SW50ZXJuYWwuaCIKKyNpbXBvcnQg
IkRPTVNWR051bWJlckludGVybmFsLmgiCiAjaW1wb3J0ICJET01TVkdOdW1iZXJMaXN0SW50ZXJu
YWwuaCIKICNpbXBvcnQgIkRPTVNWR1BhaW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVNWR1Bh
dGhFbGVtZW50SW50ZXJuYWwuaCIKQEAgLTIzNywxMiArMjMyLDE0IEBACiAjaW1wb3J0ICJET01T
VkdQYXRoU2VnTW92ZXRvQWJzSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVNWR1BhdGhTZWdNb3Zl
dG9SZWxJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NU1ZHUGF0dGVybkVsZW1lbnRJbnRlcm5hbC5o
IgorI2ltcG9ydCAiRE9NU1ZHUG9pbnRJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NU1ZHUG9pbnRM
aXN0SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVNWR1BvbHlnb25FbGVtZW50SW50ZXJuYWwuaCIK
ICNpbXBvcnQgIkRPTVNWR1BvbHlsaW5lRWxlbWVudEludGVybmFsLmgiCiAjaW1wb3J0ICJET01T
VkdQcmVzZXJ2ZUFzcGVjdFJhdGlvSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVNWR1JhZGlhbEdy
YWRpZW50RWxlbWVudEludGVybmFsLmgiCiAjaW1wb3J0ICJET01TVkdSZWN0RWxlbWVudEludGVy
bmFsLmgiCisjaW1wb3J0ICJET01TVkdSZWN0SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVNWR1Jl
bmRlcmluZ0ludGVudEludGVybmFsLmgiCiAjaW1wb3J0ICJET01TVkdTVkdFbGVtZW50SW50ZXJu
YWwuaCIKICNpbXBvcnQgIkRPTVNWR1NjcmlwdEVsZW1lbnRJbnRlcm5hbC5oIgpAQCAtMjc1LDYg
KzI3Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBOb2RlRmlsdGVyOwogCiAj
aWZkZWYgU1ZHX1NVUFBPUlQKKyAgICBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiAgICAgY2xhc3Mg
RmxvYXRQb2ludDsKICAgICBjbGFzcyBGbG9hdFJlY3Q7CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQK
QEAgLTMwNCwyNyArMzAyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQGVuZAogCiAKLSNpZmRl
ZiBTVkdfU1VQUE9SVAotLy8gU1ZHIEludGVybmFsIEludGVyZmFjZXMKLQotQGludGVyZmFjZSBE
T01TVkdOdW1iZXIgKFdlYkNvcmVJbnRlcm5hbCkKLSsgKERPTVNWR051bWJlciAqKV9TVkdOdW1i
ZXJXaXRoOihmbG9hdCl2YWx1ZTsKLS0gKGZsb2F0KV9TVkdOdW1iZXI7Ci1AZW5kCi0KLUBpbnRl
cmZhY2UgRE9NU1ZHUG9pbnQgKFdlYkNvcmVJbnRlcm5hbCkKLSsgKERPTVNWR1BvaW50ICopX1NW
R1BvaW50V2l0aDooV2ViQ29yZTo6RmxvYXRQb2ludClpbXBsOwotLSAoV2ViQ29yZTo6RmxvYXRQ
b2ludClfU1ZHUG9pbnQ7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NU1ZHUmVjdCAoV2ViQ29yZUlu
dGVybmFsKQotKyAoRE9NU1ZHUmVjdCAqKV9TVkdSZWN0V2l0aDooV2ViQ29yZTo6RmxvYXRSZWN0
KWltcGw7Ci0tIChXZWJDb3JlOjpGbG9hdFJlY3QpX1NWR1JlY3Q7Ci1AZW5kCi0KLSNlbmRpZiAv
LyBTVkdfU1VQUE9SVAotCi0KICNpZmRlZiBYUEFUSF9TVVBQT1JUCiAvLyBYUGF0aCBJbnRlcm5h
bCBJbnRlcmZhY2VzCiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yLnBtCShyZXZpc2lvbiAxODE3NikKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw4IEBAIG15ICVwcmltaXRp
dmVUeXBlSGFzaCA9ICgiaW50IiA9PiAxLCAic2gKICAgICAgICAgICAgICAgICAgICAgICAgICAi
dW5zaWduZWQgbG9uZyIgPT4gMSwgImZsb2F0IiA9PiAxLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICJkb3VibGUiID0+IDEsICJib29sZWFuIiA9PiAxLCAidm9pZCIgPT4gMSk7CiAKK215ICVw
b2RUeXBlSGFzaCA9ICgiUkdCQ29sb3IiID0+IDEsICJTVkdQb2ludCIgPT4gMSwgIlNWR1JlY3Qi
ID0+IDEsICJTVkdOdW1iZXIiID0+IDEsICJTVkdNYXRyaXgiID0+IDEpOworIAogbXkgJXN0cmlu
Z1R5cGVIYXNoID0gKCJET01TdHJpbmciID0+IDEsICJBdG9taWNTdHJpbmciID0+IDEpOwogCiBt
eSAlbm9uUG9pbnRlclR5cGVIYXNoID0gKCJET01UaW1lU3RhbXAiID0+IDEsICJDb21wYXJlSG93
IiA9PiAxLCAiU1ZHUGFpbnRUeXBlIiA9PiAxKTsKQEAgLTE3Nyw2ICsxNzksMTQgQEAgc3ViIEFk
ZE1ldGhvZHNDb25zdGFudHNBbmRBdHRyaWJ1dGVzRnJvbQogfQogCiAjIEhlbHBlcnMgZm9yIGFs
bCBDb2RlR2VuZXJhdG9yKioqLnBtIG1vZHVsZXMKK3N1YiBJc1BvZFR5cGUKK3sKKyAgICBteSAk
dHlwZSA9IHNoaWZ0OworCisgICAgcmV0dXJuIDEgaWYgJHBvZFR5cGVIYXNoeyR0eXBlfTsKKyAg
ICByZXR1cm4gMDsKK30KKwogc3ViIElzUHJpbWl0aXZlVHlwZQogewogICAgIG15ICRvYmplY3Qg
PSBzaGlmdDsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQkocmV2aXNpb24gMTgxNzYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNSBAQAogIwotIyBLRE9NIElE
TCBwYXJzZXIKLSMKLSMgQ29weXJpZ2h0IChDKSAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2ls
ZGZveEBrZGUub3JnPgorIyBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJt
YW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAjIENvcHlyaWdodCAoQykgMjAwNiBBbmRlcnMgQ2Fy
bHNzb24gPGFuZGVyc2NhQG1hYy5jb20+CiAjIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2Vp
bmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KICMgQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQ
cm9za3VyeWFrb3YgPGFwQHdlYmtpdC5vcmc+CkBAIC0xNTUsOCArMTUzLDggQEAgc3ViIEF2b2lk
SW5jbHVzaW9uT2ZUeXBlCiB7CiAgICAgbXkgJHR5cGUgPSBzaGlmdDsKIAotICAgICMgU3BlY2lh
bCBjYXNlOiBTVkdSZWN0LmggLyBTVkdQb2ludC5oIC8gU1ZHTnVtYmVyLmggZG8gbm90IGV4aXN0
LgotICAgIHJldHVybiAxIGlmICR0eXBlIGVxICJTVkdSZWN0IiBvciAkdHlwZSBlcSAiU1ZHUG9p
bnQiIG9yICR0eXBlIGVxICJTVkdOdW1iZXIiOworICAgICMgU3BlY2lhbCBjYXNlOiBTVkdSZWN0
LmggLyBTVkdQb2ludC5oIC8gU1ZHTnVtYmVyLmggLyBTVkdNYXRyaXguaCBkbyBub3QgZXhpc3Qu
CisgICAgcmV0dXJuIDEgaWYgJHR5cGUgZXEgIlNWR1JlY3QiIG9yICR0eXBlIGVxICJTVkdQb2lu
dCIgb3IgJHR5cGUgZXEgIlNWR051bWJlciIgb3IgJHR5cGUgZXEgIlNWR01hdHJpeCI7CiAgICAg
cmV0dXJuIDA7CiB9CiAKQEAgLTI2Nyw3ICsyNjUsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAg
ICBteSAkcG9kVHlwZSA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlBPRFR5cGUi
fTsKICAgICBteSAkcGFzc1R5cGUgPSAkcG9kVHlwZSA/ICJjb25zdCAkcG9kVHlwZSYiIDogIiRp
bXBsQ2xhc3NOYW1lKiI7CiAKLSAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2luY2x1ZGUgXCIk
cG9kVHlwZS5oXCJcbiIpIGlmICRwb2RUeXBlIGFuZCAkcG9kVHlwZSBuZSAiZmxvYXQiOworICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIjaW5jbHVkZSBcIiRwb2RUeXBlLmhcIlxuIikgaWYgJHBv
ZFR5cGUgYW5kICRwb2RUeXBlIG5lICJkb3VibGUiOwogCiAgICAgbXkgJG51bUNvbnN0YW50cyA9
IEB7JGRhdGFOb2RlLT5jb25zdGFudHN9OwogICAgIG15ICRudW1BdHRyaWJ1dGVzID0gQHskZGF0
YU5vZGUtPmF0dHJpYnV0ZXN9OwpAQCAtNzk3LDcgKzc5NSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgY2FzZSAi
IC4gV0tfdWNmaXJzdCgkbmFtZSkgLiAiQXR0ck51bTpcbiIpOwogCiAgICAgICAgICAgICAgICAg
aWYgKCRwb2RUeXBlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgkcG9kVHlwZSBlcSAiZmxv
YXQiKSB7ICMgU3BlY2lhbCBjYXNlIGZvciBKU1NWR051bWJlcgorICAgICAgICAgICAgICAgICAg
ICBpZiAoJHBvZFR5cGUgZXEgImRvdWJsZSIpIHsgIyBTcGVjaWFsIGNhc2UgZm9yIEpTU1ZHTnVt
YmVyCiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAg
cmV0dXJuICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAiaW1wIikg
LiAiO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuICIgLiBOYXRpdmVUb0pT
VmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAiaW1wLiRuYW1lKCkiKSAuICI7XG4iKTsKQEAg
LTg3MSw3ICs4NjksNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgY2FzZSAiIC4gV0tfdWNmaXJzdCgkbmFtZSkgLiJBdHRyTnVtOiB7XG4iKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgkcG9kVHlwZSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICgkcG9kVHlwZSBlcSAiZmxvYXQiKSB7ICMgU3BlY2lhbCBjYXNlIGZvciBK
U1NWR051bWJlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcG9kVHlwZSBlcSAi
ZG91YmxlIikgeyAjIFNwZWNpYWwgY2FzZSBmb3IgSlNTVkdOdW1iZXIKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGltcCA9ICIgLiBK
U1ZhbHVlVG9OYXRpdmUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAidmFsdWUiKSAuICI7XG4iKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgaW1wLnNldCIgLiBXS191
Y2ZpcnN0KCRuYW1lKSAuICIoIiAuIEpTVmFsdWVUb05hdGl2ZSgkYXR0cmlidXRlLT5zaWduYXR1
cmUsICJ2YWx1ZSIpIC4gIik7XG4iKTsKQEAgLTEwMTIsNyArMTAxMCw3IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHZhbC0+aXNPYmplY3QoJiR7Y2xh
c3NOYW1lfTo6aW5mbykgPyBzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4odmFsKS0+aW1wbCgpIDog
Iik7Ci0gICAgICAgIGlmICgkcG9kVHlwZSBhbmQgJHBvZFR5cGUgbmUgImZsb2F0IikgeworICAg
ICAgICBpZiAoJHBvZFR5cGUgYW5kICRwb2RUeXBlIG5lICJkb3VibGUiKSB7CiAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiRwb2RUeXBlKCk7XG59XG4iKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiMDtcbn1cbiIpOwpAQCAtMTA3Niw2
ICsxMDc0LDcgQEAgc3ViIEdldE5hdGl2ZVR5cGUKICAgICByZXR1cm4gIkV2ZW50VGFyZ2V0Tm9k
ZSoiIGlmICR0eXBlIGVxICJFdmVudFRhcmdldCI7CiAgICAgcmV0dXJuICJGbG9hdFJlY3QiIGlm
ICR0eXBlIGVxICJTVkdSZWN0IjsKICAgICByZXR1cm4gIkZsb2F0UG9pbnQiIGlmICR0eXBlIGVx
ICJTVkdQb2ludCI7CisgICAgcmV0dXJuICJBZmZpbmVUcmFuc2Zvcm0iIGlmICR0eXBlIGVxICJT
VkdNYXRyaXgiOwogICAgIHJldHVybiAiZG91YmxlIiBpZiAkdHlwZSBlcSAiU1ZHTnVtYmVyIjsK
ICAgICByZXR1cm4gIlNWR1BhaW50OjpTVkdQYWludFR5cGUiIGlmICR0eXBlIGVxICJTVkdQYWlu
dFR5cGUiOwogCkBAIC0xMjI0LDcgKzEyMjMsNyBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAgICAg
ICAgIHJldHVybiAiZ2V0RE9NUkdCQ29sb3IoZXhlYywgJHZhbHVlKSI7CiAgICAgfQogCi0gICAg
aWYgKCR0eXBlIGVxICJTVkdSZWN0IiBvciAkdHlwZSBlcSAiU1ZHUG9pbnQiIG9yICR0eXBlIGVx
ICJTVkdOdW1iZXIiKSB7CisgICAgaWYgKCR0eXBlIGVxICJTVkdSZWN0IiBvciAkdHlwZSBlcSAi
U1ZHUG9pbnQiIG9yICR0eXBlIGVxICJTVkdOdW1iZXIiIG9yICR0eXBlIGVxICJTVkdNYXRyaXgi
KSB7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTJHR5cGUuaCJ9ID0gMTsKICAgICAgICAgcmV0
dXJuICJ0b0pTKGV4ZWMsICR2YWx1ZSkiOwogICAgIH0KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0JKHJldmlzaW9uIDE4MTc2KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogIyAKLSMgQ29weXJpZ2h0IChDKSAyMDA1IE5pa29sYXMgWmltbWVy
bWFubiA8d2lsZGZveEBrZGUub3JnPgorIyBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgTmlrb2xh
cyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAjIENvcHlyaWdodCAoQykgMjAwNiBB
bmRlcnMgQ2FybHNzb24gPGFuZGVyc2NhQG1hYy5jb20+IAogIyBDb3B5cmlnaHQgKEMpIDIwMDYg
U2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAjIENvcHlyaWdodCAoQykgMjAw
NiBBbGV4ZXkgUHJvc2t1cnlha292IDxhcEB3ZWJraXQub3JnPgpAQCAtNTI3LDYgKzUyNywxMyBA
QCBzdWIgQWRkSW5jbHVkZXNGb3JUeXBlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBp
ZiAoJHR5cGUgZXEgIlNWR01hdHJpeCIpIHsKKyAgICAgICAgJGltcGxJbmNsdWRlc3siQWZmaW5l
VHJhbnNmb3JtLmgifSA9IDE7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IkRPTSR0eXBlLmgifSA9
IDE7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IlNWR0V4Y2VwdGlvbi5oIn0gPSAxOworICAgICAg
ICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKCR0eXBlIGVxICJTVkdOdW1iZXIiKSB7CiAgICAg
ICAgICRpbXBsSW5jbHVkZXN7IkRPTSR0eXBlLmgifSA9IDE7CiAgICAgICAgIHJldHVybjsKQEAg
LTgxNSw3ICs4MjIsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIG15ICRwb2RU
eXBlV2l0aE5hbWVzcGFjZTsKIAogICAgIGlmICgkcG9kVHlwZSkgewotICAgICAgICAkcG9kVHlw
ZVdpdGhOYW1lc3BhY2UgPSAoJHBvZFR5cGUgZXEgImZsb2F0IikgPyAiJHBvZFR5cGUiIDogIldl
YkNvcmU6OiRwb2RUeXBlIjsKKyAgICAgICAgJHBvZFR5cGVXaXRoTmFtZXNwYWNlID0gKCRwb2RU
eXBlIGVxICJkb3VibGUiKSA/ICIkcG9kVHlwZSIgOiAiV2ViQ29yZTo6JHBvZFR5cGUiOwogICAg
IH0KIAogICAgICMgLSBBZGQgZGVmYXVsdCBoZWFkZXIgdGVtcGxhdGUuCkBAIC04MzUsNyArODQy
LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgaWYgKCEkcG9kVHlwZSkg
ewogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siJGltcGxDbGFzc05hbWUuaCJ9ID0gMTsKICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IiRwb2RUeXBlLmgifSA9
IDEgdW5sZXNzICRwb2RUeXBlIGVxICJmbG9hdCI7CisgICAgICAgICAgICAkaW1wbEluY2x1ZGVz
eyIkcG9kVHlwZS5oIn0gPSAxIHVubGVzcyAkcG9kVHlwZSBlcSAiZG91YmxlIjsKICAgICAgICAg
fQogICAgIH0gCiAKQEAgLTk0MSw3ICs5NDgsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICAgICAgbXkgJGdldHRlckNvbnRlbnRUYWlsID0gIikiOwogCiAgICAgICAgICAg
ICAjIFNwZWNpYWwgY2FzZSBmb3IgRE9NU1ZHTnVtYmVyCi0gICAgICAgICAgICBpZiAoJHBvZFR5
cGUgYW5kICRwb2RUeXBlIGVxICJmbG9hdCIpIHsKKyAgICAgICAgICAgIGlmICgkcG9kVHlwZSBh
bmQgJHBvZFR5cGUgZXEgImRvdWJsZSIpIHsKICAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVu
dEhlYWQgPSAiKklNUEwiOwogICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50VGFpbCA9ICIi
OwogICAgICAgICAgICAgfQpAQCAtOTkwLDcgKzk5Nyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgICAgICAgICAgICAgJGdldHRlckNvbnRlbnRUYWlsIC49ICIpXSI7CiAgICAg
ICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDb252ZXJ0RnJvbVN0cmluZyJ9KSB7CiAgICAgICAgICAgICAgICAgJGdldHRlckNvbnRl
bnRUYWlsIC49ICIudG9JbnQoKSI7Ci0gICAgICAgICAgICB9IGVsc2lmICgkaWRsVHlwZSBlcSAi
UkdCQ29sb3IiIG9yICRpZGxUeXBlIGVxICJTVkdQb2ludCIgb3IgJGlkbFR5cGUgZXEgIlNWR1Jl
Y3QiIG9yICRpZGxUeXBlIGVxICJTVkdOdW1iZXIiKSB7CisgICAgICAgICAgICB9IGVsc2lmICgk
Y29kZUdlbmVyYXRvci0+SXNQb2RUeXBlKCRpZGxUeXBlKSkgewogICAgICAgICAgICAgICAgICRn
ZXR0ZXJDb250ZW50SGVhZCA9ICJbJGF0dHJpYnV0ZVR5cGVTYW5zUHRyICR0eXBlTWFrZXI6IiAu
ICRnZXR0ZXJDb250ZW50SGVhZDsKICAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudFRhaWwg
Lj0gIl0iOwogICAgICAgICAgICAgfSBlbHNpZiAoJHR5cGVNYWtlciBuZSAiIikgewpAQCAtMTA1
MCw5ICsxMDU3LDkgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUKCRhcmdOYW1lKTtcblxuIik7CiAg
ICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgIyBTcGVjaWFsIGNhc2UgZm9yIERP
TVNWR051bWJlcgogICAgICAgICAgICAgICAgIGlmICgkcG9kVHlwZSkgewotICAgICAgICAgICAg
ICAgICAgICBpZiAoJHBvZFR5cGUgZXEgImZsb2F0IikgeworICAgICAgICAgICAgICAgICAgICAj
IFNwZWNpYWwgY2FzZSBmb3IgRE9NU1ZHTnVtYmVyCisgICAgICAgICAgICAgICAgICAgIGlmICgk
cG9kVHlwZSBlcSAiZG91YmxlIikgewogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgKklNUEwgPSAkYXJnO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBJ
TVBMLT4kYXR0cmlidXRlTmFtZSgkYXJnKTtcbiIpOwpAQCAtMTEyMCw4ICsxMTI3LDYgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAkcGFyYW1ldGVySW5kZXgr
KzsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgcHVzaChAcGFyYW1ldGVyTmFtZXMsICJl
YyIpIGlmICRyYWlzZXNFeGNlcHRpb25zOwotCiAgICAgICAgICAgICBteSBAZnVuY3Rpb25Db250
ZW50ID0gKCk7CiAgICAgICAgICAgICBteSAkY2FsbGVyID0gIklNUEwiOwogCkBAIC0xMTUxLDEw
ICsxMTU2LDI4IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAg
JGNhbGxlciA9ICJkdiI7CiAgICAgICAgICAgICB9CiAKLQotICAgICAgICAgICAgbXkgJGNvbnRl
bnQgPSAkY2FsbGVyIC4gIi0+IiAuICRmdW5jdGlvbk5hbWUgLiAiKCIgLiBqb2luKCIsICIsIEBw
YXJhbWV0ZXJOYW1lcykgLiAiKSI7Ci0KLSAgICAgICAgICAgIGlmICgkcmV0dXJuVHlwZSBlcSAi
dm9pZCIpIHsKKyAgICAgICAgICAgICMgRklYTUUhIFdlIG5lZWQgW0N1c3RvbV0gc3VwcG9ydCBm
b3IgT2JqQywgdG8gbW92ZSB0aGVzZSBoYWNrcyBpbnRvIERPTVNWR01hdHJpeEN1c3RvbS5tbQor
ICAgICAgICAgICAgbXkgJHN2Z01hdHJpeFJvdGF0ZUZyb21WZWN0b3IgPSAoJHBvZFR5cGUgYW5k
ICRwb2RUeXBlIGVxICJBZmZpbmVUcmFuc2Zvcm0iIGFuZCAkZnVuY3Rpb25OYW1lIGVxICJyb3Rh
dGVGcm9tVmVjdG9yIik7CisgICAgICAgICAgICBteSAkc3ZnTWF0cml4SW52ZXJzZSA9ICgkcG9k
VHlwZSBhbmQgJHBvZFR5cGUgZXEgIkFmZmluZVRyYW5zZm9ybSIgYW5kICRmdW5jdGlvbk5hbWUg
ZXEgImludmVyc2UiKTsKKworICAgICAgICAgICAgcHVzaChAcGFyYW1ldGVyTmFtZXMsICJlYyIp
IGlmICRyYWlzZXNFeGNlcHRpb25zIGFuZCAhKCRzdmdNYXRyaXhSb3RhdGVGcm9tVmVjdG9yIHx8
ICRzdmdNYXRyaXhJbnZlcnNlKTsKKyAgICAgICAgICAgIG15ICRjb250ZW50ID0gJGNhbGxlciAu
ICItPiIgLiAkZnVuY3Rpb25OYW1lIC4gIigiIC4gam9pbigiLCAiLCBAcGFyYW1ldGVyTmFtZXMp
IC4gIikiOyAKKworICAgICAgICAgICAgaWYgKCRzdmdNYXRyaXhSb3RhdGVGcm9tVmVjdG9yKSB7
CisgICAgICAgICAgICAgICAgIyBTcGVjaWFsIGNhc2Ugd2l0aCByb3RhdGVGcm9tVmVjdG9yICYg
U1ZHTWF0cml4ICAgICAgICAKKyAgICAgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQs
ICIgICAgJGV4Y2VwdGlvbkluaXRcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9u
Q29udGVudCwgIiAgICBpZiAoeCA9PSAwLjAgfHwgeSA9PSAwLjApXG4iKTsKKyAgICAgICAgICAg
ICAgICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIgICAgICAgIGVjID0gV2ViQ29yZTo6U1ZHX0lO
VkFMSURfVkFMVUVfRVJSO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAZnVuY3Rpb25Db250
ZW50LCAiICAgICRleGNlcHRpb25SYWlzZU9uRXJyb3JcbiIpOworICAgICAgICAgICAgICAgIHB1
c2goQGZ1bmN0aW9uQ29udGVudCwgIiAgICByZXR1cm4gW0RPTVNWR01hdHJpeCBfU1ZHTWF0cml4
V2l0aDokY29udGVudF07XG4iKTsKKyAgICAgICAgICAgIH0gZWxzaWYgKCRzdmdNYXRyaXhJbnZl
cnNlKSB7CisgICAgICAgICAgICAgICAgIyBTcGVjaWFsIGNhc2Ugd2l0aCBpbnZlcnNlICYgU1ZH
TWF0cml4CisgICAgICAgICAgICAgICAgcHVzaChAZnVuY3Rpb25Db250ZW50LCAiICAgICRleGNl
cHRpb25Jbml0XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIg
ICAgaWYgKCEkY2FsbGVyLT5pc0ludmVydGlibGUoKSlcbiIpOworICAgICAgICAgICAgICAgIHB1
c2goQGZ1bmN0aW9uQ29udGVudCwgIiAgICAgICAgZWMgPSBXZWJDb3JlOjpTVkdfTUFUUklYX05P
VF9JTlZFUlRBQkxFO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAZnVuY3Rpb25Db250ZW50
LCAiICAgICRleGNlcHRpb25SYWlzZU9uRXJyb3JcbiIpOworICAgICAgICAgICAgICAgIHB1c2go
QGZ1bmN0aW9uQ29udGVudCwgIiAgICByZXR1cm4gW0RPTVNWR01hdHJpeCBfU1ZHTWF0cml4V2l0
aDokY29udGVudF07XG4iKTsKKyAgICAgICAgICAgIH0gZWxzaWYgKCRyZXR1cm5UeXBlIGVxICJ2
b2lkIikgewogICAgICAgICAgICAgICAgICMgU3BlY2lhbCBjYXNlICd2b2lkJyByZXR1cm4gdHlw
ZS4KICAgICAgICAgICAgICAgICBpZiAoJHJhaXNlc0V4Y2VwdGlvbnMpIHsKICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAZnVuY3Rpb25Db250ZW50LCAiICAgICRleGNlcHRpb25Jbml0XG4iKTsK
QEAgLTExOTIsNyArMTIxNSwxMCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAg
ICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgIyBTdXJyb3VuZCBnZXR0ZXIg
d2l0aCBUeXBlTWFrZXIKLSAgICAgICAgICAgICAgICAgICAgaWYgKCRyZXR1cm5UeXBlQ2xhc3Mg
ZXEgIkRPTVJHQkNvbG9yIiBvciAkcmV0dXJuVHlwZUNsYXNzIGVxICJET01TVkdQb2ludCIgb3Ig
JHJldHVyblR5cGVDbGFzcyBlcSAiRE9NU1ZHUmVjdCIgb3IgJHJldHVyblR5cGVDbGFzcyBlcSAi
RE9NU1ZHTnVtYmVyIikgeworICAgICAgICAgICAgICAgICAgICBteSAkaWRsVHlwZSA9ICRyZXR1
cm5UeXBlQ2xhc3M7CisgICAgICAgICAgICAgICAgICAgICRpZGxUeXBlID1+IHMvXkRPTS8vOwor
CisgICAgICAgICAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNQb2RUeXBlKCRpZGxU
eXBlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgPSAiWyRyZXR1cm5UeXBl
Q2xhc3MgJHR5cGVNYWtlcjoiIC4gJGNvbnRlbnQgLiAiXSI7CiAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGVudCA9ICJbJHJldHVyblR5
cGVDbGFzcyAkdHlwZU1ha2VyOldURjo6Z2V0UHRyKCIgLiAkY29udGVudCAuICIpXSI7CkBAIC0x
Mjg2LDggKzEzMTIsMTMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBpZiAoJGNv
ZGVHZW5lcmF0b3ItPklzU1ZHQW5pbWF0ZWRUeXBlKCRpbnRlcmZhY2VOYW1lKSkgewogICAgICAg
ICBwdXNoKEBpbnRlbmFsSGVhZGVyQ29udGVudCwgIiNpbXBvcnQgPFdlYkNvcmUvU1ZHQW5pbWF0
ZWRUZW1wbGF0ZS5oPlxuXG4iKTsKICAgICB9IGVsc2UgewotICAgICAgICBwdXNoKEBpbnRlbmFs
SGVhZGVyQ29udGVudCwgIlxubmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyAkaW1wbENsYXNzTmFt
ZTsgfVxuXG4iKTsKKyAgICAgICAgaWYgKCRwb2RUeXBlIGFuZCAkcG9kVHlwZSBuZSAiZG91Ymxl
IikgeworICAgICAgICAgICAgcHVzaChAaW50ZW5hbEhlYWRlckNvbnRlbnQsICJcbm5hbWVzcGFj
ZSBXZWJDb3JlIHsgY2xhc3MgJHBvZFR5cGU7IH1cblxuIik7CisgICAgICAgIH0gZWxzZSB7IAor
ICAgICAgICAgICAgcHVzaChAaW50ZW5hbEhlYWRlckNvbnRlbnQsICJcbm5hbWVzcGFjZSBXZWJD
b3JlIHsgY2xhc3MgJGltcGxDbGFzc05hbWU7IH1cblxuIik7CisgICAgICAgIH0KICAgICB9CisK
ICAgICBwdXNoKEBpbnRlbmFsSGVhZGVyQ29udGVudCwgIlxAaW50ZXJmYWNlICRjbGFzc05hbWUg
KFdlYkNvcmVJbnRlcm5hbClcbiIpOwogICAgIHB1c2goQGludGVuYWxIZWFkZXJDb250ZW50LCAk
dHlwZUdldHRlclNpZyAuICI7XG4iKTsKICAgICBwdXNoKEBpbnRlbmFsSGVhZGVyQ29udGVudCwg
JHR5cGVNYWtlclNpZyAuICI7XG4iKTsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvbWlzYy9LU1ZHVGlt
ZVNjaGVkdWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9taXNjL0tTVkdUaW1l
U2NoZWR1bGVyLmNwcAkocmV2aXNpb24gMTgxNzYpCisrKyBXZWJDb3JlL2tzdmcyL21pc2MvS1NW
R1RpbWVTY2hlZHVsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2IEBACiAjaW5j
bHVkZSAiU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zv
cm1MaXN0LmgiCiAjaW5jbHVkZSAiU1ZHRE9NSW1wbGVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJT
VkdNYXRyaXguaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZEVs
ZW1lbnQuaCIKICNpbmNsdWRlICJTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oIgpJbmRl
eDogV2ViQ29yZS9rc3ZnMi9taXNjL1NWR0ltYWdlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2tzdmcyL21pc2MvU1ZHSW1hZ2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxODE3NikKKysr
IFdlYkNvcmUva3N2ZzIvbWlzYy9TVkdJbWFnZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDEwICsyNiw5IEBACiAjaW5jbHVkZSAiRG9jTG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKIAotI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHSW1hZ2VFbGVtZW50
LmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCi0jaW5jbHVkZSAiU1ZHTWF0cml4LmgiCisjaW5j
bHVkZSAiU1ZHTmFtZXMuaCIKIAogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAKSW5kZXg6IFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDE4MTc2KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAKICNpbmNsdWRlICJL
U1ZHVGltZVNjaGVkdWxlci5oIgogI2luY2x1ZGUgIlNWR0FuZ2xlLmgiCi0jaW5jbHVkZSAiU1ZH
TWF0cml4LmgiCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCiAj
aW5jbHVkZSAiU1ZHVHJhbnNmb3JtLmgiCkBAIC0xMzksMTAgKzEzOSwxMCBAQCB2b2lkIFNWR0Fu
aW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpoYW5kbGVUCiAgICAgICAgICAgICAgICAgaWYgKCFtX2Zy
b21UcmFuc2Zvcm0pCiAgICAgICAgICAgICAgICAgICAgIG1fZnJvbVRyYW5zZm9ybSA9IG5ldyBT
VkdUcmFuc2Zvcm0oKTsKIAotICAgICAgICAgICAgICAgIFNWR01hdHJpeCogYnlNYXRyaXggPSBt
X3RvVHJhbnNmb3JtLT5tYXRyaXgoKTsKLSAgICAgICAgICAgICAgICBTVkdNYXRyaXgqIGZyb21N
YXRyaXggPSBtX2Zyb21UcmFuc2Zvcm0tPm1hdHJpeCgpOworICAgICAgICAgICAgICAgIEFmZmlu
ZVRyYW5zZm9ybSBieU1hdHJpeCA9IG1fdG9UcmFuc2Zvcm0tPm1hdHJpeCgpOworICAgICAgICAg
ICAgICAgIEFmZmluZVRyYW5zZm9ybSBmcm9tTWF0cml4ID0gbV9mcm9tVHJhbnNmb3JtLT5tYXRy
aXgoKTsKIAotICAgICAgICAgICAgICAgIGJ5TWF0cml4LT5tdWx0aXBseShmcm9tTWF0cml4KTsK
KyAgICAgICAgICAgICAgICBieU1hdHJpeCAqPSBmcm9tTWF0cml4OwogCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0xODYsOCArMTg2LDggQEAgdm9pZCBTVkdBbmlt
YXRlVHJhbnNmb3JtRWxlbWVudDo6aGFuZGxlVAogICAgICAgICAgICAgaWYgKCF2YWx1ZTEuaXNF
bXB0eSgpICYmICF2YWx1ZTIuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgYm9vbCBhcHBs
eSA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGlmIChtX3RvVHJhbnNmb3JtICYmIG1fZnJvbVRy
YW5zZm9ybSkgeyAgICAKLSAgICAgICAgICAgICAgICAgICAgcVRvTWF0cml4ID0gbV90b1RyYW5z
Zm9ybS0+bWF0cml4KCktPm1hdHJpeCgpOwotICAgICAgICAgICAgICAgICAgICBxRnJvbU1hdHJp
eCA9IG1fZnJvbVRyYW5zZm9ybS0+bWF0cml4KCktPm1hdHJpeCgpOworICAgICAgICAgICAgICAg
ICAgICBxVG9NYXRyaXggPSBtX3RvVHJhbnNmb3JtLT5tYXRyaXgoKTsKKyAgICAgICAgICAgICAg
ICAgICAgcUZyb21NYXRyaXggPSBtX2Zyb21UcmFuc2Zvcm0tPm1hdHJpeCgpOwogICAgICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgYXBwbHkgPSB0cnVlOwogICAgICAgICAg
ICAgICAgICAgICB1c2VUaW1lUGVyY2VudGFnZSA9IDEuMDsKQEAgLTIwOSwzNiArMjA5LDM4IEBA
IHZvaWQgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmhhbmRsZVQKICAgICAgICAgICAgIHVz
ZVRpbWVQZXJjZW50YWdlID0gY2FsY3VsYXRlUmVsYXRpdmVUaW1lUGVyY2VudGFnZSh0aW1lUGVy
Y2VudGFnZSwgbV9jdXJyZW50SXRlbSk7CiAgICAgfQogCi0gICAgaWYgKG1fdG9UcmFuc2Zvcm0g
JiYgbV90b1RyYW5zZm9ybS0+bWF0cml4KCkgJiYgcVRvTWF0cml4LmlzSWRlbnRpdHkoKSkKLSAg
ICAgICAgcVRvTWF0cml4ID0gbV90b1RyYW5zZm9ybS0+bWF0cml4KCktPm1hdHJpeCgpOworICAg
IGlmIChtX3RvVHJhbnNmb3JtICYmIHFUb01hdHJpeC5pc0lkZW50aXR5KCkpCisgICAgICAgIHFU
b01hdHJpeCA9IG1fdG9UcmFuc2Zvcm0tPm1hdHJpeCgpOwogCi0gICAgaWYgKG1fZnJvbVRyYW5z
Zm9ybSAmJiBtX2Zyb21UcmFuc2Zvcm0tPm1hdHJpeCgpICYmIHFGcm9tTWF0cml4LmlzSWRlbnRp
dHkoKSkKLSAgICAgICAgcUZyb21NYXRyaXggPSBtX2Zyb21UcmFuc2Zvcm0tPm1hdHJpeCgpLT5t
YXRyaXgoKTsKKyAgICBpZiAobV9mcm9tVHJhbnNmb3JtICYmIHFGcm9tTWF0cml4LmlzSWRlbnRp
dHkoKSkKKyAgICAgICAgcUZyb21NYXRyaXggPSBtX2Zyb21UcmFuc2Zvcm0tPm1hdHJpeCgpOwog
Ci0gICAgaWYgKCFtX3RyYW5zZm9ybU1hdHJpeCkKKy8qIEZJWE1FOiBUaGlzIGxvZ2ljIG5lZWRz
IGZpeGluZywgd2FzIGJyb2tlbiBiZWZvcmUsIGlzIHN0aWxsIGJyb2tlbi4KKyAgICBpZiAobV90
cmFuc2Zvcm1NYXRyaXgpCiAgICAgICAgIG1fdHJhbnNmb3JtTWF0cml4ID0gbmV3IFNWR01hdHJp
eCgpOwogICAgIGVsc2UgewotICAgICAgICBtX3RyYW5zZm9ybU1hdHJpeC0+cmVzZXQoKTsKKyAg
ICAgICAgbV90cmFuc2Zvcm1NYXRyaXgucmVzZXQoKTsKIAogICAgICAgICBpZiAoaXNBY2N1bXVs
YXRlZCgpICYmIHJlcGVhdGlvbnMoKSAhPSAwLjAgJiYgbV9sYXN0TWF0cml4KQogICAgICAgICAg
ICAgbV90cmFuc2Zvcm1NYXRyaXgtPm11bHRpcGx5KG1fbGFzdE1hdHJpeC5nZXQoKSk7CiAgICAg
fQotICAgIAorICovICAgCisKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgICAgICBjYXNlIFNW
R1RyYW5zZm9ybTo6U1ZHX1RSQU5TRk9STV9UUkFOU0xBVEU6CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGRvdWJsZSBkeCA9ICgocVRvTWF0cml4LmR4KCkgLSBxRnJvbU1hdHJpeC5keCgpKSAqIHVz
ZVRpbWVQZXJjZW50YWdlKSArIHFGcm9tTWF0cml4LmR4KCk7Ci0gICAgICAgICAgICBkb3VibGUg
ZHkgPSAoKHFUb01hdHJpeC5keSgpIC0gcUZyb21NYXRyaXguZHkoKSkgKiB1c2VUaW1lUGVyY2Vu
dGFnZSkgKyBxRnJvbU1hdHJpeC5keSgpOworICAgICAgICAgICAgZG91YmxlIGR4ID0gKChxVG9N
YXRyaXguZSgpIC0gcUZyb21NYXRyaXguZSgpKSAqIHVzZVRpbWVQZXJjZW50YWdlKSArIHFGcm9t
TWF0cml4LmUoKTsKKyAgICAgICAgICAgIGRvdWJsZSBkeSA9ICgocVRvTWF0cml4LmYoKSAtIHFG
cm9tTWF0cml4LmYoKSkgKiB1c2VUaW1lUGVyY2VudGFnZSkgKyBxRnJvbU1hdHJpeC5mKCk7CiAK
LSAgICAgICAgICAgIG1fdHJhbnNmb3JtTWF0cml4LT50cmFuc2xhdGUoZHgsIGR5KTsKKyAgICAg
ICAgICAgIG1fdHJhbnNmb3JtTWF0cml4LnRyYW5zbGF0ZShkeCwgZHkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBTVkdUcmFuc2Zvcm06OlNWR19UUkFOU0ZP
Uk1fU0NBTEU6CiAgICAgICAgIHsKLSAgICAgICAgICAgIGRvdWJsZSBzeCA9ICgocVRvTWF0cml4
Lm0xMSgpIC0gcUZyb21NYXRyaXgubTExKCkpICogdXNlVGltZVBlcmNlbnRhZ2UpICsgcUZyb21N
YXRyaXgubTExKCk7Ci0gICAgICAgICAgICBkb3VibGUgc3kgPSAoKHFUb01hdHJpeC5tMjIoKSAt
IHFGcm9tTWF0cml4Lm0yMigpKSAqIHVzZVRpbWVQZXJjZW50YWdlKSArIHFGcm9tTWF0cml4Lm0y
MigpOworICAgICAgICAgICAgZG91YmxlIHN4ID0gKChxVG9NYXRyaXguYSgpIC0gcUZyb21NYXRy
aXguYSgpKSAqIHVzZVRpbWVQZXJjZW50YWdlKSArIHFGcm9tTWF0cml4LmEoKTsKKyAgICAgICAg
ICAgIGRvdWJsZSBzeSA9ICgocVRvTWF0cml4LmQoKSAtIHFGcm9tTWF0cml4LmQoKSkgKiB1c2VU
aW1lUGVyY2VudGFnZSkgKyBxRnJvbU1hdHJpeC5kKCk7CiAKLSAgICAgICAgICAgIG1fdHJhbnNm
b3JtTWF0cml4LT5zY2FsZU5vblVuaWZvcm0oc3gsIHN5KTsKKyAgICAgICAgICAgIG1fdHJhbnNm
b3JtTWF0cml4LnNjYWxlKHN4LCBzeSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIFNWR1RyYW5zZm9ybTo6U1ZHX1RSQU5TRk9STV9ST1RBVEU6CkBAIC0yNjUs
MjUgKzI2NywyNSBAQCB2b2lkIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpoYW5kbGVUCiAg
ICAgICAgICAgICBkb3VibGUgY3ggPSAodG9DeCAtIGZyb21DeCkgKiB1c2VUaW1lUGVyY2VudGFn
ZSArIGZyb21DeDsKICAgICAgICAgICAgIGRvdWJsZSBjeSA9ICh0b0N5IC0gZnJvbUN5KSAqIHVz
ZVRpbWVQZXJjZW50YWdlICsgZnJvbUN5OwogCi0gICAgICAgICAgICBtX3RyYW5zZm9ybU1hdHJp
eC0+dHJhbnNsYXRlKGN4LCBjeSk7Ci0gICAgICAgICAgICBtX3RyYW5zZm9ybU1hdHJpeC0+cm90
YXRlKGFuZ2xlKTsKLSAgICAgICAgICAgIG1fdHJhbnNmb3JtTWF0cml4LT50cmFuc2xhdGUoLWN4
LCAtY3kpOworICAgICAgICAgICAgbV90cmFuc2Zvcm1NYXRyaXgudHJhbnNsYXRlKGN4LCBjeSk7
CisgICAgICAgICAgICBtX3RyYW5zZm9ybU1hdHJpeC5yb3RhdGUoYW5nbGUpOworICAgICAgICAg
ICAgbV90cmFuc2Zvcm1NYXRyaXgudHJhbnNsYXRlKC1jeCwgLWN5KTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgU1ZHVHJhbnNmb3JtOjpTVkdfVFJBTlNGT1JN
X1NLRVdYOgogICAgICAgICB7Ci0gICAgICAgICAgICBkb3VibGUgc3ggPSAoU1ZHQW5nbGU6OnRv
ZGVnKGF0YW4ocVRvTWF0cml4Lm0yMSgpKSAtIGF0YW4ocUZyb21NYXRyaXgubTIxKCkpKSAqCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgdXNlVGltZVBlcmNlbnRhZ2UpICsgU1ZHQW5nbGU6OnRv
ZGVnKGF0YW4ocUZyb21NYXRyaXgubTIxKCkpKTsKKyAgICAgICAgICAgIGRvdWJsZSBzeCA9IChT
VkdBbmdsZTo6dG9kZWcoYXRhbihxVG9NYXRyaXguYygpKSAtIGF0YW4ocUZyb21NYXRyaXguYygp
KSkgKgorICAgICAgICAgICAgICAgICAgICAgICAgIHVzZVRpbWVQZXJjZW50YWdlKSArIFNWR0Fu
Z2xlOjp0b2RlZyhhdGFuKHFGcm9tTWF0cml4LmMoKSkpOwogCi0gICAgICAgICAgICBtX3RyYW5z
Zm9ybU1hdHJpeC0+c2tld1goc3gpOworICAgICAgICAgICAgbV90cmFuc2Zvcm1NYXRyaXguc2hl
YXIoc3gsIDEuMCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IFNWR1RyYW5zZm9ybTo6U1ZHX1RSQU5TRk9STV9TS0VXWToKICAgICAgICAgewotICAgICAgICAg
ICAgZG91YmxlIHN5ID0gKFNWR0FuZ2xlOjp0b2RlZyhhdGFuKHFUb01hdHJpeC5tMTIoKSkgLSBh
dGFuKHFGcm9tTWF0cml4Lm0xMigpKSkgKgotICAgICAgICAgICAgICAgICAgICAgICAgIHVzZVRp
bWVQZXJjZW50YWdlKSArIFNWR0FuZ2xlOjp0b2RlZyhhdGFuKHFGcm9tTWF0cml4Lm0xMigpKSk7
CisgICAgICAgICAgICBkb3VibGUgc3kgPSAoU1ZHQW5nbGU6OnRvZGVnKGF0YW4ocVRvTWF0cml4
LmIoKSkgLSBhdGFuKHFGcm9tTWF0cml4LmIoKSkpICoKKyAgICAgICAgICAgICAgICAgICAgICAg
ICB1c2VUaW1lUGVyY2VudGFnZSkgKyBTVkdBbmdsZTo6dG9kZWcoYXRhbihxRnJvbU1hdHJpeC5i
KCkpKTsKIAotICAgICAgICAgICAgbV90cmFuc2Zvcm1NYXRyaXgtPnNrZXdZKHN5KTsKKyAgICAg
ICAgICAgIG1fdHJhbnNmb3JtTWF0cml4LnNoZWFyKDEuMCwgc3kpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTI5NSwxMCArMjk3LDEwIEBAIHZv
aWQgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmhhbmRsZVQKICAgICB7CiAgICAgICAgIGlm
ICgobV9yZXBlYXRDb3VudCA+IDAgJiYgbV9yZXBlYXRpb25zIDwgbV9yZXBlYXRDb3VudCAtIDEp
IHx8IGlzSW5kZWZpbml0ZShtX3JlcGVhdENvdW50KSkKICAgICAgICAgewotICAgICAgICAgICAg
bV9sYXN0TWF0cml4ID0gbmV3IFNWR01hdHJpeCgpOwotICAgICAgICAgICAgCi0gICAgICAgICAg
ICBpZiAobV90cmFuc2Zvcm1NYXRyaXgpCi0gICAgICAgICAgICAgICAgbV9sYXN0TWF0cml4LT5j
b3B5KG1fdHJhbnNmb3JtTWF0cml4LmdldCgpKTsKKyAgICAgICAgICAgIG1fbGFzdE1hdHJpeC5y
ZXNldCgpOworCisgICAgICAgICAgICBpZiAoIW1fdHJhbnNmb3JtTWF0cml4LmlzSWRlbnRpdHko
KSkKKyAgICAgICAgICAgICAgICBtX2xhc3RNYXRyaXggPSBtX3RyYW5zZm9ybU1hdHJpeDsKIAog
ICAgICAgICAgICAgbV9yZXBlYXRpb25zKys7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0zMTQs
MTEgKzMxNiwxMSBAQCB2b2lkIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpoYW5kbGVUCiAg
ICAgICAgIG1faW5pdGlhbFRyYW5zZm9ybSA9IDA7CiAKICAgICAgICAgaWYgKCFpc0Zyb3plbigp
KSB7Ci0gICAgICAgICAgICBTVkdNYXRyaXgqIGluaXRpYWwgPSBpbml0aWFsTWF0cml4KCk7Ci0g
ICAgICAgICAgICBpZiAoaW5pdGlhbCkKKyAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBpbml0
aWFsID0gaW5pdGlhbE1hdHJpeCgpOworICAgICAgICAgICAgaWYgKCFpbml0aWFsLmlzSWRlbnRp
dHkoKSkKICAgICAgICAgICAgICAgICBtX3RyYW5zZm9ybU1hdHJpeCA9IGluaXRpYWw7CiAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV90cmFuc2Zvcm1NYXRyaXggPSBuZXcgU1ZH
TWF0cml4KCk7CisgICAgICAgICAgICAgICAgbV90cmFuc2Zvcm1NYXRyaXgucmVzZXQoKTsKICAg
ICAgICAgfQogICAgIH0KIH0KQEAgLTQxNCw4ICs0MTYsOCBAQCBSZWZQdHI8U1ZHVHJhbnNmb3Jt
PiBTVkdBbmltYXRlVHJhbnNmb3JtCiAKIHZvaWQgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6
OmNhbGN1bGF0ZVJvdGF0aW9uRnJvbU1hdHJpeChjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIG1hdHJp
eCwgZG91YmxlJiBhbmdsZSwgZG91YmxlJiBjeCwgZG91YmxlJiBjeSkgY29uc3QKIHsKLSAgICBk
b3VibGUgY29zYSA9IG1hdHJpeC5tMTEoKTsKLSAgICBkb3VibGUgc2luYSA9IC1tYXRyaXgubTIx
KCk7CisgICAgZG91YmxlIGNvc2EgPSBtYXRyaXguYSgpOworICAgIGRvdWJsZSBzaW5hID0gLW1h
dHJpeC5jKCk7CiAKICAgICBpZiAoY29zYSAhPSAxLjApCiAgICAgewpAQCAtNDI3LDggKzQyOSw4
IEBAIHZvaWQgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmNhbGN1bGEKICAgICAgICAgCiAg
ICAgICAgIGRvdWJsZSByZXMgPSAoMSAtIGNvc2EpICsgKChzaW5hICogc2luYSkgLyAoMSAtIGNv
c2EpKTsKICAgICAgICAgCi0gICAgICAgIGN4ID0gKG1hdHJpeC5keCgpIC0gKChzaW5hICogbWF0
cml4LmR5KCkpIC8gKDEgLSBjb3NhKSkpIC8gcmVzOwotICAgICAgICBjeSA9IChtYXRyaXguZHko
KSArICgoc2luYSAqIG1hdHJpeC5keCgpKSAvICgxIC0gY29zYSkpKSAvIHJlczsKKyAgICAgICAg
Y3ggPSAobWF0cml4LmUoKSAtICgoc2luYSAqIG1hdHJpeC5mKCkpIC8gKDEgLSBjb3NhKSkpIC8g
cmVzOworICAgICAgICBjeSA9IChtYXRyaXguZigpICsgKChzaW5hICogbWF0cml4LmUoKSkgLyAo
MSAtIGNvc2EpKSkgLyByZXM7CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQzOCwyOCAr
NDQwLDI1IEBAIHZvaWQgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmNhbGN1bGEKICAgICBh
bmdsZSA9IDAuMDsKIH0KIAotU1ZHTWF0cml4KiBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6
aW5pdGlhbE1hdHJpeCgpIGNvbnN0CitBZmZpbmVUcmFuc2Zvcm0gU1ZHQW5pbWF0ZVRyYW5zZm9y
bUVsZW1lbnQ6OmluaXRpYWxNYXRyaXgoKSBjb25zdAogewogICAgIGlmICghdGFyZ2V0RWxlbWVu
dCgpLT5pc1N0eWxlZFRyYW5zZm9ybWFibGUoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsKICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxl
bWVudCogdHJhbnNmb3JtID0gc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQqPih0YXJnZXRFbGVtZW50KCkpOwogICAgIFNWR1RyYW5zZm9ybUxpc3QqIHRyYW5zZm9ybUxp
c3QgPSAodHJhbnNmb3JtID8gdHJhbnNmb3JtLT50cmFuc2Zvcm1CYXNlVmFsdWUoKSA6IDApOwog
ICAgIGlmICghdHJhbnNmb3JtTGlzdCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCisgICAgICAg
IHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsKKwogICAgIFJlZlB0cjxTVkdUcmFuc2Zvcm0+IHJl
c3VsdCA9IHRyYW5zZm9ybUxpc3QtPmNvbmNhdGVuYXRlKCk7CiAgICAgaWYgKCFyZXN1bHQpCi0g
ICAgICAgIHJldHVybiAwOwotCi0gICAgU1ZHTWF0cml4KiByZXQgPSByZXN1bHQtPm1hdHJpeCgp
OwotICAgIHJldC0+cmVmKCk7CisgICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsKIAot
ICAgIHJldHVybiByZXQ7CisgICAgcmV0dXJuIHJlc3VsdC0+bWF0cml4KCk7CiB9CiAKLVNWR01h
dHJpeCogU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OnRyYW5zZm9ybU1hdHJpeCgpIGNvbnN0
CitBZmZpbmVUcmFuc2Zvcm0gU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OnRyYW5zZm9ybU1h
dHJpeCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdHJhbnNmb3JtTWF0cml4LmdldCgpOworICAg
IHJldHVybiBtX3RyYW5zZm9ybU1hdHJpeDsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5oCShyZXZpc2lvbiAxODE3NikKKysr
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0LDggKzQ0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBSZWZQ
dHI8U1ZHVHJhbnNmb3JtPiBwYXJzZVRyYW5zZm9ybVZhbHVlKGNvbnN0IFN0cmluZyYpIGNvbnN0
OwogICAgICAgICB2b2lkIGNhbGN1bGF0ZVJvdGF0aW9uRnJvbU1hdHJpeChjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mLCBkb3VibGUmIGFuZ2xlLCBkb3VibGUmIGN4LCBkb3VibGUmIGN5KSBjb25zdDsK
IAotICAgICAgICBTVkdNYXRyaXgqIGluaXRpYWxNYXRyaXgoKSBjb25zdDsKLSAgICAgICAgU1ZH
TWF0cml4KiB0cmFuc2Zvcm1NYXRyaXgoKSBjb25zdDsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3Jt
IGluaXRpYWxNYXRyaXgoKSBjb25zdDsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9y
bU1hdHJpeCgpIGNvbnN0OwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0
IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQpAQCAt
NTgsOCArNTgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFJlZlB0cjxTVkdUcmFu
c2Zvcm0+IG1fZnJvbVRyYW5zZm9ybTsKICAgICAgICAgUmVmUHRyPFNWR1RyYW5zZm9ybT4gbV9p
bml0aWFsVHJhbnNmb3JtOwogCi0gICAgICAgIFJlZlB0cjxTVkdNYXRyaXg+IG1fbGFzdE1hdHJp
eDsKLSAgICAgICAgUmVmUHRyPFNWR01hdHJpeD4gbV90cmFuc2Zvcm1NYXRyaXg7CisgICAgICAg
IEFmZmluZVRyYW5zZm9ybSBtX2xhc3RNYXRyaXg7CisgICAgICAgIEFmZmluZVRyYW5zZm9ybSBt
X3RyYW5zZm9ybU1hdHJpeDsKIAogICAgICAgICBtdXRhYmxlIGJvb2wgbV9yb3RhdGVTcGVjaWFs
Q2FzZSA6IDE7CiAgICAgICAgIGJvb2wgbV90b1JvdGF0ZVNwZWNpYWxDYXNlIDogMTsKSW5kZXg6
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gMTgxNzYp
CisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJS
ZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU1ZHSGVscGVyLmgiCi0jaW5jbHVkZSAiU1ZHTWF0cml4
LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdVbml0VHlwZXMuaCIKICNp
bmNsdWRlICJjc3NzdHlsZXNlbGVjdG9yLmgiCkBAIC04OCw3ICs4Nyw3IEBAIFNWR1Jlc291cmNl
KiBTVkdDbGlwUGF0aEVsZW1lbnQ6OmNhbnZhc1IKICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBw
YXRoU3R5bGUgPSBkb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCktPnN0eWxlRm9yRWxlbWVudChz
dHlsZWQsIGNsaXBQYXRoU3R5bGUpOwogICAgICAgICAgICAgUGF0aCBwYXRoRGF0YSA9IHN0eWxl
ZC0+dG9QYXRoRGF0YSgpOwogICAgICAgICAgICAgaWYgKGUtPmlzU3R5bGVkVHJhbnNmb3JtYWJs
ZSgpKQotICAgICAgICAgICAgICAgIHBhdGhEYXRhLnRyYW5zZm9ybShzdGF0aWNfY2FzdDxTVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCo+KGUpLT5sb2NhbE1hdHJpeCgpLT5tYXRyaXgoKSk7
CisgICAgICAgICAgICAgICAgcGF0aERhdGEudHJhbnNmb3JtKHN0YXRpY19jYXN0PFNWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50Kj4oZSktPmxvY2FsTWF0cml4KCkpOwogICAgICAgICAgICAg
aWYgKCFwYXRoRGF0YS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgbV9jbGlwcGVyLT5hZGRD
bGlwRGF0YShwYXRoRGF0YSwgcGF0aFN0eWxlLT5zdmdTdHlsZSgpLT5jbGlwUnVsZSgpLCBiYm94
KTsKICAgICAgICAgICAgIHBhdGhTdHlsZS0+ZGVyZWYodmlldygpLT5yZW5kZXJBcmVuYSgpKTsK
SW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcAkocmV2aXNpb24gMTgxNzYp
CisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04MiwxMSArODIsMTEgQEAgYmFpbF9vdXQ6OwogICAgIC8vIEZJWE1FOiBQZXIgdGhlIHNw
ZWMgd2UgYXJlIHN1cHBvc2VkIHRvIHNldCB0aGUgZG9jdW1lbnQgaW50byBhbiAiZXJyb3Igc3Rh
dGUiIGhlcmUuCiB9CiAKLVNWR01hdHJpeCogU1ZHRml0VG9WaWV3Qm94Ojp2aWV3Qm94VG9WaWV3
VHJhbnNmb3JtKGZsb2F0IHZpZXdXaWR0aCwgZmxvYXQgdmlld0hlaWdodCkgY29uc3QKK0FmZmlu
ZVRyYW5zZm9ybSBTVkdGaXRUb1ZpZXdCb3g6OnZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0oZmxvYXQg
dmlld1dpZHRoLCBmbG9hdCB2aWV3SGVpZ2h0KSBjb25zdAogewogICAgIEZsb2F0UmVjdCB2aWV3
Qm94UmVjdCA9IHZpZXdCb3goKTsKICAgICBpZiAoIXZpZXdCb3hSZWN0LndpZHRoKCkgfHwgIXZp
ZXdCb3hSZWN0LmhlaWdodCgpKQotICAgICAgICByZXR1cm4gU1ZHU1ZHRWxlbWVudDo6Y3JlYXRl
U1ZHTWF0cml4KCk7CisgICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsKIAogICAgIHJl
dHVybiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKCktPmdldENUTSh2aWV3Qm94UmVjdC54KCksCiAgICAg
ICAgICAgICB2aWV3Qm94UmVjdC55KCksIHZpZXdCb3hSZWN0LndpZHRoKCksIHZpZXdCb3hSZWN0
LmhlaWdodCgpLApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRml0VG9WaWV3Qm94LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRml0VG9WaWV3Qm94LmgJKHJldmlzaW9u
IDE4MTc2KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRml0VG9WaWV3Qm94LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNz
IEF0dHJpYnV0ZTsKLSAgICBjbGFzcyBTVkdNYXRyaXg7CisgICAgY2xhc3MgQWZmaW5lVHJhbnNm
b3JtOwogICAgIGNsYXNzIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW87CiAgICAgY2xhc3MgU3RyaW5n
SW1wbDsKIApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAg
Ly8gJ1NWR0ZpdFRvVmlld0JveCcgZnVuY3Rpb25zCiAgICAgICAgIHZvaWQgcGFyc2VWaWV3Qm94
KGNvbnN0IFN0cmluZyYpOwotICAgICAgICBTVkdNYXRyaXgqIHZpZXdCb3hUb1ZpZXdUcmFuc2Zv
cm0oZmxvYXQgdmlld1dpZHRoLCBmbG9hdCB2aWV3SGVpZ2h0KSBjb25zdDsKKyAgICAgICAgQWZm
aW5lVHJhbnNmb3JtIHZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0oZmxvYXQgdmlld1dpZHRoLCBmbG9h
dCB2aWV3SGVpZ2h0KSBjb25zdDsKIAogICAgICAgICBib29sIHBhcnNlTWFwcGVkQXR0cmlidXRl
KE1hcHBlZEF0dHJpYnV0ZSopOwogCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMZW5ndGhM
aXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMZW5ndGhMaXN0LmNw
cAkocmV2aXNpb24gMTgxNzYpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMZW5ndGhMaXN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNiBAQAogCiAjaWZkZWYgU1ZHX1NVUFBPUlQK
ICNpbmNsdWRlICJTVkdMZW5ndGhMaXN0LmgiCi0jaW5jbHVkZSAiU1ZHTWF0cml4LmgiCiAjaW5j
bHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4OiBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAJKHJldmlzaW9u
IDE4MTc2KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIlNWR1BhaW50U2Vy
dmVyTGluZWFyR3JhZGllbnQuaCIKICNpbmNsdWRlICJTVkdIZWxwZXIuaCIKICNpbmNsdWRlICJT
VkdMZW5ndGguaCIKLSNpbmNsdWRlICJTVkdNYXRyaXguaCIKICNpbmNsdWRlICJTVkdOYW1lcy5o
IgogI2luY2x1ZGUgIlNWR1RyYW5zZm9ybS5oIgogI2luY2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3Qu
aCIKQEAgLTg4LDcgKzg3LDcgQEAgdm9pZCBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmJ1aWxk
R3JhZAogICAgIFJlZlB0cjxTVkdQYWludFNlcnZlckxpbmVhckdyYWRpZW50PiBncmFkID0gV1RG
OjpzdGF0aWNfcG9pbnRlcl9jYXN0PFNWR1BhaW50U2VydmVyTGluZWFyR3JhZGllbnQ+KF9ncmFk
KTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gbWF0OwogICAgIGlmIChncmFkaWVudFRyYW5zZm9ybSgp
LT5udW1iZXJPZkl0ZW1zKCkgPiAwKQotICAgICAgICBtYXQgPSBncmFkaWVudFRyYW5zZm9ybSgp
LT5jb25zb2xpZGF0ZSgpLT5tYXRyaXgoKS0+bWF0cml4KCk7CisgICAgICAgIG1hdCA9IGdyYWRp
ZW50VHJhbnNmb3JtKCktPmNvbnNvbGlkYXRlKCktPm1hdHJpeCgpOwogCiAgICAgRGVwcmVjYXRl
ZFN0cmluZyByZWYgPSBocmVmKCkuZGVwcmVjYXRlZFN0cmluZygpOwogICAgIFJlZlB0cjxTVkdQ
YWludFNlcnZlcj4gcHNlcnZlciA9IGdldFBhaW50U2VydmVyQnlJZChkb2N1bWVudCgpLCByZWYu
bWlkKDEpKTsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xvY2F0YWJsZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTG9jYXRhYmxlLmNwcAkocmV2aXNpb24gMTgx
NzYpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMb2NhdGFibGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNCw4ICsyNCw5IEBACiAjaWZkZWYgU1ZHX1NVUFBPUlQKICNpbmNsdWRlICJTVkdMb2Nh
dGFibGUuaCIKIAorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIlJlbmRl
clBhdGguaCIKLSNpbmNsdWRlICJTVkdNYXRyaXguaCIKKyNpbmNsdWRlICJTVkdFeGNlcHRpb24u
aCIKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTg4LDU3ICs4OSw1NiBAQCBGbG9hdFJlY3QgU1ZHTG9jYXRhYmxlOjpnZXRCQm94KGNvbnN0IFNW
CiAgICAgcmV0dXJuIGJib3hSZWN0OwogfQogCi1TVkdNYXRyaXgqIFNWR0xvY2F0YWJsZTo6Z2V0
Q1RNKGNvbnN0IFNWR0VsZW1lbnQqIGVsZW1lbnQpCitBZmZpbmVUcmFuc2Zvcm0gU1ZHTG9jYXRh
YmxlOjpnZXRDVE0oY29uc3QgU1ZHRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBpZiAoIWVsZW1l
bnQpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7
CiAKLSAgICBTVkdNYXRyaXgqIGN0bSA9IFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR01hdHJpeCgp
OworICAgIEFmZmluZVRyYW5zZm9ybSBjdG07CiAKICAgICBOb2RlKiBwYXJlbnQgPSBlbGVtZW50
LT5wYXJlbnROb2RlKCk7CiAgICAgaWYgKHBhcmVudCAmJiBwYXJlbnQtPmlzRWxlbWVudE5vZGUo
KSkgewogICAgICAgICBTVkdFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gc3ZnX2R5bmFtaWNfY2Fz
dChwYXJlbnQpOwogICAgICAgICBpZiAocGFyZW50RWxlbWVudCAmJiBwYXJlbnRFbGVtZW50LT5p
c1N0eWxlZExvY2F0YWJsZSgpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8U1ZHTWF0cml4PiBwYXJl
bnRDVE0gPSBzdGF0aWNfY2FzdDxTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50Kj4ocGFyZW50RWxl
bWVudCktPmdldENUTSgpOwotICAgICAgICAgICAgY3RtLT5tdWx0aXBseShwYXJlbnRDVE0uZ2V0
KCkpOworICAgICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHBhcmVudENUTSA9IHN0YXRpY19jYXN0
PFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQqPihwYXJlbnRFbGVtZW50KS0+Z2V0Q1RNKCk7Cisg
ICAgICAgICAgICBjdG0gPSBwYXJlbnRDVE0gKiBjdG07CiAgICAgICAgIH0KICAgICB9CiAKICAg
ICByZXR1cm4gY3RtOwogfQogCi1TVkdNYXRyaXgqIFNWR0xvY2F0YWJsZTo6Z2V0U2NyZWVuQ1RN
KGNvbnN0IFNWR0VsZW1lbnQqIGVsZW1lbnQpCitBZmZpbmVUcmFuc2Zvcm0gU1ZHTG9jYXRhYmxl
OjpnZXRTY3JlZW5DVE0oY29uc3QgU1ZHRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBpZiAoIWVs
ZW1lbnQpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3Jt
KCk7CiAKLSAgICBTVkdNYXRyaXgqIGN0bSA9IFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR01hdHJp
eCgpOworICAgIEFmZmluZVRyYW5zZm9ybSBjdG07CiAKICAgICBOb2RlKiBwYXJlbnQgPSBlbGVt
ZW50LT5wYXJlbnROb2RlKCk7CiAgICAgaWYgKHBhcmVudCAmJiBwYXJlbnQtPmlzRWxlbWVudE5v
ZGUoKSkgewogICAgICAgICBTVkdFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gc3RhdGljX2Nhc3Q8
U1ZHRWxlbWVudCo+KHBhcmVudCk7CiAgICAgICAgIGlmIChwYXJlbnRFbGVtZW50LT5pc1N0eWxl
ZExvY2F0YWJsZSgpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8U1ZHTWF0cml4PiBwYXJlbnRDVE0g
PSBzdGF0aWNfY2FzdDxTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50Kj4ocGFyZW50RWxlbWVudCkt
PmdldFNjcmVlbkNUTSgpOwotICAgICAgICAgICAgY3RtLT5tdWx0aXBseShwYXJlbnRDVE0uZ2V0
KCkpOworICAgICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHBhcmVudENUTSA9IHN0YXRpY19jYXN0
PFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQqPihwYXJlbnRFbGVtZW50KS0+Z2V0U2NyZWVuQ1RN
KCk7CisgICAgICAgICAgICBjdG0gPSBwYXJlbnRDVE0gKiBjdG07CiAgICAgICAgIH0KICAgICB9
CiAKICAgICByZXR1cm4gY3RtOwogfQogCi1TVkdNYXRyaXgqIFNWR0xvY2F0YWJsZTo6Z2V0VHJh
bnNmb3JtVG9FbGVtZW50KFNWR0VsZW1lbnQqIHRhcmdldCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNv
bnN0CitBZmZpbmVUcmFuc2Zvcm0gU1ZHTG9jYXRhYmxlOjpnZXRUcmFuc2Zvcm1Ub0VsZW1lbnQo
U1ZHRWxlbWVudCogdGFyZ2V0LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKLSAgICBSZWZQ
dHI8U1ZHTWF0cml4PiBzdGFydGN0bShnZXRDVE0oKSk7Ci0gICAgU1ZHTWF0cml4KiBjdG0gPSBT
VkdTVkdFbGVtZW50OjpjcmVhdGVTVkdNYXRyaXgoKTsKLSAgICBjdG0tPm11bHRpcGx5KHN0YXJ0
Y3RtLmdldCgpKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gY3RtID0gZ2V0Q1RNKCk7CiAKICAgICBT
VkdFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gc3ZnX2R5bmFtaWNfY2FzdCh0YXJnZXQpOwogICAg
IGlmICh0YXJnZXRFbGVtZW50ICYmIHRhcmdldEVsZW1lbnQtPmlzU3R5bGVkTG9jYXRhYmxlKCkp
IHsKLSAgICAgICAgUmVmUHRyPFNWR01hdHJpeD4gdGFyZ2V0Q1RNID0gc3RhdGljX2Nhc3Q8U1ZH
U3R5bGVkTG9jYXRhYmxlRWxlbWVudCo+KHRhcmdldEVsZW1lbnQpLT5nZXRDVE0oKTsKLSAgICAg
ICAgdGFyZ2V0Q1RNLmdldCgpLT5pbnZlcnNlKGVjKTsKLSAgICAgICAgaWYgKGVjKQorICAgICAg
ICBBZmZpbmVUcmFuc2Zvcm0gdGFyZ2V0Q1RNID0gc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkTG9jYXRh
YmxlRWxlbWVudCo+KHRhcmdldEVsZW1lbnQpLT5nZXRDVE0oKTsKKyAgICAgICAgaWYgKCF0YXJn
ZXRDVE0uaXNJbnZlcnRpYmxlKCkpIHsKKyAgICAgICAgICAgIGVjID0gU1ZHX01BVFJJWF9OT1Rf
SU5WRVJUQUJMRTsKICAgICAgICAgICAgIHJldHVybiBjdG07Ci0gICAgICAgIGN0bS0+cG9zdE11
bHRpcGx5KHRhcmdldENUTS5nZXQoKSk7CisgICAgICAgIH0KKyAgICAgICAgY3RtICo9IHRhcmdl
dENUTS5pbnZlcnNlKCk7CiAgICAgfQogCiAgICAgcmV0dXJuIGN0bTsKSW5kZXg6IFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR0xvY2F0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR0xvY2F0YWJsZS5oCShyZXZpc2lvbiAxODE3NikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R0xvY2F0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw5ICsyOSw5IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorICAgIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKICAgICBjbGFzcyBGbG9h
dFJlY3Q7CiAgICAgY2xhc3MgU1ZHRWxlbWVudDsKLSAgICBjbGFzcyBTVkdNYXRyaXg7CiAgICAg
Y2xhc3MgU1ZHU3R5bGVkRWxlbWVudDsKIAogICAgIGNsYXNzIFNWR0xvY2F0YWJsZSB7CkBAIC00
NCwxNiArNDQsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIFNWR0Vs
ZW1lbnQqIGZhcnRoZXN0Vmlld3BvcnRFbGVtZW50KCkgY29uc3QgPSAwOwogCiAgICAgICAgIHZp
cnR1YWwgRmxvYXRSZWN0IGdldEJCb3goKSBjb25zdCA9IDA7Ci0gICAgICAgIHZpcnR1YWwgU1ZH
TWF0cml4KiBnZXRDVE0oKSBjb25zdCA9IDA7Ci0gICAgICAgIHZpcnR1YWwgU1ZHTWF0cml4KiBn
ZXRTY3JlZW5DVE0oKSBjb25zdCA9IDA7Ci0gICAgICAgIFNWR01hdHJpeCogZ2V0VHJhbnNmb3Jt
VG9FbGVtZW50KFNWR0VsZW1lbnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CisgICAgICAgIHZp
cnR1YWwgQWZmaW5lVHJhbnNmb3JtIGdldENUTSgpIGNvbnN0ID0gMDsKKyAgICAgICAgdmlydHVh
bCBBZmZpbmVUcmFuc2Zvcm0gZ2V0U2NyZWVuQ1RNKCkgY29uc3QgPSAwOworICAgICAgICBBZmZp
bmVUcmFuc2Zvcm0gZ2V0VHJhbnNmb3JtVG9FbGVtZW50KFNWR0VsZW1lbnQqLCBFeGNlcHRpb25D
b2RlJikgY29uc3Q7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHN0YXRpYyBTVkdFbGVtZW50
KiBuZWFyZXN0Vmlld3BvcnRFbGVtZW50KGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqKTsKICAgICAg
ICAgc3RhdGljIFNWR0VsZW1lbnQqIGZhcnRoZXN0Vmlld3BvcnRFbGVtZW50KGNvbnN0IFNWR1N0
eWxlZEVsZW1lbnQqKTsKICAgICAgICAgc3RhdGljIEZsb2F0UmVjdCBnZXRCQm94KGNvbnN0IFNW
R1N0eWxlZEVsZW1lbnQqKTsKLSAgICAgICAgc3RhdGljIFNWR01hdHJpeCogZ2V0Q1RNKGNvbnN0
IFNWR0VsZW1lbnQqKTsKLSAgICAgICAgc3RhdGljIFNWR01hdHJpeCogZ2V0U2NyZWVuQ1RNKGNv
bnN0IFNWR0VsZW1lbnQqKTsKKyAgICAgICAgc3RhdGljIEFmZmluZVRyYW5zZm9ybSBnZXRDVE0o
Y29uc3QgU1ZHRWxlbWVudCopOworICAgICAgICBzdGF0aWMgQWZmaW5lVHJhbnNmb3JtIGdldFNj
cmVlbkNUTShjb25zdCBTVkdFbGVtZW50Kik7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAJKHJldmlzaW9u
IDE4MTc2KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJTVkdGaXRUb1ZpZXdCb3guaCIK
ICNpbmNsdWRlICJTVkdIZWxwZXIuaCIKICNpbmNsdWRlICJTVkdMZW5ndGguaCIKLSNpbmNsdWRl
ICJTVkdNYXRyaXguaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1ByZXNl
cnZlQXNwZWN0UmF0aW8uaCIKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCkluZGV4OiBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdNYXRyaXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR01hdHJpeC5jcHAJKHJldmlzaW9uIDE4MTc2KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHTWF0cml4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwzMDUgKzAsMCBAQAotLyoKLSAgICBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5v
cmc+Ci0gICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+
Ci0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKLQotICAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRl
IDMzMCwKLSAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpZmRlZiBTVkdfU1VQUE9SVAotI2luY2x1ZGUgIlNWR01hdHJpeC5oIgotCi0j
aW5jbHVkZSAiU1ZHQW5nbGUuaCIKLSNpbmNsdWRlICJTVkdFeGNlcHRpb24uaCIKLSNpbmNsdWRl
ICJTVkdIZWxwZXIuaCIKLSNpbmNsdWRlIDxtYXRoLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwotCi1TVkdNYXRyaXg6OlNWR01hdHJpeCgpIDogU2hhcmVkPFNWR01hdHJpeD4oKQotewot
fQotCi1TVkdNYXRyaXg6OlNWR01hdHJpeChjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIG1hdCkKLSAg
ICA6IFNoYXJlZDxTVkdNYXRyaXg+KCkKLSAgICAsIG1fbWF0KG1hdCkKLXsKLX0KLQotU1ZHTWF0
cml4OjpTVkdNYXRyaXgoZG91YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUgYywgZG91YmxlIGQsIGRv
dWJsZSBlLCBkb3VibGUgZikgOiBTaGFyZWQ8U1ZHTWF0cml4PigpCi17Ci0gICAgbV9tYXQuc2V0
TWF0cml4KGEsIGIsIGMsIGQsIGUsIGYpOwotfQotCi1TVkdNYXRyaXg6On5TVkdNYXRyaXgoKQot
ewotfQotCi12b2lkIFNWR01hdHJpeDo6c2V0QShkb3VibGUgYSkKLXsKLSAgICBtX21hdC5zZXRN
YXRyaXgoYSwgbV9tYXQubTEyKCksIG1fbWF0Lm0yMSgpLCBtX21hdC5tMjIoKSwgbV9tYXQuZHgo
KSwgbV9tYXQuZHkoKSk7Ci19Ci0KLWRvdWJsZSBTVkdNYXRyaXg6OmEoKSBjb25zdAotewotICAg
IHJldHVybiBtX21hdC5tMTEoKTsKLX0KLQotdm9pZCBTVkdNYXRyaXg6OnNldEIoZG91YmxlIGIp
Ci17Ci0gICAgbV9tYXQuc2V0TWF0cml4KG1fbWF0Lm0xMSgpLCBiLCBtX21hdC5tMjEoKSwgbV9t
YXQubTIyKCksIG1fbWF0LmR4KCksIG1fbWF0LmR5KCkpOwotfQotCi1kb3VibGUgU1ZHTWF0cml4
OjpiKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9tYXQubTEyKCk7Ci19Ci0KLXZvaWQgU1ZHTWF0
cml4OjpzZXRDKGRvdWJsZSBjKQotewotICAgIG1fbWF0LnNldE1hdHJpeChtX21hdC5tMTEoKSwg
bV9tYXQubTEyKCksIGMsIG1fbWF0Lm0yMigpLCBtX21hdC5keCgpLCBtX21hdC5keSgpKTsKLX0K
LQotZG91YmxlIFNWR01hdHJpeDo6YygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbWF0Lm0yMSgp
OwotfQotCi12b2lkIFNWR01hdHJpeDo6c2V0RChkb3VibGUgZCkKLXsKLSAgICBtX21hdC5zZXRN
YXRyaXgobV9tYXQubTExKCksIG1fbWF0Lm0xMigpLCBtX21hdC5tMjEoKSwgZCwgbV9tYXQuZHgo
KSwgbV9tYXQuZHkoKSk7Ci19Ci0KLWRvdWJsZSBTVkdNYXRyaXg6OmQoKSBjb25zdAotewotICAg
IHJldHVybiBtX21hdC5tMjIoKTsKLX0KLQotdm9pZCBTVkdNYXRyaXg6OnNldEUoZG91YmxlIGUp
Ci17Ci0gICAgbV9tYXQuc2V0TWF0cml4KG1fbWF0Lm0xMSgpLCBtX21hdC5tMTIoKSwgbV9tYXQu
bTIxKCksIG1fbWF0Lm0yMigpLCBlLCBtX21hdC5keSgpKTsKLX0KLQotZG91YmxlIFNWR01hdHJp
eDo6ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbWF0LmR4KCk7Ci19Ci0KLXZvaWQgU1ZHTWF0
cml4OjpzZXRGKGRvdWJsZSBmKQotewotICAgIG1fbWF0LnNldE1hdHJpeChtX21hdC5tMTEoKSwg
bV9tYXQubTEyKCksIG1fbWF0Lm0yMSgpLCBtX21hdC5tMjIoKSwgbV9tYXQuZHgoKSwgZik7Ci19
Ci0KLWRvdWJsZSBTVkdNYXRyaXg6OmYoKSBjb25zdAotewotICAgIHJldHVybiBtX21hdC5keSgp
OwotfQotCi12b2lkIFNWR01hdHJpeDo6Y29weShjb25zdCBTVkdNYXRyaXgqIG90aGVyKQotewot
ICAgIG1fbWF0LnNldE1hdHJpeChvdGhlci0+bV9tYXQubTExKCksIG90aGVyLT5tX21hdC5tMTIo
KSwgb3RoZXItPm1fbWF0Lm0yMSgpLCBvdGhlci0+bV9tYXQubTIyKCksIG90aGVyLT5tX21hdC5k
eCgpLCBvdGhlci0+bV9tYXQuZHkoKSk7Ci19Ci0KLVNWR01hdHJpeCogU1ZHTWF0cml4Ojpwb3N0
TXVsdGlwbHkoY29uc3QgU1ZHTWF0cml4KiBzZWNvbmRNYXRyaXgpCi17Ci0gICAgQWZmaW5lVHJh
bnNmb3JtIHRlbXAoc2Vjb25kTWF0cml4LT5hKCksIHNlY29uZE1hdHJpeC0+YigpLCBzZWNvbmRN
YXRyaXgtPmMoKSwgc2Vjb25kTWF0cml4LT5kKCksIHNlY29uZE1hdHJpeC0+ZSgpLCBzZWNvbmRN
YXRyaXgtPmYoKSk7Ci0gICAgbV9tYXQgKj0gdGVtcDsKLSAgICByZXR1cm4gdGhpczsKLX0KLQot
U1ZHTWF0cml4KiBTVkdNYXRyaXg6OmludmVyc2UoRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAg
aWYgKCFtX21hdC5pc0ludmVydGlibGUoKSkKLSAgICAgICAgZWMgPSBTVkdfTUFUUklYX05PVF9J
TlZFUlRBQkxFOwotICAgIG1fbWF0ID0gbV9tYXQuaW52ZXJ0KCk7Ci0gICAgcmV0dXJuIHRoaXM7
Ci19Ci0KLVNWR01hdHJpeCogU1ZHTWF0cml4Ojpwb3N0VHJhbnNsYXRlKGRvdWJsZSB4LCAgZG91
YmxlIHkpCi17Ci0gICAgLy8gQ291bGQgb3B0aW1pc2UgdGhlc2UuCi0gICAgQWZmaW5lVHJhbnNm
b3JtIHRlbXA7Ci0gICAgdGVtcC50cmFuc2xhdGUoeCwgeSk7Ci0gICAgbV9tYXQgKj0gdGVtcDsK
LSAgICByZXR1cm4gdGhpczsKLX0KLQotU1ZHTWF0cml4KiBTVkdNYXRyaXg6OnBvc3RTY2FsZShk
b3VibGUgc2NhbGVGYWN0b3IpCi17Ci0gICAgQWZmaW5lVHJhbnNmb3JtIHRlbXA7Ci0gICAgdGVt
cC5zY2FsZShzY2FsZUZhY3Rvciwgc2NhbGVGYWN0b3IpOwotICAgIG1fbWF0ICo9IHRlbXA7Ci0g
ICAgcmV0dXJuIHRoaXM7Ci19Ci0KLVNWR01hdHJpeCogU1ZHTWF0cml4Ojpwb3N0U2NhbGVOb25V
bmlmb3JtKGRvdWJsZSBzY2FsZUZhY3RvclgsIGRvdWJsZSBzY2FsZUZhY3RvclkpCi17Ci0gICAg
QWZmaW5lVHJhbnNmb3JtIHRlbXA7Ci0gICAgdGVtcC5zY2FsZShzY2FsZUZhY3RvclgsIHNjYWxl
RmFjdG9yWSk7Ci0gICAgbV9tYXQgKj0gdGVtcDsKLSAgICByZXR1cm4gdGhpczsKLX0KLQotU1ZH
TWF0cml4KiBTVkdNYXRyaXg6OnBvc3RSb3RhdGUoZG91YmxlIGFuZ2xlKQotewotICAgIEFmZmlu
ZVRyYW5zZm9ybSB0ZW1wOwotICAgIHRlbXAucm90YXRlKGFuZ2xlKTsKLSAgICBtX21hdCAqPSB0
ZW1wOwotICAgIHJldHVybiB0aGlzOwotfQotCi1TVkdNYXRyaXgqIFNWR01hdHJpeDo6cG9zdFJv
dGF0ZUZyb21WZWN0b3IoZG91YmxlIHgsIGRvdWJsZSB5KQotewotICAgIEFmZmluZVRyYW5zZm9y
bSB0ZW1wOwotICAgIHRlbXAucm90YXRlKFNWR0FuZ2xlOjp0b2RlZyhhdGFuMih5LCB4KSkpOwot
ICAgIG1fbWF0ICo9IHRlbXA7Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0KLVNWR01hdHJpeCogU1ZH
TWF0cml4Ojpwb3N0RmxpcFgoKQotewotICAgIEFmZmluZVRyYW5zZm9ybSB0ZW1wKC0xLjBGLCAw
LjBGLCAwLjBGLCAxLjBGLCAwLjBGLCAwLjBGKTsKLSAgICBtX21hdCAqPSB0ZW1wOwotICAgIHJl
dHVybiB0aGlzOwotfQotCi1TVkdNYXRyaXgqIFNWR01hdHJpeDo6cG9zdEZsaXBZKCkKLXsKLSAg
ICBBZmZpbmVUcmFuc2Zvcm0gdGVtcCgxLjBGLCAwLjBGLCAwLjBGLCAtMS4wRiwgMC4wRiwgMC4w
Rik7Ci0gICAgbV9tYXQgKj0gdGVtcDsKLSAgICByZXR1cm4gdGhpczsKLX0KLQotU1ZHTWF0cml4
KiBTVkdNYXRyaXg6OnBvc3RTa2V3WChkb3VibGUgYW5nbGUpCi17Ci0gICAgQWZmaW5lVHJhbnNm
b3JtIHRlbXA7Ci0gICAgdGVtcC5zaGVhcih0YW4oU1ZHQW5nbGU6OnRvcmFkKGFuZ2xlKSksIDAu
MEYpOwotICAgIG1fbWF0ICo9IHRlbXA7Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0KLVNWR01hdHJp
eCogU1ZHTWF0cml4Ojpwb3N0U2tld1koZG91YmxlIGFuZ2xlKQotewotICAgIEFmZmluZVRyYW5z
Zm9ybSB0ZW1wOwotICAgIHRlbXAuc2hlYXIoMC4wRiwgdGFuKFNWR0FuZ2xlOjp0b3JhZChhbmds
ZSkpKTsKLSAgICBtX21hdCAqPSB0ZW1wOwotICAgIHJldHVybiB0aGlzOwotfQotCi1TVkdNYXRy
aXgqIFNWR01hdHJpeDo6bXVsdGlwbHkoY29uc3QgU1ZHTWF0cml4KiBzZWNvbmRNYXRyaXgpCi17
Ci0gICAgQWZmaW5lVHJhbnNmb3JtIHRlbXAoc2Vjb25kTWF0cml4LT5hKCksIHNlY29uZE1hdHJp
eC0+YigpLCBzZWNvbmRNYXRyaXgtPmMoKSwgc2Vjb25kTWF0cml4LT5kKCksIHNlY29uZE1hdHJp
eC0+ZSgpLCBzZWNvbmRNYXRyaXgtPmYoKSk7Ci0gICAgdGVtcCAqPSBtX21hdDsKLSAgICBtX21h
dCA9IHRlbXA7Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0KLVNWR01hdHJpeCogU1ZHTWF0cml4Ojp0
cmFuc2xhdGUoZG91YmxlIHgsICBkb3VibGUgeSkKLXsKLSAgICBtX21hdC50cmFuc2xhdGUoeCwg
eSk7Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0KLVNWR01hdHJpeCogU1ZHTWF0cml4OjpzY2FsZShk
b3VibGUgc2NhbGVGYWN0b3IpCi17Ci0gICAgbV9tYXQuc2NhbGUoc2NhbGVGYWN0b3IsIHNjYWxl
RmFjdG9yKTsKLSAgICByZXR1cm4gdGhpczsKLX0KLQotU1ZHTWF0cml4KiBTVkdNYXRyaXg6OnNj
YWxlTm9uVW5pZm9ybShkb3VibGUgc2NhbGVGYWN0b3JYLCBkb3VibGUgc2NhbGVGYWN0b3JZKQot
ewotICAgIG1fbWF0LnNjYWxlKHNjYWxlRmFjdG9yWCwgc2NhbGVGYWN0b3JZKTsKLSAgICByZXR1
cm4gdGhpczsKLX0KLQotU1ZHTWF0cml4KiBTVkdNYXRyaXg6OnJvdGF0ZShkb3VibGUgYW5nbGUp
Ci17Ci0gICAgbV9tYXQucm90YXRlKGFuZ2xlKTsKLSAgICByZXR1cm4gdGhpczsKLX0KLQotU1ZH
TWF0cml4KiBTVkdNYXRyaXg6OnJvdGF0ZUZyb21WZWN0b3IoZG91YmxlIHgsIGRvdWJsZSB5LCBF
eGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAoeCA9PSAwIHx8IHkgPT0gMCkgewotICAgICAg
ICBlYyA9IFNWR19JTlZBTElEX1ZBTFVFX0VSUjsKLSAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAg
fQotICAgIG1fbWF0LnJvdGF0ZShTVkdBbmdsZTo6dG9kZWcoYXRhbjIoeSwgeCkpKTsKLSAgICBy
ZXR1cm4gdGhpczsKLX0KLQotU1ZHTWF0cml4KiBTVkdNYXRyaXg6OmZsaXBYKCkKLXsKLSAgICBt
X21hdC5zY2FsZSgtMS4wZiwgMS4wZik7Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0KLVNWR01hdHJp
eCogU1ZHTWF0cml4OjpmbGlwWSgpCi17Ci0gICAgbV9tYXQuc2NhbGUoMS4wZiwgLTEuMGYpOwot
ICAgIHJldHVybiB0aGlzOwotfQotCi1TVkdNYXRyaXgqIFNWR01hdHJpeDo6c2tld1goZG91Ymxl
IGFuZ2xlKQotewotICAgIG1fbWF0LnNoZWFyKHRhbihTVkdBbmdsZTo6dG9yYWQoYW5nbGUpKSwg
MC4wRik7Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0KLVNWR01hdHJpeCogU1ZHTWF0cml4Ojpza2V3
WShkb3VibGUgYW5nbGUpCi17Ci0gICAgbV9tYXQuc2hlYXIoMC4wRiwgdGFuKFNWR0FuZ2xlOjp0
b3JhZChhbmdsZSkpKTsKLSAgICByZXR1cm4gdGhpczsKLX0KLQotdm9pZCBTVkdNYXRyaXg6OnNl
dE1hdHJpeChjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIG1hdCkKLXsKLSAgICBtX21hdCA9IG1hdDsK
LX0KLQotQWZmaW5lVHJhbnNmb3JtJiBTVkdNYXRyaXg6Om1hdHJpeCgpCi17Ci0gICAgcmV0dXJu
IG1fbWF0OwotfQotCi1jb25zdCBBZmZpbmVUcmFuc2Zvcm0mIFNWR01hdHJpeDo6bWF0cml4KCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9tYXQ7Ci19Ci0KLXZvaWQgU1ZHTWF0cml4OjpyZXNldCgp
Ci17Ci0gICAgbV9tYXQucmVzZXQoKTsKLX0KLQotdm9pZCBTVkdNYXRyaXg6OnJlbW92ZVNjYWxl
KGRvdWJsZSogeFNjYWxlLCBkb3VibGUqIHlTY2FsZSkKLXsKLSAgICBkb3VibGUgc3ggPSBzcXJ0
KGEoKSAqIGEoKSArIGIoKSAqIGIoKSk7Ci0gICAgZG91YmxlIHN5ID0gc3FydChjKCkgKiBjKCkg
KyBkKCkgKiBkKCkpOwotCi0gICAgLy8gUmVtb3ZlIHRoZSBzY2FsaW5nIGZyb20gdGhlIG1hdHJp
eC4KLSAgICBzZXRBKGEoKSAvIHN4KTsgc2V0QihiKCkgLyBzeCk7Ci0gICAgc2V0QyhjKCkgLyBz
eSk7IHNldEQoZCgpIC8gc3kpOwotCi0gICAgKnhTY2FsZSA9IHN4OwotICAgICp5U2NhbGUgPSBz
eTsKLX0KLQotLy8gdmltOnRzPTQ6bm9ldAotI2VuZGlmIC8vIFNWR19TVVBQT1JUCi0KSW5kZXg6
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hdHJpeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR01hdHJpeC5oCShyZXZpc2lvbiAxODE3NikKKysrIFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR01hdHJpeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwNyArMCwwIEBACi0vKgotICAgIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9y
Zz4KLSAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4K
LQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAotCi0gICAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot
ICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAg
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUg
MzMwLAotICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotKi8KLQotI2lmbmRlZiBLU1ZH
X1NWR01hdHJpeEltcGxfSAotI2RlZmluZSBLU1ZHX1NWR01hdHJpeEltcGxfSAotI2lmZGVmIFNW
R19TVVBQT1JUCi0KLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKLSNpbmNsdWRlICJTaGFy
ZWQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0gICAgdHlwZWRlZiBpbnQgRXhjZXB0aW9u
Q29kZTsKLQotICAgIGNsYXNzIFNWR01hdHJpeCA6IHB1YmxpYyBTaGFyZWQ8U1ZHTWF0cml4PiB7
IAotICAgIHB1YmxpYzoKLSAgICAgICAgU1ZHTWF0cml4KCk7Ci0gICAgICAgIFNWR01hdHJpeChk
b3VibGUgYSwgZG91YmxlIGIsIGRvdWJsZSBjLCBkb3VibGUgZCwgZG91YmxlIGUsIGRvdWJsZSBm
KTsKLSAgICAgICAgU1ZHTWF0cml4KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbWF0KTsKLSAgICAg
ICAgdmlydHVhbCB+U1ZHTWF0cml4KCk7Ci0KLSAgICAgICAgdm9pZCBzZXRBKGRvdWJsZSk7Ci0g
ICAgICAgIGRvdWJsZSBhKCkgY29uc3Q7Ci0KLSAgICAgICAgdm9pZCBzZXRCKGRvdWJsZSk7Ci0g
ICAgICAgIGRvdWJsZSBiKCkgY29uc3Q7Ci0KLSAgICAgICAgdm9pZCBzZXRDKGRvdWJsZSk7Ci0g
ICAgICAgIGRvdWJsZSBjKCkgY29uc3Q7Ci0KLSAgICAgICAgdm9pZCBzZXREKGRvdWJsZSk7Ci0g
ICAgICAgIGRvdWJsZSBkKCkgY29uc3Q7Ci0KLSAgICAgICAgdm9pZCBzZXRFKGRvdWJsZSk7Ci0g
ICAgICAgIGRvdWJsZSBlKCkgY29uc3Q7Ci0KLSAgICAgICAgdm9pZCBzZXRGKGRvdWJsZSk7Ci0g
ICAgICAgIGRvdWJsZSBmKCkgY29uc3Q7Ci0KLSAgICAgICAgdm9pZCBjb3B5KGNvbnN0IFNWR01h
dHJpeCopOwotCi0gICAgICAgIFNWR01hdHJpeCogaW52ZXJzZShFeGNlcHRpb25Db2RlJik7Ci0K
LSAgICAgICAgLy8gUHJlLW11bHRpcGxpZWQgb3BlcmF0aW9ucywgYXMgcGVyIHRoZSBzcGVjcy4K
LSAgICAgICAgU1ZHTWF0cml4KiBtdWx0aXBseShjb25zdCBTVkdNYXRyaXgqKTsKLSAgICAgICAg
U1ZHTWF0cml4KiB0cmFuc2xhdGUoZG91YmxlIHgsIGRvdWJsZSB5KTsKLSAgICAgICAgU1ZHTWF0
cml4KiBzY2FsZShkb3VibGUgc2NhbGVGYWN0b3IpOwotICAgICAgICBTVkdNYXRyaXgqIHNjYWxl
Tm9uVW5pZm9ybShkb3VibGUgc2NhbGVGYWN0b3JYLCBkb3VibGUgc2NhbGVGYWN0b3JZKTsKLSAg
ICAgICAgU1ZHTWF0cml4KiByb3RhdGUoZG91YmxlIGFuZ2xlKTsKLSAgICAgICAgU1ZHTWF0cml4
KiByb3RhdGVGcm9tVmVjdG9yKGRvdWJsZSB4LCBkb3VibGUgeSwgRXhjZXB0aW9uQ29kZSYpOwot
ICAgICAgICBTVkdNYXRyaXgqIGZsaXBYKCk7Ci0gICAgICAgIFNWR01hdHJpeCogZmxpcFkoKTsK
LSAgICAgICAgU1ZHTWF0cml4KiBza2V3WChkb3VibGUgYW5nbGUpOwotICAgICAgICBTVkdNYXRy
aXgqIHNrZXdZKGRvdWJsZSBhbmdsZSk7Ci0KLSAgICAgICAgLy8gUG9zdC1tdWx0aXBsaWVkIG9w
ZXJhdGlvbnMKLSAgICAgICAgU1ZHTWF0cml4KiBwb3N0TXVsdGlwbHkoY29uc3QgU1ZHTWF0cml4
Kik7Ci0gICAgICAgIFNWR01hdHJpeCogcG9zdFRyYW5zbGF0ZShkb3VibGUgeCwgZG91YmxlIHkp
OwotICAgICAgICBTVkdNYXRyaXgqIHBvc3RTY2FsZShkb3VibGUgc2NhbGVGYWN0b3IpOwotICAg
ICAgICBTVkdNYXRyaXgqIHBvc3RTY2FsZU5vblVuaWZvcm0oZG91YmxlIHNjYWxlRmFjdG9yWCwg
ZG91YmxlIHNjYWxlRmFjdG9yWSk7Ci0gICAgICAgIFNWR01hdHJpeCogcG9zdFJvdGF0ZShkb3Vi
bGUgYW5nbGUpOwotICAgICAgICBTVkdNYXRyaXgqIHBvc3RSb3RhdGVGcm9tVmVjdG9yKGRvdWJs
ZSB4LCBkb3VibGUgeSk7Ci0gICAgICAgIFNWR01hdHJpeCogcG9zdEZsaXBYKCk7Ci0gICAgICAg
IFNWR01hdHJpeCogcG9zdEZsaXBZKCk7Ci0gICAgICAgIFNWR01hdHJpeCogcG9zdFNrZXdYKGRv
dWJsZSBhbmdsZSk7Ci0gICAgICAgIFNWR01hdHJpeCogcG9zdFNrZXdZKGRvdWJsZSBhbmdsZSk7
Ci0KLSAgICAgICAgdm9pZCByZXNldCgpOwotCi0gICAgICAgIC8vIEtTVkcgaGVscGVyIG1ldGhv
ZAotICAgICAgICBBZmZpbmVUcmFuc2Zvcm0mIG1hdHJpeCgpOwotICAgICAgICBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIG1hdHJpeCgpIGNvbnN0OwotCi0gICAgICAgIC8vIERldGVybWluZSB0aGUg
c2NhbGluZyBjb21wb25lbnQgb2YgdGhlIG1hdHJpeCBhbmQgZmFjdG9yIGl0IG91dC4gQWZ0ZXIK
LSAgICAgICAgLy8gdGhpcyBvcGVyYXRpb24sIHRoZSBtYXRyaXggaGFzIHggYW5kIHkgc2NhbGUg
b2Ygb25lLgotICAgICAgICB2b2lkIHJlbW92ZVNjYWxlKGRvdWJsZSogeFNjYWxlLCBkb3VibGUq
IHlTY2FsZSk7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICB2b2lkIHNldE1hdHJpeChjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mKTsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIG1fbWF0OwotICAgIH07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFNWR19TVVBQT1JUCi0jZW5k
aWYgLy8gS1NWR19TVkdNYXRyaXhJbXBsX0gKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHTWF0cml4LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdNYXRyaXguaWRsCShyZXZpc2lvbiAxODE3NikKKysrIFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR01hdHJpeC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKIAogbW9kdWxl
IHN2ZyB7CiAKLSAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFsPVNWR10gU1ZHTWF0cml4IHsgCisg
ICAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD1TVkcsIFBPRFR5cGU9QWZmaW5lVHJhbnNmb3JtXSBT
VkdNYXRyaXggeyAKICAgICAgICAgYXR0cmlidXRlIGZsb2F0IGE7CiAgICAgICAgIGF0dHJpYnV0
ZSBmbG9hdCBiOwogICAgICAgICBhdHRyaWJ1dGUgZmxvYXQgYzsKQEAgLTMzLDEzICszMywxMyBA
QCBtb2R1bGUgc3ZnIHsKICAgICAgICAgYXR0cmlidXRlIGZsb2F0IGY7CiAKICAgICAgICAgU1ZH
TWF0cml4IG11bHRpcGx5KGluIFNWR01hdHJpeCBzZWNvbmRNYXRyaXgpOwotICAgICAgICBTVkdN
YXRyaXggaW52ZXJzZSgpCisgICAgICAgIFtDdXN0b21dIFNWR01hdHJpeCBpbnZlcnNlKCkKICAg
ICAgICAgICAgIHJhaXNlcyhTVkdFeGNlcHRpb24pOwogICAgICAgICBTVkdNYXRyaXggdHJhbnNs
YXRlKGluIGZsb2F0IHgsIGluIGZsb2F0IHkpOwogICAgICAgICBTVkdNYXRyaXggc2NhbGUoaW4g
ZmxvYXQgc2NhbGVGYWN0b3IpOwogICAgICAgICBTVkdNYXRyaXggc2NhbGVOb25Vbmlmb3JtKGlu
IGZsb2F0IHNjYWxlRmFjdG9yWCwgaW4gZmxvYXQgc2NhbGVGYWN0b3JZKTsKICAgICAgICAgU1ZH
TWF0cml4IHJvdGF0ZShpbiBmbG9hdCBhbmdsZSk7Ci0gICAgICAgIFNWR01hdHJpeCByb3RhdGVG
cm9tVmVjdG9yKGluIGZsb2F0IHgsIGluIGZsb2F0IHkpCisgICAgICAgIFtDdXN0b21dIFNWR01h
dHJpeCByb3RhdGVGcm9tVmVjdG9yKGluIGZsb2F0IHgsIGluIGZsb2F0IHkpCiAgICAgICAgICAg
ICByYWlzZXMoU1ZHRXhjZXB0aW9uKTsKICAgICAgICAgU1ZHTWF0cml4IGZsaXBYKCk7CiAgICAg
ICAgIFNWR01hdHJpeCBmbGlwWSgpOwpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTnVtYmVy
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdOdW1iZXIuaWRsCShyZXZp
c2lvbiAxODE3NikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR051bWJlci5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTI0LDcgKzI0LDcgQEAKIAogbW9kdWxlIHN2ZyB7CiAKLSAgICBpbnRlcmZhY2Ug
W0NvbmRpdGlvbmFsPVNWRywgUE9EVHlwZT1mbG9hdF0gU1ZHTnVtYmVyIHsKKyAgICBpbnRlcmZh
Y2UgW0NvbmRpdGlvbmFsPVNWRywgUE9EVHlwZT1kb3VibGVdIFNWR051bWJlciB7CiAgICAgICAg
ICAgICAgICAgIGF0dHJpYnV0ZSBmbG9hdCB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAgc2V0
dGVyIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgIH07CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdOdW1iZXJMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdO
dW1iZXJMaXN0LmNwcAkocmV2aXNpb24gMTgxNzYpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdO
dW1iZXJMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNiBAQAogI2lmZGVmIFNW
R19TVVBQT1JUCiAjaW5jbHVkZSAiU1ZHTnVtYmVyTGlzdC5oIgogCi0jaW5jbHVkZSAiU1ZHTWF0
cml4LmgiCiAjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
ODE3NikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIlJlbmRlclNWR0NvbnRhaW5lci5o
IgogI2luY2x1ZGUgIlNWR0hlbHBlci5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgotI2luY2x1
ZGUgIlNWR01hdHJpeC5oIgorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUg
IlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1Ry
YW5zZm9ybUxpc3QuaCIKQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIFNWR1BhdHRlcm5FbGVtZW50
Ojpub3RpZnlBdHRyaWJ1dGVDCiAKICAgICBBZmZpbmVUcmFuc2Zvcm0gcGF0dGVyblRyYW5zZm9y
bU1hdHJpeDsKICAgICBpZiAocGF0dGVyblRyYW5zZm9ybSgpLT5udW1iZXJPZkl0ZW1zKCkgPiAw
KQotICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtTWF0cml4ID0gcGF0dGVyblRyYW5zZm9ybSgpLT5j
b25zb2xpZGF0ZSgpLT5tYXRyaXgoKS0+bWF0cml4KCk7CisgICAgICAgIHBhdHRlcm5UcmFuc2Zv
cm1NYXRyaXggPSBwYXR0ZXJuVHJhbnNmb3JtKCktPmNvbnNvbGlkYXRlKCktPm1hdHJpeCgpOwog
CiAKICAgICBTVkdQYXR0ZXJuRWxlbWVudCogbm9uQ29uc3RUaGlzID0gY29uc3RfY2FzdDxTVkdQ
YXR0ZXJuRWxlbWVudCo+KHRoaXMpOwpAQCAtMzI4LDE0ICszMjgsMTEgQEAgU1ZHUmVzb3VyY2Uq
IFNWR1BhdHRlcm5FbGVtZW50OjpjYW52YXNSZQogICAgIHJldHVybiBtX3BhaW50U2VydmVyLmdl
dCgpOwogfQogCi1TVkdNYXRyaXgqIFNWR1BhdHRlcm5FbGVtZW50OjpnZXRDVE0oKSBjb25zdAor
QWZmaW5lVHJhbnNmb3JtIFNWR1BhdHRlcm5FbGVtZW50OjpnZXRDVE0oKSBjb25zdAogewotICAg
IFNWR01hdHJpeCogbWF0ID0gU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHTWF0cml4KCk7Ci0gICAg
aWYgKG1hdCkgewotICAgICAgICBSZWZQdHI8U1ZHTWF0cml4PiB2aWV3Qm94ID0gdmlld0JveFRv
Vmlld1RyYW5zZm9ybSh3aWR0aCgpLT52YWx1ZSgpLCBoZWlnaHQoKS0+dmFsdWUoKSk7Ci0gICAg
ICAgIG1hdC0+bXVsdGlwbHkodmlld0JveC5nZXQoKSk7Ci0gICAgfQotCisgICAgQWZmaW5lVHJh
bnNmb3JtIG1hdDsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gdmlld0JveCA9IHZpZXdCb3hUb1ZpZXdU
cmFuc2Zvcm0od2lkdGgoKS0+dmFsdWUoKSwgaGVpZ2h0KCktPnZhbHVlKCkpOworICAgIG1hdCAq
PSB2aWV3Qm94OwogICAgIHJldHVybiBtYXQ7CiB9CiAKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR1BhdHRlcm5FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
UGF0dGVybkVsZW1lbnQuaAkocmV2aXNpb24gMTgxNzYpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdQYXR0ZXJuRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgU1ZHUmVzb3VyY2UqIGNhbnZhc1Jlc291cmNl
KCk7CiAKICAgICAgICAgLy8gJ3ZpcnR1YWwgU1ZHTG9jYXRhYmxlJyBmdW5jdGlvbnMKLSAgICAg
ICAgdmlydHVhbCBTVkdNYXRyaXgqIGdldENUTSgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIEFm
ZmluZVRyYW5zZm9ybSBnZXRDVE0oKSBjb25zdDsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHVVJJUmVmZXJlbmNlLCBT
dHJpbmcsIEhyZWYsIGhyZWYpCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQb2ludC5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUG9pbnQuaWRsCShyZXZpc2lvbiAx
ODE3NikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BvaW50LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMzAsOCArMzAsNyBAQCBtb2R1bGUgc3ZnIHsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRl
IGZsb2F0IHkKICAgICAgICAgICAgICAgICAgICAgIHNldHRlciByYWlzZXMoRE9NRXhjZXB0aW9u
KTsKIAotICAgICAgICAvLyBGSVhNRSAtIFJlZW5hYmxlIHRoaXMgb25jZSBTVkdNYXRyaXggaXMg
Y29udmVydGVkIHRvIEFmZmluZVRyYW5zZm9ybQotICAgICAgICAvL1NWR1BvaW50IG1hdHJpeFRy
YW5zZm9ybShpbiBTVkdNYXRyaXggbWF0cml4KTsKKyAgICAgICAgU1ZHUG9pbnQgbWF0cml4VHJh
bnNmb3JtKGluIFNWR01hdHJpeCBtYXRyaXgpOwogICAgIH07CiAKIH0KSW5kZXg6IFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uY3BwCShyZXZpc2lvbiAxODE3NikK
KysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNCw3ICsyNCw2IEBACiAjaWZkZWYgU1ZHX1NVUFBPUlQKICNpbmNsdWRlICJT
VkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCiAKLSNpbmNsdWRlICJTVkdNYXRyaXguaCIKICNpbmNs
dWRlICJTVkdTVkdFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEwMSwxMiAr
MTAwLDEyIEBAIHZvaWQgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6cGFyc2VQcmVzZXIKICAgICAg
ICAgbV9jb250ZXh0LT5ub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKTsKIH0KIAotU1ZHTWF0cml4KiBT
VkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpnZXRDVE0oZmxvYXQgbG9naWNYLCBmbG9hdCBsb2dpY1ks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBsb2dpY1dp
ZHRoLCBmbG9hdCBsb2dpY0hlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZsb2F0IC8qcGh5c1gqLywgZmxvYXQgLypwaHlzWSovLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgcGh5c1dpZHRoLCBmbG9hdCBwaHlz
SGVpZ2h0KQorQWZmaW5lVHJhbnNmb3JtIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OmdldENUTShm
bG9hdCBsb2dpY1gsIGZsb2F0IGxvZ2ljWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmxvYXQgbG9naWNXaWR0aCwgZmxvYXQgbG9naWNIZWlnaHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IC8qcGh5
c1gqLywgZmxvYXQgLypwaHlzWSovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmbG9hdCBwaHlzV2lkdGgsIGZsb2F0IHBoeXNIZWlnaHQpCiB7Ci0gICAg
U1ZHTWF0cml4KiB0ZW1wID0gU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHTWF0cml4KCk7CisgICAg
QWZmaW5lVHJhbnNmb3JtIHRlbXA7CiAKICAgICBpZiAoYWxpZ24oKSA9PSBTVkdfUFJFU0VSVkVB
U1BFQ1RSQVRJT19VTktOT1dOKQogICAgICAgICByZXR1cm4gdGVtcDsKQEAgLTExNSwyNiArMTE0
LDI2IEBAIFNWR01hdHJpeCogU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6Z2V0Q1QKICAgICBmbG9h
dCBzdmdhciA9IHBoeXNXaWR0aCAvIHBoeXNIZWlnaHQ7CiAKICAgICBpZiAoYWxpZ24oKSA9PSBT
VkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19OT05FKSB7Ci0gICAgICAgIHRlbXAtPnNjYWxlTm9uVW5p
Zm9ybShwaHlzV2lkdGggLyBsb2dpY1dpZHRoLCBwaHlzSGVpZ2h0IC8gbG9naWNIZWlnaHQpOwot
ICAgICAgICB0ZW1wLT50cmFuc2xhdGUoLWxvZ2ljWCwgLWxvZ2ljWSk7CisgICAgICAgIHRlbXAu
c2NhbGUocGh5c1dpZHRoIC8gbG9naWNXaWR0aCwgcGh5c0hlaWdodCAvIGxvZ2ljSGVpZ2h0KTsK
KyAgICAgICAgdGVtcC50cmFuc2xhdGUoLWxvZ2ljWCwgLWxvZ2ljWSk7CiAgICAgfSBlbHNlIGlm
ICh2cGFyIDwgc3ZnYXIgJiYgKG1lZXRPclNsaWNlKCkgPT0gU1ZHX01FRVRPUlNMSUNFX01FRVQp
IHx8IHZwYXIgPj0gc3ZnYXIgJiYgKG1lZXRPclNsaWNlKCkgPT0gU1ZHX01FRVRPUlNMSUNFX1NM
SUNFKSkgewotICAgICAgICB0ZW1wLT5zY2FsZShwaHlzSGVpZ2h0IC8gbG9naWNIZWlnaHQpOwor
ICAgICAgICB0ZW1wLnNjYWxlKHBoeXNIZWlnaHQgLyBsb2dpY0hlaWdodCwgcGh5c0hlaWdodCAv
IGxvZ2ljSGVpZ2h0KTsKIAogICAgICAgICBpZiAoYWxpZ24oKSA9PSBTVkdfUFJFU0VSVkVBU1BF
Q1RSQVRJT19YTUlOWU1JTiB8fCBhbGlnbigpID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hN
SU5ZTUlEIHx8IGFsaWduKCkgPT0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNQVgpCi0g
ICAgICAgICAgICB0ZW1wLT50cmFuc2xhdGUoLWxvZ2ljWCwgLWxvZ2ljWSk7CisgICAgICAgICAg
ICB0ZW1wLnRyYW5zbGF0ZSgtbG9naWNYLCAtbG9naWNZKTsKICAgICAgICAgZWxzZSBpZiAoYWxp
Z24oKSA9PSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JTiB8fCBhbGlnbigpID09IFNW
R19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlEIHx8IGFsaWduKCkgPT0gU1ZHX1BSRVNFUlZF
QVNQRUNUUkFUSU9fWE1JRFlNQVgpCi0gICAgICAgICAgICB0ZW1wLT50cmFuc2xhdGUoLWxvZ2lj
WCAtIChsb2dpY1dpZHRoIC0gcGh5c1dpZHRoICogbG9naWNIZWlnaHQgLyBwaHlzSGVpZ2h0KSAv
IDIsIC1sb2dpY1kpOworICAgICAgICAgICAgdGVtcC50cmFuc2xhdGUoLWxvZ2ljWCAtIChsb2dp
Y1dpZHRoIC0gcGh5c1dpZHRoICogbG9naWNIZWlnaHQgLyBwaHlzSGVpZ2h0KSAvIDIsIC1sb2dp
Y1kpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB0ZW1wLT50cmFuc2xhdGUoLWxvZ2ljWCAt
IChsb2dpY1dpZHRoIC0gcGh5c1dpZHRoICogbG9naWNIZWlnaHQgLyBwaHlzSGVpZ2h0KSwgLWxv
Z2ljWSk7CisgICAgICAgICAgICB0ZW1wLnRyYW5zbGF0ZSgtbG9naWNYIC0gKGxvZ2ljV2lkdGgg
LSBwaHlzV2lkdGggKiBsb2dpY0hlaWdodCAvIHBoeXNIZWlnaHQpLCAtbG9naWNZKTsKICAgICB9
IGVsc2UgewotICAgICAgICB0ZW1wLT5zY2FsZShwaHlzV2lkdGggLyBsb2dpY1dpZHRoKTsKKyAg
ICAgICAgdGVtcC5zY2FsZShwaHlzV2lkdGggLyBsb2dpY1dpZHRoLCBwaHlzV2lkdGggLyBsb2dp
Y1dpZHRoKTsKIAogICAgICAgICBpZiAoYWxpZ24oKSA9PSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJ
T19YTUlOWU1JTiB8fCBhbGlnbigpID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlO
IHx8IGFsaWduKCkgPT0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNSU4pCi0gICAgICAg
ICAgICB0ZW1wLT50cmFuc2xhdGUoLWxvZ2ljWCwgLWxvZ2ljWSk7CisgICAgICAgICAgICB0ZW1w
LnRyYW5zbGF0ZSgtbG9naWNYLCAtbG9naWNZKTsKICAgICAgICAgZWxzZSBpZiAoYWxpZ24oKSA9
PSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1JRCB8fCBhbGlnbigpID09IFNWR19QUkVT
RVJWRUFTUEVDVFJBVElPX1hNSURZTUlEIHx8IGFsaWduKCkgPT0gU1ZHX1BSRVNFUlZFQVNQRUNU
UkFUSU9fWE1BWFlNSUQpCi0gICAgICAgICAgICB0ZW1wLT50cmFuc2xhdGUoLWxvZ2ljWCwgLWxv
Z2ljWSAtIChsb2dpY0hlaWdodCAtIHBoeXNIZWlnaHQgKiBsb2dpY1dpZHRoIC8gcGh5c1dpZHRo
KSAvIDIpOworICAgICAgICAgICAgdGVtcC50cmFuc2xhdGUoLWxvZ2ljWCwgLWxvZ2ljWSAtIChs
b2dpY0hlaWdodCAtIHBoeXNIZWlnaHQgKiBsb2dpY1dpZHRoIC8gcGh5c1dpZHRoKSAvIDIpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICB0ZW1wLT50cmFuc2xhdGUoLWxvZ2ljWCwgLWxvZ2lj
WSAtIChsb2dpY0hlaWdodCAtIHBoeXNIZWlnaHQgKiBsb2dpY1dpZHRoIC8gcGh5c1dpZHRoKSk7
CisgICAgICAgICAgICB0ZW1wLnRyYW5zbGF0ZSgtbG9naWNYLCAtbG9naWNZIC0gKGxvZ2ljSGVp
Z2h0IC0gcGh5c0hlaWdodCAqIGxvZ2ljV2lkdGggLyBwaHlzV2lkdGgpKTsKICAgICB9CiAKICAg
ICByZXR1cm4gdGVtcDsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0
UmF0aW8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvLmgJKHJldmlzaW9uIDE4MTc2KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUHJlc2Vy
dmVBc3BlY3RSYXRpby5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBTdHJpbmc7Ci0gICAgY2xhc3MgU1ZHTWF0cml4Owor
ICAgIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKICAgICBjbGFzcyBTVkdTdHlsZWRFbGVtZW50Owog
CiAgICAgY2xhc3MgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyA6IHB1YmxpYyBTaGFyZWQ8U1ZHUHJl
c2VydmVBc3BlY3RSYXRpbz4geyAKQEAgLTY0LDEwICs2NCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZvaWQgc2V0TWVldE9yU2xpY2UodW5zaWduZWQgc2hvcnQpOwogICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBtZWV0T3JTbGljZSgpIGNvbnN0OwogICAgICAgICAKLSAgICAgICAg
U1ZHTWF0cml4KiBnZXRDVE0oZmxvYXQgbG9naWNYLCBmbG9hdCBsb2dpY1ksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsb2F0IGxvZ2ljV2lkdGgsIGZsb2F0IGxvZ2ljSGVpZ2h0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBwaHlzWCwgZmxvYXQgcGh5c1ksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIGZsb2F0IHBoeXNXaWR0aCwgZmxvYXQgcGh5c0hlaWdodCk7Cisg
ICAgICAgIEFmZmluZVRyYW5zZm9ybSBnZXRDVE0oZmxvYXQgbG9naWNYLCBmbG9hdCBsb2dpY1ks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgbG9naWNXaWR0aCwgZmxvYXQg
bG9naWNIZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgcGh5c1gs
IGZsb2F0IHBoeXNZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHBoeXNX
aWR0aCwgZmxvYXQgcGh5c0hlaWdodCk7CiAKICAgICAgICAgLy8gSGVscGVyCiAgICAgICAgIHZv
aWQgcGFyc2VQcmVzZXJ2ZUFzcGVjdFJhdGlvKGNvbnN0IFN0cmluZyYpOwpJbmRleDogV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
ODE3NikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJTVkdQYWludFNlcnZl
clJhZGlhbEdyYWRpZW50LmgiCiAjaW5jbHVkZSAiU1ZHSGVscGVyLmgiCiAjaW5jbHVkZSAiU1ZH
TGVuZ3RoLmgiCi0jaW5jbHVkZSAiU1ZHTWF0cml4LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIK
ICNpbmNsdWRlICJTVkdTdG9wRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1RyYW5zZm9ybS5oIgpA
QCAtOTcsNyArOTYsNyBAQCB2b2lkIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6YnVpbGRHcmFk
CiAgICAgUmVmUHRyPFNWR1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnQ+IGdyYWQgPSBXVEY6OnN0
YXRpY19wb2ludGVyX2Nhc3Q8U1ZHUGFpbnRTZXJ2ZXJSYWRpYWxHcmFkaWVudD4oX2dyYWQpOwog
ICAgIEFmZmluZVRyYW5zZm9ybSBtYXQ7CiAgICAgaWYgKGdyYWRpZW50VHJhbnNmb3JtKCktPm51
bWJlck9mSXRlbXMoKSA+IDApCi0gICAgICAgIG1hdCA9IGdyYWRpZW50VHJhbnNmb3JtKCktPmNv
bnNvbGlkYXRlKCktPm1hdHJpeCgpLT5tYXRyaXgoKTsKKyAgICAgICAgbWF0ID0gZ3JhZGllbnRU
cmFuc2Zvcm0oKS0+Y29uc29saWRhdGUoKS0+bWF0cml4KCk7CiAKICAgICBEZXByZWNhdGVkU3Ry
aW5nIHJlZiA9IGhyZWYoKS5kZXByZWNhdGVkU3RyaW5nKCk7CiAgICAgUmVmUHRyPFNWR1BhaW50
U2VydmVyPiBwc2VydmVyID0gZ2V0UGFpbnRTZXJ2ZXJCeUlkKGRvY3VtZW50KCksIHJlZi5taWQo
MSkpOwpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MTc2
KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJSZW5kZXJTVkdDb250YWluZXIuaCIKICNpbmNs
dWRlICJTVkdBbmdsZS5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgotI2luY2x1ZGUgIlNWR01h
dHJpeC5oIgorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIlNWR05hbWVz
LmgiCiAjaW5jbHVkZSAiU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oIgogI2luY2x1ZGUgIlNWR1Ry
YW5zZm9ybS5oIgpAQCAtMTA4LDkgKzEwOCw5IEBAIEZsb2F0UmVjdCBTVkdTVkdFbGVtZW50Ojp2
aWV3cG9ydCgpIGNvbnMKICAgICBkb3VibGUgX3kgPSB5KCktPnZhbHVlKCk7CiAgICAgZG91Ymxl
IHcgPSB3aWR0aCgpLT52YWx1ZSgpOwogICAgIGRvdWJsZSBoID0gaGVpZ2h0KCktPnZhbHVlKCk7
Ci0gICAgUmVmUHRyPFNWR01hdHJpeD4gdmlld0JveCA9IHZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0o
dywgaCk7Ci0gICAgdmlld0JveC0+bWF0cml4KCkubWFwKF94LCBfeSwgJl94LCAmX3kpOwotICAg
IHZpZXdCb3gtPm1hdHJpeCgpLm1hcCh3LCBoLCAmdywgJmgpOworICAgIEFmZmluZVRyYW5zZm9y
bSB2aWV3Qm94ID0gdmlld0JveFRvVmlld1RyYW5zZm9ybSh3LCBoKTsKKyAgICB2aWV3Qm94Lm1h
cChfeCwgX3ksICZfeCwgJl95KTsKKyAgICB2aWV3Qm94Lm1hcCh3LCBoLCAmdywgJmgpOwogICAg
IHJldHVybiBGbG9hdFJlY3QoX3gsIF95LCB3LCBoKTsKIH0KIApAQCAtMjcxLDkgKzI3MSw5IEBA
IHZvaWQgU1ZHU1ZHRWxlbWVudDo6ZGVzZWxlY3RBbGwoKQogICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgbWUgKHNlZSBidWcgMTEyNzUpCiB9CiAKLWZsb2F0IFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNW
R051bWJlcigpCitkb3VibGUgU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHTnVtYmVyKCkKIHsKLSAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gMC4wOwogfQogCiBTVkdMZW5ndGgqIFNWR1NWR0VsZW1l
bnQ6OmNyZWF0ZVNWR0xlbmd0aCgpCkBAIC0yOTEsOSArMjkxLDkgQEAgRmxvYXRQb2ludCBTVkdT
VkdFbGVtZW50OjpjcmVhdGVTVkdQb2ludAogICAgIHJldHVybiBGbG9hdFBvaW50KCk7CiB9CiAK
LVNWR01hdHJpeCogU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHTWF0cml4KCkKK0FmZmluZVRyYW5z
Zm9ybSBTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdNYXRyaXgoKQogewotICAgIHJldHVybiBuZXcg
U1ZHTWF0cml4KCk7CisgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpOwogfQogCiBGbG9hdFJl
Y3QgU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHUmVjdCgpCkBAIC0zMDYsMzggKzMwNiwzNCBAQCBT
VkdUcmFuc2Zvcm0qIFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR1RyCiAgICAgcmV0dXJuIG5ldyBT
VkdUcmFuc2Zvcm0oKTsKIH0KIAotU1ZHVHJhbnNmb3JtKiBTVkdTVkdFbGVtZW50OjpjcmVhdGVT
VkdUcmFuc2Zvcm1Gcm9tTWF0cml4KFNWR01hdHJpeCogbWF0cml4KQorU1ZHVHJhbnNmb3JtKiBT
VkdTVkdFbGVtZW50OjpjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4KGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgbWF0cml4KQogeyAgICAKICAgICBTVkdUcmFuc2Zvcm0qIG9iaiA9IFNWR1NWR0Vs
ZW1lbnQ6OmNyZWF0ZVNWR1RyYW5zZm9ybSgpOwogICAgIG9iai0+c2V0TWF0cml4KG1hdHJpeCk7
CiAgICAgcmV0dXJuIG9iajsKIH0KIAotU1ZHTWF0cml4KiBTVkdTVkdFbGVtZW50OjpnZXRDVE0o
KSBjb25zdAorQWZmaW5lVHJhbnNmb3JtIFNWR1NWR0VsZW1lbnQ6OmdldENUTSgpIGNvbnN0CiB7
Ci0gICAgU1ZHTWF0cml4KiBtYXQgPSBjcmVhdGVTVkdNYXRyaXgoKTsKLSAgICBpZiAobWF0KSB7
Ci0gICAgICAgIG1hdC0+dHJhbnNsYXRlKHgoKS0+dmFsdWUoKSwgeSgpLT52YWx1ZSgpKTsKLQot
ICAgICAgICBpZiAoYXR0cmlidXRlcygpLT5nZXROYW1lZEl0ZW0oU1ZHTmFtZXM6OnZpZXdCb3hB
dHRyKSkgewotICAgICAgICAgICAgUmVmUHRyPFNWR01hdHJpeD4gdmlld0JveCA9IHZpZXdCb3hU
b1ZpZXdUcmFuc2Zvcm0od2lkdGgoKS0+dmFsdWUoKSwgaGVpZ2h0KCktPnZhbHVlKCkpOwotICAg
ICAgICAgICAgbWF0LT5tdWx0aXBseSh2aWV3Qm94LmdldCgpKTsKLSAgICAgICAgfQorICAgIEFm
ZmluZVRyYW5zZm9ybSBtYXQ7CisgICAgbWF0LnRyYW5zbGF0ZSh4KCktPnZhbHVlKCksIHkoKS0+
dmFsdWUoKSk7CisKKyAgICBpZiAoYXR0cmlidXRlcygpLT5nZXROYW1lZEl0ZW0oU1ZHTmFtZXM6
OnZpZXdCb3hBdHRyKSkgeworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdmlld0JveCA9IHZpZXdC
b3hUb1ZpZXdUcmFuc2Zvcm0od2lkdGgoKS0+dmFsdWUoKSwgaGVpZ2h0KCktPnZhbHVlKCkpOwor
ICAgICAgICBtYXQgPSB2aWV3Qm94ICogbWF0OwogICAgIH0KIAogICAgIHJldHVybiBtYXQ7CiB9
CiAKLVNWR01hdHJpeCogU1ZHU1ZHRWxlbWVudDo6Z2V0U2NyZWVuQ1RNKCkgY29uc3QKK0FmZmlu
ZVRyYW5zZm9ybSBTVkdTVkdFbGVtZW50OjpnZXRTY3JlZW5DVE0oKSBjb25zdAogewotICAgIFNW
R01hdHJpeCogbWF0ID0gU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6Z2V0U2NyZWVuQ1RNKCk7
Ci0gICAgaWYgKG1hdCkgewotICAgICAgICBtYXQtPnRyYW5zbGF0ZSh4KCktPnZhbHVlKCksIHko
KS0+dmFsdWUoKSk7Ci0KLSAgICAgICAgaWYgKGF0dHJpYnV0ZXMoKS0+Z2V0TmFtZWRJdGVtKFNW
R05hbWVzOjp2aWV3Qm94QXR0cikpIHsKLSAgICAgICAgICAgIFJlZlB0cjxTVkdNYXRyaXg+IHZp
ZXdCb3ggPSB2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKHdpZHRoKCktPnZhbHVlKCksIGhlaWdodCgp
LT52YWx1ZSgpKTsKLSAgICAgICAgICAgIG1hdC0+bXVsdGlwbHkodmlld0JveC5nZXQoKSk7Ci0g
ICAgICAgIH0KKyAgICBBZmZpbmVUcmFuc2Zvcm0gbWF0ID0gU1ZHU3R5bGVkTG9jYXRhYmxlRWxl
bWVudDo6Z2V0U2NyZWVuQ1RNKCk7CisgICAgbWF0LnRyYW5zbGF0ZSh4KCktPnZhbHVlKCksIHko
KS0+dmFsdWUoKSk7CisKKyAgICBpZiAoYXR0cmlidXRlcygpLT5nZXROYW1lZEl0ZW0oU1ZHTmFt
ZXM6OnZpZXdCb3hBdHRyKSkgeworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdmlld0JveCA9IHZp
ZXdCb3hUb1ZpZXdUcmFuc2Zvcm0od2lkdGgoKS0+dmFsdWUoKSwgaGVpZ2h0KCktPnZhbHVlKCkp
OworICAgICAgICBtYXQgPSB2aWV3Qm94ICogbWF0OwogICAgIH0KIAogICAgIHJldHVybiBtYXQ7
CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudC5oCShyZXZpc2lvbiAxODE3NikKKysrIFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyAr
MzUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZQogewogICAgIGNsYXNzIFNWR0FuZ2xlOwogICAgIGNs
YXNzIFNWR0xlbmd0aDsKLSAgICBjbGFzcyBTVkdNYXRyaXg7CiAgICAgY2xhc3MgU1ZHVHJhbnNm
b3JtOwogICAgIGNsYXNzIFNWR0xlbmd0aDsKICAgICBjbGFzcyBUaW1lU2NoZWR1bGVyOwpAQCAt
MTA0LDIwICsxMDMsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgYm9vbCBjaGVja0Vu
Y2xvc3VyZShTVkdFbGVtZW50KiwgY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgICAgIHZvaWQgZGVz
ZWxlY3RBbGwoKTsKIAotICAgICAgICBzdGF0aWMgZmxvYXQgY3JlYXRlU1ZHTnVtYmVyKCk7Cisg
ICAgICAgIHN0YXRpYyBkb3VibGUgY3JlYXRlU1ZHTnVtYmVyKCk7CiAgICAgICAgIHN0YXRpYyBT
VkdMZW5ndGgqIGNyZWF0ZVNWR0xlbmd0aCgpOwogICAgICAgICBzdGF0aWMgU1ZHQW5nbGUqIGNy
ZWF0ZVNWR0FuZ2xlKCk7CiAgICAgICAgIHN0YXRpYyBGbG9hdFBvaW50IGNyZWF0ZVNWR1BvaW50
KCk7Ci0gICAgICAgIHN0YXRpYyBTVkdNYXRyaXgqIGNyZWF0ZVNWR01hdHJpeCgpOworICAgICAg
ICBzdGF0aWMgQWZmaW5lVHJhbnNmb3JtIGNyZWF0ZVNWR01hdHJpeCgpOwogICAgICAgICBzdGF0
aWMgRmxvYXRSZWN0IGNyZWF0ZVNWR1JlY3QoKTsKICAgICAgICAgc3RhdGljIFNWR1RyYW5zZm9y
bSogY3JlYXRlU1ZHVHJhbnNmb3JtKCk7Ci0gICAgICAgIHN0YXRpYyBTVkdUcmFuc2Zvcm0qIGNy
ZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgoU1ZHTWF0cml4Kik7CisgICAgICAgIHN0YXRpYyBT
VkdUcmFuc2Zvcm0qIGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgoY29uc3QgQWZmaW5lVHJh
bnNmb3JtJik7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1h
cHBlZEF0dHJpYnV0ZSopOwogCiAgICAgICAgIC8vICd2aXJ0dWFsIFNWR0xvY2F0YWJsZScgZnVu
Y3Rpb25zCi0gICAgICAgIHZpcnR1YWwgU1ZHTWF0cml4KiBnZXRDVE0oKSBjb25zdDsKLSAgICAg
ICAgdmlydHVhbCBTVkdNYXRyaXgqIGdldFNjcmVlbkNUTSgpIGNvbnN0OworICAgICAgICB2aXJ0
dWFsIEFmZmluZVRyYW5zZm9ybSBnZXRDVE0oKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBBZmZp
bmVUcmFuc2Zvcm0gZ2V0U2NyZWVuQ1RNKCkgY29uc3Q7CiAKICAgICAgICAgdmlydHVhbCBib29s
IHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKSB7IHJldHVybiBTdHlsZWRFbGVt
ZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsgfQogICAgICAgICB2aXJ0dWFsIFJlbmRlck9i
amVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwpJbmRleDog
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MTc2KQorKysg
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJSZW5kZXJQYXRoLmgiCiAjaW5jbHVkZSAiU1ZHRWxl
bWVudC5oIgogI2luY2x1ZGUgIlNWR0hlbHBlci5oIgotI2luY2x1ZGUgIlNWR01hdHJpeC5oIgog
I2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyU3R5bGUuaCIKICNpbmNs
dWRlICJTVkdTVkdFbGVtZW50LmgiCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdHlsZWRM
b2NhdGFibGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdT
dHlsZWRMb2NhdGFibGVFbGVtZW50LmNwcAkocmV2aXNpb24gMTgxNzYpCisrKyBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiUmVuZGVyUGF0aC5oIgogI2luY2x1ZGUgIlNWR0Vs
ZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdNYXRyaXguaCIKKyNpbmNsdWRlICJBZmZpbmVUcmFuc2Zv
cm0uaCIKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTU4LDEyICs1OCwxMiBAQCBGbG9hdFJlY3QgU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6
Z2V0CiAgICAgcmV0dXJuIFNWR0xvY2F0YWJsZTo6Z2V0QkJveCh0aGlzKTsKIH0KIAotU1ZHTWF0
cml4KiBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50OjpnZXRDVE0oKSBjb25zdAorQWZmaW5lVHJh
bnNmb3JtIFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQ6OmdldENUTSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIFNWR0xvY2F0YWJsZTo6Z2V0Q1RNKHRoaXMpOwogfQogCi1TVkdNYXRyaXgqIFNWR1N0
eWxlZExvY2F0YWJsZUVsZW1lbnQ6OmdldFNjcmVlbkNUTSgpIGNvbnN0CitBZmZpbmVUcmFuc2Zv
cm0gU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6Z2V0U2NyZWVuQ1RNKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gU1ZHTG9jYXRhYmxlOjpnZXRTY3JlZW5DVE0odGhpcyk7CiB9CkluZGV4OiBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5oCShyZXZpc2lvbiAx
ODE3NikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LSAgICBjbGFzcyBTVkdNYXRyaXg7CiAgICAgY2xhc3MgU1ZHRWxlbWVudDsKIAogICAgIGNsYXNz
IFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkRWxlbWVudCwgdmly
dHVhbCBwdWJsaWMgU1ZHTG9jYXRhYmxlIHsKQEAgLTQ0LDggKzQzLDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2aXJ0dWFsIFNWR0VsZW1lbnQqIGZhcnRoZXN0Vmlld3BvcnRFbGVt
ZW50KCkgY29uc3Q7CiAKICAgICAgICAgdmlydHVhbCBGbG9hdFJlY3QgZ2V0QkJveCgpIGNvbnN0
OwotICAgICAgICB2aXJ0dWFsIFNWR01hdHJpeCogZ2V0Q1RNKCkgY29uc3Q7Ci0gICAgICAgIHZp
cnR1YWwgU1ZHTWF0cml4KiBnZXRTY3JlZW5DVE0oKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBB
ZmZpbmVUcmFuc2Zvcm0gZ2V0Q1RNKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgQWZmaW5lVHJh
bnNmb3JtIGdldFNjcmVlbkNUTSgpIGNvbnN0OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MTc2KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3
ICszMSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyUGF0aC5oIgogI2luY2x1ZGUgIlNWR0RvY3VtZW50
LmgiCiAjaW5jbHVkZSAiU1ZHSGVscGVyLmgiCi0jaW5jbHVkZSAiU1ZHTWF0cml4LmgiCisjaW5j
bHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgog
I2luY2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3QuaCIKIApAQCAtNTAsMTcgKzUwLDE3IEBAIFNWR1N0
eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojp+U1ZHU3R5bGUKIAogQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQsIFNWR1RyYW5zZm9ybUxp
c3QqLCBUcmFuc2Zvcm1MaXN0LCB0cmFuc2Zvcm1MaXN0LCBUcmFuc2Zvcm0sIHRyYW5zZm9ybSwg
U1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIubG9jYWxOYW1lKCksIG1fdHJhbnNmb3JtLmdldCgpKQog
Ci1TVkdNYXRyaXgqIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojpsb2NhbE1hdHJpeCgp
IGNvbnN0CitBZmZpbmVUcmFuc2Zvcm0gU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6Omxv
Y2FsTWF0cml4KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbGF6eV9jcmVhdGU8U1ZHTWF0cml4Piht
X2xvY2FsTWF0cml4KTsKKyAgICByZXR1cm4gbV9sb2NhbE1hdHJpeDsKIH0KIAotU1ZHTWF0cml4
KiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6Z2V0Q1RNKCkgY29uc3QKK0FmZmluZVRy
YW5zZm9ybSBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6Z2V0Q1RNKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gU1ZHVHJhbnNmb3JtYWJsZTo6Z2V0Q1RNKHRoaXMpOwogfQogCi1TVkdNYXRy
aXgqIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpnZXRTY3JlZW5DVE0oKSBjb25zdAor
QWZmaW5lVHJhbnNmb3JtIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpnZXRTY3JlZW5D
VE0oKSBjb25zdAogewogICAgIHJldHVybiBTVkdUcmFuc2Zvcm1hYmxlOjpnZXRTY3JlZW5DVE0o
dGhpcyk7CiB9CkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVs
ZW1lbnQ6OnVwZGEKICAgICBpZihsb2NhbFRyYW5zZm9ybSkgewogICAgICAgICBtX2xvY2FsTWF0
cml4ID0gbG9jYWxUcmFuc2Zvcm0tPm1hdHJpeCgpOwogICAgICAgICBpZiAocmVuZGVyZXIoKSkg
ewotICAgICAgICAgICAgcmVuZGVyZXIoKS0+c2V0TG9jYWxUcmFuc2Zvcm0obV9sb2NhbE1hdHJp
eC0+bWF0cml4KCkpOworICAgICAgICAgICAgcmVuZGVyZXIoKS0+c2V0TG9jYWxUcmFuc2Zvcm0o
bV9sb2NhbE1hdHJpeCk7CiAgICAgICAgICAgICByZW5kZXJlcigpLT5zZXROZWVkc0xheW91dCh0
cnVlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTExMyw4ICsxMTMsOCBAQCB2b2lkIFNWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50OjphdHRhCiB7CiAgICAgU1ZHU3R5bGVkRWxlbWVudDo6YXR0
YWNoKCk7CiAKLSAgICBpZiAocmVuZGVyZXIoKSAmJiBtX2xvY2FsTWF0cml4KQotICAgICAgICBy
ZW5kZXJlcigpLT5zZXRMb2NhbFRyYW5zZm9ybShtX2xvY2FsTWF0cml4LT5tYXRyaXgoKSk7Cisg
ICAgaWYgKHJlbmRlcmVyKCkgJiYgIW1fbG9jYWxNYXRyaXguaXNJZGVudGl0eSgpKQorICAgICAg
ICByZW5kZXJlcigpLT5zZXRMb2NhbFRyYW5zZm9ybShtX2xvY2FsTWF0cml4KTsKIH0KIAogfQpJ
bmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxl
bWVudC5oCShyZXZpc2lvbiAxODE3NikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxlZFRy
YW5zZm9ybWFibGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDggKzM0LDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIE5vZGU7CiAgICAgY2xhc3MgU3RyaW5nSW1wbDsK
ICAgICBjbGFzcyBTVkdUcmFuc2Zvcm1MaXN0OwotICAgIGNsYXNzIFNWR01hdHJpeDsKLSAgICBj
bGFzcyBTVkdUcmFuc2Zvcm1MaXN0OwogCiAgICAgY2xhc3MgU1ZHU3R5bGVkVHJhbnNmb3JtYWJs
ZUVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudCwgcHVibGljIFNWR1Ry
YW5zZm9ybWFibGUgewogICAgIHB1YmxpYzoKQEAgLTQ1LDExICs0MywxMSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1N0eWxlZFRyYW5zZm9ybWFibGUoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICAgICAgLy8gJ1NWR1RyYW5zZm9ybWFibGUnIGZ1
bmN0aW9ucwotICAgICAgICB2aXJ0dWFsIFNWR01hdHJpeCogbG9jYWxNYXRyaXgoKSBjb25zdDsK
KyAgICAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxNYXRyaXgoKSBjb25zdDsKIAog
ICAgICAgICAvLyBEZXJpdmVkIGZyb206ICdTVkdMb2NhdGFibGUnCi0gICAgICAgIHZpcnR1YWwg
U1ZHTWF0cml4KiBnZXRDVE0oKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBTVkdNYXRyaXgqIGdl
dFNjcmVlbkNUTSgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBnZXRD
VE0oKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gZ2V0U2NyZWVuQ1RN
KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgU1ZHRWxlbWVudCogbmVhcmVzdFZpZXdwb3J0RWxl
bWVudCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIFNWR0VsZW1lbnQqIGZhcnRoZXN0Vmlld3Bv
cnRFbGVtZW50KCkgY29uc3Q7CiAKQEAgLTYyLDcgKzYwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAg
ICAgIG11dGFibGUgUmVmUHRyPFNWR01hdHJpeD4gbV9sb2NhbE1hdHJpeDsKKyAgICAgICAgbXV0
YWJsZSBBZmZpbmVUcmFuc2Zvcm0gbV9sb2NhbE1hdHJpeDsKICAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfREVDTEFSQVRJT05TKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LCBTVkdUcmFu
c2Zvcm1MaXN0KiwgUmVmUHRyPFNWR1RyYW5zZm9ybUxpc3Q+LCBUcmFuc2Zvcm0sIHRyYW5zZm9y
bSkKICAgICB9OwogCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCShyZXZp
c2lvbiAxODE3NikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjQsMTAgKzI0LDEwIEBACiAjaWZkZWYgU1ZHX1NVUFBPUlQKICNpbmNs
dWRlICJTVkdUZXh0RWxlbWVudC5oIgogCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAj
aW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHVGV4dC5oIgogI2luY2x1
ZGUgIlNWR0xlbmd0aExpc3QuaCIKLSNpbmNsdWRlICJTVkdNYXRyaXguaCIKICNpbmNsdWRlICJT
VkdSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlNWR1RTcGFuRWxlbWVudC5oIgogI2luY2x1ZGUg
IlNWR1RyYW5zZm9ybUxpc3QuaCIKQEAgLTQ3LDkgKzQ3LDkgQEAgU1ZHVGV4dEVsZW1lbnQ6On5T
VkdUZXh0RWxlbWVudCgpCiAKIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1RleHRF
bGVtZW50LCBTVkdUcmFuc2Zvcm1MaXN0KiwgVHJhbnNmb3JtTGlzdCwgdHJhbnNmb3JtTGlzdCwg
VHJhbnNmb3JtLCB0cmFuc2Zvcm0sIFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyLmxvY2FsTmFtZSgp
LCBtX3RyYW5zZm9ybS5nZXQoKSkKIAotU1ZHTWF0cml4KiBTVkdUZXh0RWxlbWVudDo6bG9jYWxN
YXRyaXgoKSBjb25zdAorQWZmaW5lVHJhbnNmb3JtIFNWR1RleHRFbGVtZW50Ojpsb2NhbE1hdHJp
eCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGxhenlfY3JlYXRlPFNWR01hdHJpeD4obV9sb2NhbE1h
dHJpeCk7CisgICAgcmV0dXJuIG1fbG9jYWxNYXRyaXg7CiB9CiAKIHZvaWQgU1ZHVGV4dEVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKQEAgLTc1LDcg
Kzc1LDcgQEAgdm9pZCBTVkdUZXh0RWxlbWVudDo6dXBkYXRlTG9jYWxUcmFuc2ZvcgogICAgIGlm
IChsb2NhbFRyYW5zZm9ybSkgewogICAgICAgICBtX2xvY2FsTWF0cml4ID0gbG9jYWxUcmFuc2Zv
cm0tPm1hdHJpeCgpOwogICAgICAgICBpZiAocmVuZGVyZXIoKSkgewotICAgICAgICAgICAgcmVu
ZGVyZXIoKS0+c2V0TG9jYWxUcmFuc2Zvcm0obV9sb2NhbE1hdHJpeC0+bWF0cml4KCkpOworICAg
ICAgICAgICAgcmVuZGVyZXIoKS0+c2V0TG9jYWxUcmFuc2Zvcm0obV9sb2NhbE1hdHJpeCk7CiAg
ICAgICAgICAgICByZW5kZXJlcigpLT5zZXROZWVkc0xheW91dCh0cnVlKTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTg1LDggKzg1LDggQEAgdm9pZCBTVkdUZXh0RWxlbWVudDo6YXR0YWNoKCkKIHsK
ICAgICBTVkdTdHlsZWRFbGVtZW50OjphdHRhY2goKTsKIAotICAgIGlmIChyZW5kZXJlcigpICYm
IG1fbG9jYWxNYXRyaXgpCi0gICAgICAgIHJlbmRlcmVyKCktPnNldExvY2FsVHJhbnNmb3JtKG1f
bG9jYWxNYXRyaXgtPm1hdHJpeCgpKTsKKyAgICBpZiAocmVuZGVyZXIoKSAmJiAhbV9sb2NhbE1h
dHJpeC5pc0lkZW50aXR5KCkpCisgICAgICAgIHJlbmRlcmVyKCktPnNldExvY2FsVHJhbnNmb3Jt
KG1fbG9jYWxNYXRyaXgpOwogfQogCiBTVkdFbGVtZW50KiBTVkdUZXh0RWxlbWVudDo6bmVhcmVz
dFZpZXdwb3J0RWxlbWVudCgpIGNvbnN0CkBAIC0xMDQsMTIgKzEwNCwxMiBAQCBGbG9hdFJlY3Qg
U1ZHVGV4dEVsZW1lbnQ6OmdldEJCb3goKSBjb25zCiAgICAgcmV0dXJuIFNWR1RyYW5zZm9ybWFi
bGU6OmdldEJCb3godGhpcyk7CiB9CiAKLVNWR01hdHJpeCogU1ZHVGV4dEVsZW1lbnQ6OmdldFNj
cmVlbkNUTSgpIGNvbnN0CitBZmZpbmVUcmFuc2Zvcm0gU1ZHVGV4dEVsZW1lbnQ6OmdldFNjcmVl
bkNUTSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNWR1RyYW5zZm9ybWFibGU6OmdldFNjcmVlbkNU
TSh0aGlzKTsKIH0KIAotU1ZHTWF0cml4KiBTVkdUZXh0RWxlbWVudDo6Z2V0Q1RNKCkgY29uc3QK
K0FmZmluZVRyYW5zZm9ybSBTVkdUZXh0RWxlbWVudDo6Z2V0Q1RNKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gU1ZHVHJhbnNmb3JtYWJsZTo6Z2V0Q1RNKHRoaXMpOwogfQpJbmRleDogV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHVGV4dEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdUZXh0RWxlbWVudC5oCShyZXZpc2lvbiAxODE3NikKKysrIFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR1RleHRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDE0ICs0MywxNCBAQCBuYW1l
c3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIFNWR0VsZW1lbnQqIGZhcnRoZXN0Vmlld3Bv
cnRFbGVtZW50KCkgY29uc3Q7CiAKICAgICAgICAgdmlydHVhbCBGbG9hdFJlY3QgZ2V0QkJveCgp
IGNvbnN0OwotICAgICAgICB2aXJ0dWFsIFNWR01hdHJpeCogZ2V0Q1RNKCkgY29uc3Q7Ci0gICAg
ICAgIHZpcnR1YWwgU1ZHTWF0cml4KiBnZXRTY3JlZW5DVE0oKSBjb25zdDsKKyAgICAgICAgdmly
dHVhbCBBZmZpbmVUcmFuc2Zvcm0gZ2V0Q1RNKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgQWZm
aW5lVHJhbnNmb3JtIGdldFNjcmVlbkNUTSgpIGNvbnN0OwogCiAgICAgICAgIHZpcnR1YWwgYm9v
bCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxl
bWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KICAgICAgICAgdmlydHVhbCBSZW5kZXJP
YmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICAg
ICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSopIGNvbnN0Owog
ICAgICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7Ci0gICAgICAgIHZpcnR1YWwgU1ZHTWF0cml4
KiBsb2NhbE1hdHJpeCgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBs
b2NhbE1hdHJpeCgpIGNvbnN0OwogICAgICAgICAKICAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUxvY2FsVHJhbnNmb3JtKFNWR1RyYW5zZm9ybUxpc3QqKTsKICAgICAgICAgCkBAIC01OCw3ICs1
OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVu
dCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CiAKICAgICBwcml2YXRl
OgotICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdNYXRyaXg+IG1fbG9jYWxNYXRyaXg7CisgICAg
ICAgIG11dGFibGUgQWZmaW5lVHJhbnNmb3JtIG1fbG9jYWxNYXRyaXg7CiAgICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdUZXh0RWxlbWVudCwgU1ZHVHJhbnNmb3JtTGlz
dCosIFJlZlB0cjxTVkdUcmFuc2Zvcm1MaXN0PiwgVHJhbnNmb3JtLCB0cmFuc2Zvcm0pCiAgICAg
fTsKIApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm0uY3BwCShyZXZpc2lvbiAxODE3NikK
KysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIzLDcgKzIzLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpZmRlZiBTVkdfU1VQUE9SVAog
Ci0jaW5jbHVkZSAiU1ZHTWF0cml4LmgiCisjaW5jbHVkZSAiU1ZHQW5nbGUuaCIKICNpbmNsdWRl
ICJTVkdUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCiAKQEAgLTMxLDcg
KzMxLDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFNWR1RyYW5zZm9ybTo6U1ZHVHJh
bnNmb3JtKCkKICAgICA6IFNoYXJlZDxTVkdUcmFuc2Zvcm0+KCkKLSAgICAsIG1fbWF0cml4KFNW
R1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR01hdHJpeCgpKQogewogICAgIG1fdHlwZSA9IFNWR19UUkFO
U0ZPUk1fVU5LTk9XTjsKICAgICBtX2FuZ2xlID0gMDsKQEAgLTQ2LDkgKzQ1LDkgQEAgdW5zaWdu
ZWQgc2hvcnQgU1ZHVHJhbnNmb3JtOjp0eXBlKCkgY29ucwogICAgIHJldHVybiBtX3R5cGU7CiB9
CiAKLVNWR01hdHJpeCAqU1ZHVHJhbnNmb3JtOjptYXRyaXgoKSBjb25zdAorQWZmaW5lVHJhbnNm
b3JtIFNWR1RyYW5zZm9ybTo6bWF0cml4KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9tYXRyaXgu
Z2V0KCk7CisgICAgcmV0dXJuIG1fbWF0cml4OwogfQogCiBkb3VibGUgU1ZHVHJhbnNmb3JtOjph
bmdsZSgpIGNvbnN0CkBAIC01NiwxMSArNTUsMTEgQEAgZG91YmxlIFNWR1RyYW5zZm9ybTo6YW5n
bGUoKSBjb25zdAogICAgIHJldHVybiBtX2FuZ2xlOwogfQogCi12b2lkIFNWR1RyYW5zZm9ybTo6
c2V0TWF0cml4KFNWR01hdHJpeCAqbWF0cml4KQordm9pZCBTVkdUcmFuc2Zvcm06OnNldE1hdHJp
eChjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIG1hdHJpeCkKIHsKICAgICBtX3R5cGUgPSBTVkdfVFJB
TlNGT1JNX01BVFJJWDsKICAgICBtX2FuZ2xlID0gMDsKLSAgICAKKwogICAgIG1fbWF0cml4ID0g
bWF0cml4OwogfQogCkBAIC02OCw0OCArNjcsNDggQEAgdm9pZCBTVkdUcmFuc2Zvcm06OnNldFRy
YW5zbGF0ZShkb3VibGUgdAogewogICAgIG1fdHlwZSA9IFNWR19UUkFOU0ZPUk1fVFJBTlNMQVRF
OwogICAgIG1fYW5nbGUgPSAwOwotICAgIAotICAgIG1fbWF0cml4LT5yZXNldCgpOwotICAgIG1f
bWF0cml4LT50cmFuc2xhdGUodHgsIHR5KTsKKworICAgIG1fbWF0cml4LnJlc2V0KCk7CisgICAg
bV9tYXRyaXgudHJhbnNsYXRlKHR4LCB0eSk7CiB9CiAKIHZvaWQgU1ZHVHJhbnNmb3JtOjpzZXRT
Y2FsZShkb3VibGUgc3gsIGRvdWJsZSBzeSkKIHsKICAgICBtX3R5cGUgPSBTVkdfVFJBTlNGT1JN
X1NDQUxFOwogICAgIG1fYW5nbGUgPSAwOwotICAgIAotICAgIG1fbWF0cml4LT5yZXNldCgpOwot
ICAgIG1fbWF0cml4LT5zY2FsZU5vblVuaWZvcm0oc3gsIHN5KTsKKworICAgIG1fbWF0cml4LnJl
c2V0KCk7CisgICAgbV9tYXRyaXguc2NhbGUoc3gsIHN5KTsKIH0KIAogdm9pZCBTVkdUcmFuc2Zv
cm06OnNldFJvdGF0ZShkb3VibGUgYW5nbGUsIGRvdWJsZSBjeCwgZG91YmxlIGN5KQogewogICAg
IG1fdHlwZSA9IFNWR19UUkFOU0ZPUk1fUk9UQVRFOwogICAgIG1fYW5nbGUgPSBhbmdsZTsKLSAg
ICAKKwogICAgIC8vIFRPRE86IHRvU3RyaW5nKCkgaW1wbGVtZW50YXRpb24sIHdoaWNoIGNhbiBz
aG93IGN4LCBjeSAobmVlZCB0byBiZSBzdG9yZWQ/KQotICAgIG1fbWF0cml4LT5yZXNldCgpOwot
ICAgIG1fbWF0cml4LT50cmFuc2xhdGUoY3gsIGN5KTsKLSAgICBtX21hdHJpeC0+cm90YXRlKGFu
Z2xlKTsKLSAgICBtX21hdHJpeC0+dHJhbnNsYXRlKC1jeCwgLWN5KTsKKyAgICBtX21hdHJpeC5y
ZXNldCgpOworICAgIG1fbWF0cml4LnRyYW5zbGF0ZShjeCwgY3kpOworICAgIG1fbWF0cml4LnJv
dGF0ZShhbmdsZSk7CisgICAgbV9tYXRyaXgudHJhbnNsYXRlKC1jeCwgLWN5KTsKIH0KIAogdm9p
ZCBTVkdUcmFuc2Zvcm06OnNldFNrZXdYKGRvdWJsZSBhbmdsZSkKIHsKICAgICBtX3R5cGUgPSBT
VkdfVFJBTlNGT1JNX1NLRVdYOwogICAgIG1fYW5nbGUgPSBhbmdsZTsKLSAgICAKLSAgICBtX21h
dHJpeC0+cmVzZXQoKTsKLSAgICBtX21hdHJpeC0+c2tld1goYW5nbGUpOworCisgICAgbV9tYXRy
aXgucmVzZXQoKTsKKyAgICBtX21hdHJpeC5zaGVhcih0YW4oU1ZHQW5nbGU6OnRvcmFkKGFuZ2xl
KSksIDAuMGYpOwogfQogCiB2b2lkIFNWR1RyYW5zZm9ybTo6c2V0U2tld1koZG91YmxlIGFuZ2xl
KQogewogICAgIG1fdHlwZSA9IFNWR19UUkFOU0ZPUk1fU0tFV1k7CiAgICAgbV9hbmdsZSA9IGFu
Z2xlOwotICAgIAotICAgIG1fbWF0cml4LT5yZXNldCgpOwotICAgIG1fbWF0cml4LT5za2V3WShh
bmdsZSk7CisKKyAgICBtX21hdHJpeC5yZXNldCgpOworICAgIG1fbWF0cml4LnNoZWFyKDAuMGYs
IHRhbihTVkdBbmdsZTo6dG9yYWQoYW5nbGUpKSk7CiB9CiAKIC8vIHZpbTp0cz00Om5vZXQKSW5k
ZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybS5oCShyZXZpc2lvbiAxODE3NikKKysrIFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxMiArMjQsMTIg
QEAKICNkZWZpbmUgS1NWR19TVkdUcmFuc2Zvcm1JbXBsX0gKICNpZmRlZiBTVkdfU1VQUE9SVAog
CisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiU2hhcmVkLmgiCiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBT
VkdNYXRyaXg7CiAgICAgY2xhc3MgU1ZHVHJhbnNmb3JtIDogcHVibGljIFNoYXJlZDxTVkdUcmFu
c2Zvcm0+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIGVudW0gU1ZHVHJhbnNmb3JtVHlwZSB7CkBA
IC00NywxMSArNDcsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgICAgCiAg
ICAgICAgIHVuc2lnbmVkIHNob3J0IHR5cGUoKSBjb25zdDsKIAotICAgICAgICBTVkdNYXRyaXgq
IG1hdHJpeCgpIGNvbnN0OworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gbWF0cml4KCkgY29uc3Q7
CiAgICAgCiAgICAgICAgIGRvdWJsZSBhbmdsZSgpIGNvbnN0OwogCi0gICAgICAgIHZvaWQgc2V0
TWF0cml4KFNWR01hdHJpeCopOworICAgICAgICB2b2lkIHNldE1hdHJpeChjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mKTsKICAgICAgICAgdm9pZCBzZXRUcmFuc2xhdGUoZG91YmxlIHR4LCBkb3VibGUg
dHkpOwogICAgICAgICB2b2lkIHNldFNjYWxlKGRvdWJsZSBzeCwgZG91YmxlIHN5KTsKICAgICAg
ICAgdm9pZCBzZXRSb3RhdGUoZG91YmxlIGFuZ2xlLCBkb3VibGUgY3gsIGRvdWJsZSBjeSk7CkBA
IC02MSw3ICs2MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwcml2YXRlOgogICAgICAg
ICBkb3VibGUgbV9hbmdsZTsKICAgICAgICAgdW5zaWduZWQgc2hvcnQgbV90eXBlOwotICAgICAg
ICBSZWZQdHI8U1ZHTWF0cml4PiBtX21hdHJpeDsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIG1f
bWF0cml4OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuY3BwCShyZXZpc2lvbiAxODE3NikKKysrIFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsy
NCw3IEBACiAKICNpZmRlZiBTVkdfU1VQUE9SVAogCi0jaW5jbHVkZSAiU1ZHTWF0cml4LmgiCisj
aW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtLmgiCiAj
aW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3QuaCIK
QEAgLTQwLDcgKzQwLDcgQEAgU1ZHVHJhbnNmb3JtTGlzdDo6flNWR1RyYW5zZm9ybUxpc3QoKQog
ewogfQogCi1SZWZQdHI8U1ZHVHJhbnNmb3JtPiBTVkdUcmFuc2Zvcm1MaXN0OjpjcmVhdGVTVkdU
cmFuc2Zvcm1Gcm9tTWF0cml4KFNWR01hdHJpeCogbWF0cml4KSBjb25zdAorUmVmUHRyPFNWR1Ry
YW5zZm9ybT4gU1ZHVHJhbnNmb3JtTGlzdDo6Y3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIG1hdHJpeCkgY29uc3QKIHsKICAgICByZXR1cm4gU1ZHU1ZH
RWxlbWVudDo6Y3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChtYXRyaXgpOwogfQpAQCAtNjIs
MTEgKzYyLDExIEBAIFNWR1RyYW5zZm9ybSogU1ZHVHJhbnNmb3JtTGlzdDo6Y29uY2F0ZW4KICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgICAgIAogICAgIFNWR1RyYW5zZm9ybSogb2JqID0gU1ZHU1ZH
RWxlbWVudDo6Y3JlYXRlU1ZHVHJhbnNmb3JtKCk7Ci0gICAgU1ZHTWF0cml4KiBtYXRyaXggPSBT
VkdTVkdFbGVtZW50OjpjcmVhdGVTVkdNYXRyaXgoKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gbWF0
cml4OwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgZm9yKHVuc2lnbmVkIGludCBp
ID0gMDsgaSA8IGxlbmd0aDsgaSsrKQotICAgICAgICBtYXRyaXgtPm11bHRpcGx5KGdldEl0ZW0o
aSwgZWMpLT5tYXRyaXgoKSk7CisgICAgICAgIG1hdHJpeCA9IGdldEl0ZW0oaSwgZWMpLT5tYXRy
aXgoKSAqIG1hdHJpeDsKIAogICAgIG9iai0+c2V0TWF0cml4KG1hdHJpeCk7CiAgICAgcmV0dXJu
IG9iajsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmgJKHJldmlzaW9uIDE4
MTc2KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtTGlzdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU1ZHVHJh
bnNmb3JtTGlzdCgpOwogICAgICAgICB2aXJ0dWFsIH5TVkdUcmFuc2Zvcm1MaXN0KCk7CiAKLSAg
ICAgICAgUmVmUHRyPFNWR1RyYW5zZm9ybT4gY3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChT
VkdNYXRyaXgqKSBjb25zdDsKKyAgICAgICAgUmVmUHRyPFNWR1RyYW5zZm9ybT4gY3JlYXRlU1ZH
VHJhbnNmb3JtRnJvbU1hdHJpeChjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKSBjb25zdDsKICAgICAg
ICAgUmVmUHRyPFNWR1RyYW5zZm9ybT4gY29uc29saWRhdGUoKTsKIAogICAgICAgICAvLyBJbnRl
cm5hbCB1c2Ugb25seQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5jcHAJ
KHJldmlzaW9uIDE4MTc2KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIAogI2luY2x1ZGUgIlJlZ3VsYXJF
eHByZXNzaW9uLmgiCiAjaW5jbHVkZSAiU1ZHSGVscGVyLmgiCi0jaW5jbHVkZSAiU1ZHTWF0cml4
LmgiCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIK
ICNpbmNsdWRlICJTVkdTdHlsZWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlz
dC5oIgpAQCAtNDEsMTggKzQxLDE2IEBAIFNWR1RyYW5zZm9ybWFibGU6On5TVkdUcmFuc2Zvcm1h
YmxlKCkKIHsKIH0KIAotU1ZHTWF0cml4KiBTVkdUcmFuc2Zvcm1hYmxlOjpnZXRDVE0oY29uc3Qg
U1ZHRWxlbWVudCogZWxlbWVudCkgY29uc3QKK0FmZmluZVRyYW5zZm9ybSBTVkdUcmFuc2Zvcm1h
YmxlOjpnZXRDVE0oY29uc3QgU1ZHRWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKLSAgICBTVkdN
YXRyaXgqIGN0bSA9IFNWR0xvY2F0YWJsZTo6Z2V0Q1RNKGVsZW1lbnQpOwotICAgIGN0bS0+bXVs
dGlwbHkobG9jYWxNYXRyaXgoKSk7Ci0gICAgcmV0dXJuIGN0bTsKKyAgICBBZmZpbmVUcmFuc2Zv
cm0gY3RtID0gU1ZHTG9jYXRhYmxlOjpnZXRDVE0oZWxlbWVudCk7CisgICAgcmV0dXJuIGxvY2Fs
TWF0cml4KCkgKiBjdG07CiB9CiAKLVNWR01hdHJpeCogU1ZHVHJhbnNmb3JtYWJsZTo6Z2V0U2Ny
ZWVuQ1RNKGNvbnN0IFNWR0VsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CitBZmZpbmVUcmFuc2Zvcm0g
U1ZHVHJhbnNmb3JtYWJsZTo6Z2V0U2NyZWVuQ1RNKGNvbnN0IFNWR0VsZW1lbnQqIGVsZW1lbnQp
IGNvbnN0CiB7Ci0gICAgU1ZHTWF0cml4KiBjdG0gPSBTVkdMb2NhdGFibGU6OmdldFNjcmVlbkNU
TShlbGVtZW50KTsKLSAgICBjdG0tPm11bHRpcGx5KGxvY2FsTWF0cml4KCkpOwotICAgIHJldHVy
biBjdG07CisgICAgQWZmaW5lVHJhbnNmb3JtIGN0bSA9IFNWR0xvY2F0YWJsZTo6Z2V0U2NyZWVu
Q1RNKGVsZW1lbnQpOworICAgIHJldHVybiBsb2NhbE1hdHJpeCgpICogY3RtOwogfQogCiBib29s
IFNWR1RyYW5zZm9ybWFibGU6OnBhcnNlVHJhbnNmb3JtQXR0cmlidXRlKFNWR1RyYW5zZm9ybUxp
c3QqIGxpc3QsIGNvbnN0IEF0b21pY1N0cmluZyYgdHJhbnNmb3JtKQpAQCAtMTEyLDEyICsxMTAs
MTIgQEAgYm9vbCBTVkdUcmFuc2Zvcm1hYmxlOjpwYXJzZVRyYW5zZm9ybUF0dAogICAgICAgICBl
bHNlIGlmIChzdWJ0cmFuc2Zvcm1bMF0gPT0gInNrZXd5IiAmJiBucGFyYW1zID09IDEpCiAgICAg
ICAgICAgICB0LT5zZXRTa2V3WShwYXJhbXNbMF0udG9Eb3VibGUoKSk7CiAgICAgICAgIGVsc2Ug
aWYgKHN1YnRyYW5zZm9ybVswXSA9PSAibWF0cml4IiAmJiBucGFyYW1zID09IDYpIHsKLSAgICAg
ICAgICAgIFNWR01hdHJpeCogcmV0ID0gbmV3IFNWR01hdHJpeChwYXJhbXNbMF0udG9Eb3VibGUo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMV0u
dG9Eb3VibGUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJhbXNbMl0udG9Eb3VibGUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYXJhbXNbM10udG9Eb3VibGUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwYXJhbXNbNF0udG9Eb3VibGUoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbNV0udG9Eb3VibGUoKSk7CisgICAgICAg
ICAgICBBZmZpbmVUcmFuc2Zvcm0gcmV0KHBhcmFtc1swXS50b0RvdWJsZSgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMV0udG9Eb3VibGUoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzJdLnRvRG91YmxlKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcmFtc1szXS50b0RvdWJsZSgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwYXJhbXNbNF0udG9Eb3VibGUoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGFyYW1zWzVdLnRvRG91YmxlKCkpOwogICAgICAgICAgICAgdC0+c2V0
TWF0cml4KHJldCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBkZWxldGUgdDsKSW5k
ZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybWFibGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmgJKHJldmlzaW9uIDE4MTc2KQorKysg
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw3ICsyOSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiAgICAgY2xhc3MgQXRvbWlj
U3RyaW5nOwotICAgIGNsYXNzIFNWR01hdHJpeDsKKyAgICBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07
CiAgICAgY2xhc3MgU1ZHVHJhbnNmb3JtTGlzdDsKIAogICAgIGNsYXNzIFNWR1RyYW5zZm9ybWFi
bGUgOiB2aXJ0dWFsIHB1YmxpYyBTVkdMb2NhdGFibGUgewpAQCAtMzgsMTMgKzM4LDEzIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB+U1ZHVHJhbnNmb3JtYWJsZSgpOwog
CiAgICAgICAgIC8vICdTVkdUcmFuc2Zvcm1hYmxlJyBmdW5jdGlvbnMKLSAgICAgICAgdmlydHVh
bCBTVkdNYXRyaXgqIGxvY2FsTWF0cml4KCkgY29uc3QgPSAwOworICAgICAgICB2aXJ0dWFsIEFm
ZmluZVRyYW5zZm9ybSBsb2NhbE1hdHJpeCgpIGNvbnN0ID0gMDsKIAogICAgICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlTG9jYWxUcmFuc2Zvcm0oU1ZHVHJhbnNmb3JtTGlzdCopID0gMDsKIAogICAg
ICAgICBzdGF0aWMgYm9vbCBwYXJzZVRyYW5zZm9ybUF0dHJpYnV0ZShTVkdUcmFuc2Zvcm1MaXN0
KiwgY29uc3QgQXRvbWljU3RyaW5nJiB0cmFuc2Zvcm0pOwotICAgICAgICBTVkdNYXRyaXgqIGdl
dENUTShjb25zdCBTVkdFbGVtZW50KikgY29uc3Q7Ci0gICAgICAgIFNWR01hdHJpeCogZ2V0U2Ny
ZWVuQ1RNKGNvbnN0IFNWR0VsZW1lbnQqKSBjb25zdDsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3Jt
IGdldENUTShjb25zdCBTVkdFbGVtZW50KikgY29uc3Q7CisgICAgICAgIEFmZmluZVRyYW5zZm9y
bSBnZXRTY3JlZW5DVE0oY29uc3QgU1ZHRWxlbWVudCopIGNvbnN0OwogICAgIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQWZmaW5l
VHJhbnNmb3JtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Fm
ZmluZVRyYW5zZm9ybS5jcHAJKHJldmlzaW9uIDE4MTc2KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9BZmZpbmVUcmFuc2Zvcm0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMSArMjks
NTUgQEAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAKKyNp
bmNsdWRlIDxtYXRoLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY29uc3QgZG91YmxlIGRl
ZzJyYWQgPSAwLjAxNzQ1MzI5MjUxOTk0MzI5NTc2OTsgLy8gcGkvMTgwCisKIGJvb2wgQWZmaW5l
VHJhbnNmb3JtOjppc0ludmVydGlibGUoKSBjb25zdAogewogICAgIHJldHVybiBkZXQoKSAhPSAw
LjA7CiB9CiAKK0FmZmluZVRyYW5zZm9ybSYgQWZmaW5lVHJhbnNmb3JtOjptdWx0aXBseShjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIG90aGVyKQoreworICAgIHJldHVybiAoKnRoaXMpICo9IG90aGVy
OworfQorCitBZmZpbmVUcmFuc2Zvcm0mIEFmZmluZVRyYW5zZm9ybTo6c2NhbGUoZG91YmxlIHMp
Cit7CisgICAgcmV0dXJuIHNjYWxlKHMsIHMpOworfQorCitBZmZpbmVUcmFuc2Zvcm0mIEFmZmlu
ZVRyYW5zZm9ybTo6c2NhbGVOb25Vbmlmb3JtKGRvdWJsZSBzeCwgZG91YmxlIHN5KQoreworICAg
IHJldHVybiBzY2FsZShzeCwgc3kpOworfQorCitBZmZpbmVUcmFuc2Zvcm0mIEFmZmluZVRyYW5z
Zm9ybTo6cm90YXRlRnJvbVZlY3Rvcihkb3VibGUgeCwgZG91YmxlIHkpCit7CisgICAgcmV0dXJu
IHJvdGF0ZShhdGFuMih5LCB4KSAvIGRlZzJyYWQpOworfQorCitBZmZpbmVUcmFuc2Zvcm0mIEFm
ZmluZVRyYW5zZm9ybTo6ZmxpcFgoKQoreworICAgIHJldHVybiBzY2FsZSgtMS4wZiwgMS4wZik7
Cit9CisKK0FmZmluZVRyYW5zZm9ybSYgQWZmaW5lVHJhbnNmb3JtOjpmbGlwWSgpCit7CisgICAg
cmV0dXJuIHNjYWxlKDEuMGYsIC0xLjBmKTsKK30KKworQWZmaW5lVHJhbnNmb3JtJiBBZmZpbmVU
cmFuc2Zvcm06OnNrZXdYKGRvdWJsZSBhbmdsZSkKK3sKKyAgICByZXR1cm4gc2hlYXIodGFuKGFu
Z2xlICogZGVnMnJhZCksIDAuMGYpOworfQorCitBZmZpbmVUcmFuc2Zvcm0mIEFmZmluZVRyYW5z
Zm9ybTo6c2tld1koZG91YmxlIGFuZ2xlKQoreworICAgIHJldHVybiBzaGVhcigwLjBmLCB0YW4o
YW5nbGUgKiBkZWcycmFkKSk7Cit9CisKIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQWZmaW5lVHJhbnNmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9BZmZpbmVUcmFuc2Zvcm0uaAkocmV2aXNpb24gMTgxNzYpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0FmZmluZVRyYW5zZm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMyAr
MzYsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgSW50UmVjdDsKLSAg
ICBjbGFzcyBGbG9hdFJlY3Q7CitjbGFzcyBJbnRSZWN0OworY2xhc3MgRmxvYXRSZWN0OwogCiBj
bGFzcyBBZmZpbmVUcmFuc2Zvcm0gewogcHVibGljOgogICAgIEFmZmluZVRyYW5zZm9ybSgpOwot
ICAgIEFmZmluZVRyYW5zZm9ybShkb3VibGUgYSwgZG91YmxlIGIsIGRvdWJsZSBjLCBkb3VibGUg
ZCwgZG91YmxlIHR4LCBkb3VibGUgdHkpOworICAgIEFmZmluZVRyYW5zZm9ybShkb3VibGUgYSwg
ZG91YmxlIGIsIGRvdWJsZSBjLCBkb3VibGUgZCwgZG91YmxlIGUsIGRvdWJsZSBmKTsKICNpZiBQ
TEFURk9STShDRykKICAgICBBZmZpbmVUcmFuc2Zvcm0oQ0dBZmZpbmVUcmFuc2Zvcm0gdHJhbnNm
b3JtKTsKICNlbGlmIFBMQVRGT1JNKFFUKQpAQCAtNTEsMzAgKzUxLDQ5IEBAIHB1YmxpYzoKICAg
ICBBZmZpbmVUcmFuc2Zvcm0oY29uc3QgY2Fpcm9fbWF0cml4X3QgJm1hdHJpeCk7CiAjZW5kaWYK
IAotICAgIHZvaWQgc2V0TWF0cml4KGRvdWJsZSBhLCBkb3VibGUgYiwgZG91YmxlIGMsIGRvdWJs
ZSBkLCBkb3VibGUgdHgsIGRvdWJsZSB0eSk7CisgICAgdm9pZCBzZXRNYXRyaXgoZG91YmxlIGEs
IGRvdWJsZSBiLCBkb3VibGUgYywgZG91YmxlIGQsIGRvdWJsZSBlLCBkb3VibGUgZik7CiAgICAg
dm9pZCBtYXAoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgKngyLCBkb3VibGUgKnkyKSBjb25z
dDsKICAgICBJbnRSZWN0IG1hcFJlY3QoY29uc3QgSW50UmVjdCYpIGNvbnN0OwogICAgIEZsb2F0
UmVjdCBtYXBSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OwogICAgIAogICAgIGJvb2wgaXNJ
ZGVudGl0eSgpIGNvbnN0OwogICAgIAotICAgIGRvdWJsZSBtMTEoKSBjb25zdDsKLSAgICBkb3Vi
bGUgbTEyKCkgY29uc3Q7Ci0gICAgZG91YmxlIG0yMSgpIGNvbnN0OwotICAgIGRvdWJsZSBtMjIo
KSBjb25zdDsKLSAgICBkb3VibGUgZHgoKSBjb25zdDsKLSAgICBkb3VibGUgZHkoKSBjb25zdDsK
KyAgICBkb3VibGUgYSgpIGNvbnN0OworICAgIHZvaWQgc2V0QShkb3VibGUgYSk7CisKKyAgICBk
b3VibGUgYigpIGNvbnN0OworICAgIHZvaWQgc2V0Qihkb3VibGUgYik7CisKKyAgICBkb3VibGUg
YygpIGNvbnN0OworICAgIHZvaWQgc2V0Qyhkb3VibGUgYyk7CisKKyAgICBkb3VibGUgZCgpIGNv
bnN0OworICAgIHZvaWQgc2V0RChkb3VibGUgZCk7CisKKyAgICBkb3VibGUgZSgpIGNvbnN0Owor
ICAgIHZvaWQgc2V0RShkb3VibGUgZSk7CisKKyAgICBkb3VibGUgZigpIGNvbnN0OworICAgIHZv
aWQgc2V0Rihkb3VibGUgZik7CiAKICAgICB2b2lkIHJlc2V0KCk7Ci0gICAgCi0gICAgQWZmaW5l
VHJhbnNmb3JtICZzY2FsZShkb3VibGUgc3gsIGRvdWJsZSBzeSk7Ci0gICAgQWZmaW5lVHJhbnNm
b3JtICZyb3RhdGUoZG91YmxlIGQpOwotICAgIEFmZmluZVRyYW5zZm9ybSAmdHJhbnNsYXRlKGRv
dWJsZSB0eCwgZG91YmxlIHR5KTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gJnNoZWFyKGRvdWJsZSBz
eCwgZG91YmxlIHN5KTsKLSAgICAKKworICAgIEFmZmluZVRyYW5zZm9ybSYgbXVsdGlwbHkoY29u
c3QgQWZmaW5lVHJhbnNmb3JtJik7CisgICAgQWZmaW5lVHJhbnNmb3JtJiBzY2FsZShkb3VibGUp
OyAKKyAgICBBZmZpbmVUcmFuc2Zvcm0mIHNjYWxlKGRvdWJsZSBzeCwgZG91YmxlIHN5KTsgCisg
ICAgQWZmaW5lVHJhbnNmb3JtJiBzY2FsZU5vblVuaWZvcm0oZG91YmxlIHN4LCBkb3VibGUgc3kp
OworICAgIEFmZmluZVRyYW5zZm9ybSYgcm90YXRlKGRvdWJsZSBkKTsKKyAgICBBZmZpbmVUcmFu
c2Zvcm0mIHJvdGF0ZUZyb21WZWN0b3IoZG91YmxlIHgsIGRvdWJsZSB5KTsKKyAgICBBZmZpbmVU
cmFuc2Zvcm0mIHRyYW5zbGF0ZShkb3VibGUgdHgsIGRvdWJsZSB0eSk7CisgICAgQWZmaW5lVHJh
bnNmb3JtJiBzaGVhcihkb3VibGUgc3gsIGRvdWJsZSBzeSk7CisgICAgQWZmaW5lVHJhbnNmb3Jt
JiBmbGlwWCgpOworICAgIEFmZmluZVRyYW5zZm9ybSYgZmxpcFkoKTsKKyAgICBBZmZpbmVUcmFu
c2Zvcm0mIHNrZXdYKGRvdWJsZSBhbmdsZSk7CisgICAgQWZmaW5lVHJhbnNmb3JtJiBza2V3WShk
b3VibGUgYW5nbGUpOworIAogICAgIGRvdWJsZSBkZXQoKSBjb25zdDsKICAgICBib29sIGlzSW52
ZXJ0aWJsZSgpIGNvbnN0OwotICAgIEFmZmluZVRyYW5zZm9ybSBpbnZlcnQoKSBjb25zdDsKKyAg
ICBBZmZpbmVUcmFuc2Zvcm0gaW52ZXJzZSgpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oQ0cpCiAg
ICAgb3BlcmF0b3IgQ0dBZmZpbmVUcmFuc2Zvcm0oKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQWZmaW5lVHJhbnNmb3JtQ2Fpcm8uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQWZmaW5lVHJhbnNmb3JtQ2Fpcm8u
Y3BwCShyZXZpc2lvbiAxODE3NikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
QWZmaW5lVHJhbnNmb3JtQ2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsMzYgKzEzMyw2
NiBAQCBib29sIEFmZmluZVRyYW5zZm9ybTo6aXNJZGVudGl0eSgpIGNvbnN0CiAgICAgICAgICAm
JiAobV90cmFuc2Zvcm0ueDAgPT0gMCkgJiYgKG1fdHJhbnNmb3JtLnkwID09IDApKTsKIH0KIAot
ZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6bTExKCkgY29uc3QKK2RvdWJsZSBBZmZpbmVUcmFuc2Zv
cm06OmEoKSBjb25zdAogewogICAgIHJldHVybiBtX3RyYW5zZm9ybS54eDsKIH0KIAotZG91Ymxl
IEFmZmluZVRyYW5zZm9ybTo6bTEyKCkgY29uc3QKK3ZvaWQgQWZmaW5lVHJhbnNmb3JtOjpzZXRB
KGRvdWJsZSBhKQoreworICAgIG1fdHJhbnNmb3JtLnh4ID0gYTsKK30KKworZG91YmxlIEFmZmlu
ZVRyYW5zZm9ybTo6YigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHJhbnNmb3JtLnh5OwogfQog
Ci1kb3VibGUgQWZmaW5lVHJhbnNmb3JtOjptMjEoKSBjb25zdAordm9pZCBBZmZpbmVUcmFuc2Zv
cm06OnNldEIoZG91YmxlIGIpCit7CisgICAgbV90cmFuc2Zvcm0ueHkgPSBiOworfQorCitkb3Vi
bGUgQWZmaW5lVHJhbnNmb3JtOjpjKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90cmFuc2Zvcm0u
eXg7CiB9CiAKLWRvdWJsZSBBZmZpbmVUcmFuc2Zvcm06Om0yMigpIGNvbnN0Cit2b2lkIEFmZmlu
ZVRyYW5zZm9ybTo6c2V0Qyhkb3VibGUgYykKK3sKKyAgICBtX3RyYW5zZm9ybS55eCA9IGM7Cit9
CisKK2RvdWJsZSBBZmZpbmVUcmFuc2Zvcm06OmQoKSBjb25zdAogewogICAgIHJldHVybiBtX3Ry
YW5zZm9ybS55eTsKIH0KIAotZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6ZHgoKSBjb25zdAordm9p
ZCBBZmZpbmVUcmFuc2Zvcm06OnNldEQoZG91YmxlIGQpCit7CisgICAgbV90cmFuc2Zvcm0ueXkg
PSBkOworfQorCitkb3VibGUgQWZmaW5lVHJhbnNmb3JtOjplKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV90cmFuc2Zvcm0ueDA7CiB9CiAKLWRvdWJsZSBBZmZpbmVUcmFuc2Zvcm06OmR5KCkgY29u
c3QKK3ZvaWQgQWZmaW5lVHJhbnNmb3JtOjpzZXRFKGRvdWJsZSBlKQoreworICAgIG1fdHJhbnNm
b3JtLngwID0gZTsKK30KKworZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6ZigpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fdHJhbnNmb3JtLnkwOwogfQogCit2b2lkIEFmZmluZVRyYW5zZm9ybTo6c2V0
Rihkb3VibGUgZikKK3sKKyAgICBtX3RyYW5zZm9ybS55MCA9IGY7Cit9CisKIHZvaWQgQWZmaW5l
VHJhbnNmb3JtOjpyZXNldCgpCiB7CiAgICAgY2Fpcm9fbWF0cml4X2luaXRfaWRlbnRpdHkoJm1f
dHJhbnNmb3JtKTsKQEAgLTIwMyw3ICsyMzMsNyBAQCBkb3VibGUgQWZmaW5lVHJhbnNmb3JtOjpk
ZXQoKSBjb25zdAogICAgIHJldHVybiBtX3RyYW5zZm9ybS54eCAqIG1fdHJhbnNmb3JtLnl5IC0g
bV90cmFuc2Zvcm0ueHkgKiBtX3RyYW5zZm9ybS55eDsKIH0KIAotQWZmaW5lVHJhbnNmb3JtIEFm
ZmluZVRyYW5zZm9ybTo6aW52ZXJ0KCkgY29uc3QKK0FmZmluZVRyYW5zZm9ybSBBZmZpbmVUcmFu
c2Zvcm06OmludmVyc2UoKSBjb25zdAogewogICAgIGlmICghaXNJbnZlcnRpYmxlKCkpIHJldHVy
biBBZmZpbmVUcmFuc2Zvcm0oKTsKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9BZmZpbmVUcmFuc2Zvcm1DRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9BZmZpbmVUcmFuc2Zvcm1DRy5jcHAJKHJldmlzaW9uIDE4MTc2KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9BZmZpbmVUcmFuc2Zvcm1DRy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc3LDM2ICs3Nyw2NiBAQCBib29sIEFmZmluZVRyYW5zZm9ybTo6aXNJZGVudGl0
eSgpIGNvbnN0CiAgICAgcmV0dXJuIENHQWZmaW5lVHJhbnNmb3JtSXNJZGVudGl0eShtX3RyYW5z
Zm9ybSk7CiB9CiAKLWRvdWJsZSBBZmZpbmVUcmFuc2Zvcm06Om0xMSgpIGNvbnN0Citkb3VibGUg
QWZmaW5lVHJhbnNmb3JtOjphKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90cmFuc2Zvcm0uYTsK
IH0KIAotZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6bTEyKCkgY29uc3QKK3ZvaWQgQWZmaW5lVHJh
bnNmb3JtOjpzZXRBKGRvdWJsZSBhKQoreworICAgIG1fdHJhbnNmb3JtLmEgPSBhOworfQorCitk
b3VibGUgQWZmaW5lVHJhbnNmb3JtOjpiKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90cmFuc2Zv
cm0uYjsKIH0KIAotZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6bTIxKCkgY29uc3QKK3ZvaWQgQWZm
aW5lVHJhbnNmb3JtOjpzZXRCKGRvdWJsZSBiKQoreworICAgIG1fdHJhbnNmb3JtLmIgPSBiOwor
fQorCitkb3VibGUgQWZmaW5lVHJhbnNmb3JtOjpjKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90
cmFuc2Zvcm0uYzsKIH0KIAotZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6bTIyKCkgY29uc3QKK3Zv
aWQgQWZmaW5lVHJhbnNmb3JtOjpzZXRDKGRvdWJsZSBjKQoreworICAgIG1fdHJhbnNmb3JtLmMg
PSBjOworfQorCitkb3VibGUgQWZmaW5lVHJhbnNmb3JtOjpkKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV90cmFuc2Zvcm0uZDsKIH0KIAotZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6ZHgoKSBjb25z
dAordm9pZCBBZmZpbmVUcmFuc2Zvcm06OnNldEQoZG91YmxlIGQpCit7CisgICAgbV90cmFuc2Zv
cm0uZCA9IGQ7Cit9CisKK2RvdWJsZSBBZmZpbmVUcmFuc2Zvcm06OmUoKSBjb25zdAogewogICAg
IHJldHVybiBtX3RyYW5zZm9ybS50eDsKIH0KIAotZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6ZHko
KSBjb25zdAordm9pZCBBZmZpbmVUcmFuc2Zvcm06OnNldEUoZG91YmxlIGUpCit7CisgICAgbV90
cmFuc2Zvcm0udHggPSBlOworfQorCitkb3VibGUgQWZmaW5lVHJhbnNmb3JtOjpmKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV90cmFuc2Zvcm0udHk7CiB9CiAKK3ZvaWQgQWZmaW5lVHJhbnNmb3Jt
OjpzZXRGKGRvdWJsZSBmKQoreworICAgIG1fdHJhbnNmb3JtLnR5ID0gZjsKK30KKwogdm9pZCBB
ZmZpbmVUcmFuc2Zvcm06OnJlc2V0KCkKIHsKICAgICBtX3RyYW5zZm9ybSA9IENHQWZmaW5lVHJh
bnNmb3JtSWRlbnRpdHk7CkBAIC0xNDIsNyArMTcyLDcgQEAgZG91YmxlIEFmZmluZVRyYW5zZm9y
bTo6ZGV0KCkgY29uc3QKICAgICByZXR1cm4gbV90cmFuc2Zvcm0uYSAqIG1fdHJhbnNmb3JtLmQg
LSBtX3RyYW5zZm9ybS5iICogbV90cmFuc2Zvcm0uYzsKIH0KIAotQWZmaW5lVHJhbnNmb3JtIEFm
ZmluZVRyYW5zZm9ybTo6aW52ZXJ0KCkgY29uc3QKK0FmZmluZVRyYW5zZm9ybSBBZmZpbmVUcmFu
c2Zvcm06OmludmVyc2UoKSBjb25zdAogewogICAgIGlmIChpc0ludmVydGlibGUoKSkKICAgICAg
ICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybShDR0FmZmluZVRyYW5zZm9ybUludmVydChtX3RyYW5z
Zm9ybSkpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9BZmZpbmVUcmFuc2Zv
cm1RdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9BZmZp
bmVUcmFuc2Zvcm1RdC5jcHAJKHJldmlzaW9uIDE4MTc2KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9BZmZpbmVUcmFuc2Zvcm1RdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDM2
ICs3MSw2NiBAQCBib29sIEFmZmluZVRyYW5zZm9ybTo6aXNJZGVudGl0eSgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fdHJhbnNmb3JtLmlzSWRlbnRpdHkoKTsKIH0KIAotZG91YmxlIEFmZmluZVRyYW5z
Zm9ybTo6bTExKCkgY29uc3QKK2RvdWJsZSBBZmZpbmVUcmFuc2Zvcm06OmEoKSBjb25zdAogewog
ICAgIHJldHVybiBtX3RyYW5zZm9ybS5tMTEoKTsKIH0KIAotZG91YmxlIEFmZmluZVRyYW5zZm9y
bTo6bTEyKCkgY29uc3QKK3ZvaWQgQWZmaW5lVHJhbnNmb3JtOjpzZXRBKGRvdWJsZSBhKQorewor
ICAgIG1fdHJhbnNmb3JtLnNldE1hdHJpeChhLCBiKCksIGMoKSwgZCgpLCBlKCksIGYoKSk7Cit9
CisKK2RvdWJsZSBBZmZpbmVUcmFuc2Zvcm06OmIoKSBjb25zdAogewogICAgIHJldHVybiBtX3Ry
YW5zZm9ybS5tMTIoKTsKIH0KIAotZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6bTIxKCkgY29uc3QK
K3ZvaWQgQWZmaW5lVHJhbnNmb3JtOjpzZXRCKGRvdWJsZSBiKQoreworICAgIG1fdHJhbnNmb3Jt
LnNldE1hdHJpeChhKCksIGIsIGMoKSwgZCgpLCBlKCksIGYoKSk7Cit9CisKK2RvdWJsZSBBZmZp
bmVUcmFuc2Zvcm06OmMoKSBjb25zdAogewogICAgIHJldHVybiBtX3RyYW5zZm9ybS5tMjEoKTsK
IH0KIAotZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6bTIyKCkgY29uc3QKK3ZvaWQgQWZmaW5lVHJh
bnNmb3JtOjpzZXRDKGRvdWJsZSBjKQoreworICAgIG1fdHJhbnNmb3JtLnNldE1hdHJpeChhKCks
IGIoKSwgYywgZCgpLCBlKCksIGYoKSk7Cit9CisKK2RvdWJsZSBBZmZpbmVUcmFuc2Zvcm06OmQo
KSBjb25zdAogewogICAgIHJldHVybiBtX3RyYW5zZm9ybS5tMjIoKTsKIH0KIAotZG91YmxlIEFm
ZmluZVRyYW5zZm9ybTo6ZHgoKSBjb25zdAordm9pZCBBZmZpbmVUcmFuc2Zvcm06OnNldEQoZG91
YmxlIGQpCit7CisgICAgbV90cmFuc2Zvcm0uc2V0TWF0cml4KGEoKSwgYigpLCBjKCksIGQsIGUo
KSwgZigpKTsKK30KKworZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6ZSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fdHJhbnNmb3JtLmR4KCk7CiB9CiAKLWRvdWJsZSBBZmZpbmVUcmFuc2Zvcm06OmR5
KCkgY29uc3QKK3ZvaWQgQWZmaW5lVHJhbnNmb3JtOjpzZXRFKGRvdWJsZSBlKQoreworICAgIG1f
dHJhbnNmb3JtLnNldE1hdHJpeChhKCksIGIoKSwgYygpLCBkKCksIGUsIGYoKSk7Cit9CisKK2Rv
dWJsZSBBZmZpbmVUcmFuc2Zvcm06OmYoKSBjb25zdAogewogICAgIHJldHVybiBtX3RyYW5zZm9y
bS5keSgpOwogfQogCit2b2lkIEFmZmluZVRyYW5zZm9ybTo6c2V0Rihkb3VibGUgZikKK3sKKyAg
ICBtX3RyYW5zZm9ybS5zZXRNYXRyaXgoYSgpLCBiKCksIGMoKSwgZCgpLCBlKCksIGYpOworfQor
CiB2b2lkIEFmZmluZVRyYW5zZm9ybTo6cmVzZXQoKQogewogICAgIG1fdHJhbnNmb3JtLnJlc2V0
KCk7CkBAIC0xMzUsNyArMTY1LDcgQEAgZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6ZGV0KCkgY29u
c3QKICAgICByZXR1cm4gbV90cmFuc2Zvcm0uZGV0KCk7CiB9CiAKLUFmZmluZVRyYW5zZm9ybSBB
ZmZpbmVUcmFuc2Zvcm06OmludmVydCgpIGNvbnN0CitBZmZpbmVUcmFuc2Zvcm0gQWZmaW5lVHJh
bnNmb3JtOjppbnZlcnNlKCkgY29uc3QKIHsKICAgICBpZighaXNJbnZlcnRpYmxlKCkpCiAgICAg
ICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZvcmVpZ25PYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZvcmVpZ25PYmplY3QuY3BwCShyZXZpc2lvbiAxODE3NikKKysrIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZvcmVpZ25PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3
IEBAIHZvaWQgUmVuZGVyRm9yZWlnbk9iamVjdDo6cGFpbnQoUGFpbnRJbmYKICAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIob3BhY2l0eSk7CiAKICAgICBQ
YWludEluZm8gcGkocGFpbnRJbmZvKTsKLSAgICBwaS5yZWN0ID0gYWJzb2x1dGVUcmFuc2Zvcm0o
KS5pbnZlcnQoKS5tYXBSZWN0KHBhaW50SW5mby5yZWN0KTsKKyAgICBwaS5yZWN0ID0gYWJzb2x1
dGVUcmFuc2Zvcm0oKS5pbnZlcnNlKCkubWFwUmVjdChwYWludEluZm8ucmVjdCk7CiAgICAgUmVu
ZGVyQmxvY2s6OnBhaW50KHBpLCAwLCAwKTsKIAogICAgIGlmIChvcGFjaXR5IDwgMS4wZikKQEAg
LTEwNyw3ICsxMDcsNyBAQCBib29sIFJlbmRlckZvcmVpZ25PYmplY3Q6Om5vZGVBdFBvaW50KGNv
CiAgICAgQWZmaW5lVHJhbnNmb3JtIHRvdGFsVHJhbnNmb3JtID0gYWJzb2x1dGVUcmFuc2Zvcm0o
KTsKICAgICB0b3RhbFRyYW5zZm9ybSAqPSB0cmFuc2xhdGlvbkZvckF0dHJpYnV0ZXMoKTsKICAg
ICBkb3VibGUgbG9jYWxYLCBsb2NhbFk7Ci0gICAgdG90YWxUcmFuc2Zvcm0uaW52ZXJ0KCkubWFw
KHgsIHksICZsb2NhbFgsICZsb2NhbFkpOworICAgIHRvdGFsVHJhbnNmb3JtLmludmVyc2UoKS5t
YXAoeCwgeSwgJmxvY2FsWCwgJmxvY2FsWSk7CiAgICAgcmV0dXJuIFJlbmRlckJsb2NrOjpub2Rl
QXRQb2ludChyZXF1ZXN0LCByZXN1bHQsIHN0YXRpY19jYXN0PGludD4obG9jYWxYKSwgc3RhdGlj
X2Nhc3Q8aW50Pihsb2NhbFkpLCB0eCwgdHksIGhpdFRlc3RBY3Rpb24pOwogfQogCkluZGV4OiBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJQYXRoLmNwcAkocmV2aXNpb24gMTgxNzYpCisrKyBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJQYXRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQCBGbG9h
dFBvaW50IFJlbmRlclBhdGg6Om1hcEFic29sdXRlUG9pbnRUCiAgICAgLy8gYWJzb2x1dGUgdHJh
bnNmb3JtPyAKICAgICBkb3VibGUgbG9jYWxYOwogICAgIGRvdWJsZSBsb2NhbFk7Ci0gICAgYWJz
b2x1dGVUcmFuc2Zvcm0oKS5pbnZlcnQoKS5tYXAocG9pbnQueCgpLCBwb2ludC55KCksICZsb2Nh
bFgsICZsb2NhbFkpOworICAgIGFic29sdXRlVHJhbnNmb3JtKCkuaW52ZXJzZSgpLm1hcChwb2lu
dC54KCksIHBvaW50LnkoKSwgJmxvY2FsWCwgJmxvY2FsWSk7CiAgICAgcmV0dXJuIEZsb2F0UG9p
bnQobG9jYWxYLCBsb2NhbFkpOwogfQogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
VkdJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1h
Z2UuY3BwCShyZXZpc2lvbiAxODE3NikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0lt
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgUmVuZGVyU1ZH
SW1hZ2U6OnBhaW50KFBhaW50SW5mbyYgcGEKICAgICB9CiAKICAgICBQYWludEluZm8gcGkocGFp
bnRJbmZvKTsKLSAgICBwaS5yZWN0ID0gYWJzb2x1dGVUcmFuc2Zvcm0oKS5pbnZlcnQoKS5tYXBS
ZWN0KHBpLnJlY3QpOworICAgIHBpLnJlY3QgPSBhYnNvbHV0ZVRyYW5zZm9ybSgpLmludmVyc2Uo
KS5tYXBSZWN0KHBpLnJlY3QpOwogCiAgICAgaW50IHggPSAwLCB5ID0gMDsKICAgICBpZiAoc2hv
dWxkUGFpbnQocGksIHgsIHkpKSB7CkBAIC0xODgsNyArMTg4LDcgQEAgYm9vbCBSZW5kZXJTVkdJ
bWFnZTo6bm9kZUF0UG9pbnQoY29uc3QgSAogICAgIEFmZmluZVRyYW5zZm9ybSB0b3RhbFRyYW5z
Zm9ybSA9IGFic29sdXRlVHJhbnNmb3JtKCk7CiAgICAgdG90YWxUcmFuc2Zvcm0gKj0gdHJhbnNs
YXRpb25Gb3JBdHRyaWJ1dGVzKCk7CiAgICAgZG91YmxlIGxvY2FsWCwgbG9jYWxZOwotICAgIHRv
dGFsVHJhbnNmb3JtLmludmVydCgpLm1hcChfeCArIF90eCwgX3kgKyBfdHksICZsb2NhbFgsICZs
b2NhbFkpOworICAgIHRvdGFsVHJhbnNmb3JtLmludmVyc2UoKS5tYXAoX3ggKyBfdHgsIF95ICsg
X3R5LCAmbG9jYWxYLCAmbG9jYWxZKTsKICAgICByZXR1cm4gUmVuZGVySW1hZ2U6Om5vZGVBdFBv
aW50KHJlcXVlc3QsIHJlc3VsdCwgKGludClsb2NhbFgsIChpbnQpbG9jYWxZLCAwLCAwLCBoaXRU
ZXN0QWN0aW9uKTsKIH0KIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dC5jcHAJKHJl
dmlzaW9uIDE4MTc2KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBSZW5kZXJTVkdUZXh0Ojpjb21wdXRl
QWJzb2x1dGVSZXBhaQogICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBsb2NhbFRyYW5z
Zm9ybSgpOwogICAgIHIgPSB0cmFuc2Zvcm0ubWFwUmVjdChyKTsKICAgICBSZW5kZXJDb250YWlu
ZXI6OmNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0KHIsIGYpOwotICAgIHIgPSB0cmFuc2Zvcm0u
aW52ZXJ0KCkubWFwUmVjdChyKTsKKyAgICByID0gdHJhbnNmb3JtLmludmVyc2UoKS5tYXBSZWN0
KHIpOwogfQogCiBib29sIFJlbmRlclNWR1RleHQ6OnJlcXVpcmVzTGF5ZXIoKQpAQCAtMTAwLDcg
KzEwMCw3IEBAIGJvb2wgUmVuZGVyU1ZHVGV4dDo6bm9kZUF0UG9pbnQoY29uc3QgSGkKIHsKICAg
ICBBZmZpbmVUcmFuc2Zvcm0gdG90YWxUcmFuc2Zvcm0gPSBhYnNvbHV0ZVRyYW5zZm9ybSgpOwog
ICAgIGRvdWJsZSBsb2NhbFgsIGxvY2FsWTsKLSAgICB0b3RhbFRyYW5zZm9ybS5pbnZlcnQoKS5t
YXAoX3gsIF95LCAmbG9jYWxYLCAmbG9jYWxZKTsKKyAgICB0b3RhbFRyYW5zZm9ybS5pbnZlcnNl
KCkubWFwKF94LCBfeSwgJmxvY2FsWCwgJmxvY2FsWSk7CiAgICAgcmV0dXJuIFJlbmRlckJsb2Nr
Ojpub2RlQXRQb2ludChyZXF1ZXN0LCByZXN1bHQsIChpbnQpbG9jYWxYLCAoaW50KWxvY2FsWSwg
X3R4LCBfdHksIGhpdFRlc3RBY3Rpb24pOwogfQogCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBS
ZW5kZXJTVkdUZXh0OjphYnNvbHV0ZVJlY3RzKFZlY3Rvcgogdm9pZCBSZW5kZXJTVkdUZXh0Ojpw
YWludChQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpCiB7ICAgCiAgICAgUmVu
ZGVyT2JqZWN0OjpQYWludEluZm8gcGkocGFpbnRJbmZvKTsKLSAgICBwaS5yZWN0ID0gKGFic29s
dXRlVHJhbnNmb3JtKCkpLmludmVydCgpLm1hcFJlY3QocGkucmVjdCk7CisgICAgcGkucmVjdCA9
IChhYnNvbHV0ZVRyYW5zZm9ybSgpKS5pbnZlcnNlKCkubWFwUmVjdChwaS5yZWN0KTsKICAgICBS
ZW5kZXJCbG9jazo6cGFpbnQocGksIHR4LCB0eSk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVy
aW5nL1NWR0lubGluZUZsb3dCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5n
L1NWR0lubGluZUZsb3dCb3guY3BwCShyZXZpc2lvbiAxODE3NikKKysrIFdlYkNvcmUvcmVuZGVy
aW5nL1NWR0lubGluZUZsb3dCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3IEBA
IHZvaWQgcGFpbnRTVkdJbmxpbmVGbG93KElubGluZUZsb3dCb3gqIGYKICAgICBSZW5kZXJPYmpl
Y3Q6OlBhaW50SW5mbyBwaShwYWludEluZm8pOwogICAgIAogICAgIGlmICghZmxvdy0+aXNSb290
SW5saW5lQm94KCkpCi0gICAgICAgIHBpLnJlY3QgPSAob2JqZWN0LT5sb2NhbFRyYW5zZm9ybSgp
KS5pbnZlcnQoKS5tYXBSZWN0KHBpLnJlY3QpOworICAgICAgICBwaS5yZWN0ID0gKG9iamVjdC0+
bG9jYWxUcmFuc2Zvcm0oKSkuaW52ZXJzZSgpLm1hcFJlY3QocGkucmVjdCk7CiAKICAgICBmbG9h
dCBvcGFjaXR5ID0gb2JqZWN0LT5zdHlsZSgpLT5vcGFjaXR5KCk7CiAgICAgaWYgKG9wYWNpdHkg
PCAxLjBmKSB7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNw
cAkocmV2aXNpb24gMTgxNzYpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJUcmVlQXNU
ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDExICsxNDcsMTEgQEAgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgYwogewogICAgIGlmIChtLmlzSWRlbnRpdHkoKSkK
ICAgICAgICAgdHMgPDwgImlkZW50aXR5IjsKLSAgICBlbHNlIAotICAgIHsKLSAgICAgICAgdHMg
PDwgInttPSgoIiA8PCBtLm0xMSgpIDw8ICIsIiA8PCBtLm0xMigpIDw8ICIpKCIgPDwgbS5tMjEo
KSA8PCAiLCIgPDwgbS5tMjIoKSA8PCAiKSkiOwotICAgICAgICB0cyA8PCAiIHQ9KCIgPDwgbS5k
eCgpIDw8ICIsIiA8PCBtLmR5KCkgPDwgIil9IjsKKyAgICBlbHNlIHsKKyAgICAgICAgdHMgPDwg
InttPSgoIiA8PCBtLmEoKSA8PCAiLCIgPDwgbS5iKCkgPDwgIikoIiA8PCBtLmMoKSA8PCAiLCIg
PDwgbS5kKCkgPDwgIikpIjsKKyAgICAgICAgdHMgPDwgIiB0PSgiIDw8IG0uZSgpIDw8ICIsIiA8
PCBtLmYoKSA8PCAiKX0iOwogICAgIH0KKwogICAgIHJldHVybiB0czsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11817</attachid>
            <date>2006-12-12 03:26:30 -0800</date>
            <delta_ts>2006-12-12 03:31:17 -0800</delta_ts>
            <desc>Updated final patch</desc>
            <filename>KillSVGMatrix.diff</filename>
            <type>text/plain</type>
            <size>112230</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE4MTc2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDYtMTItMTIgIE5pa29sYXMgWmltbWVybWFu
biAgPHppbW1lcm1hbm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2Vpbmln
LgorCisgICAgICAgIEZpeGVzOiBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTc5NworCisgICAgICAgIFNWR1BvaW50LW1hdHJpeFRyYW5zZm9ybSB3b3JrcyBhZ2FpbiBh
cyBleHBlY3RlZCwgbm93IHRoYXQgU1ZHTWF0cml4CisgICAgICAgIGlzIGNvbnZlcnRlZCB0byB0
aGUgQWZmaW5lVHJhbnNmb3JtIFBPRCB0eXBlLiBVcGRhdGluZyBsYXlvdXQgdGVzdCByZXN1bHQu
CisKKyAgICAgICAgKiBzdmcvY3VzdG9tL1NWR1BvaW50LW1hdHJpeFRyYW5zZm9ybS1leHBlY3Rl
ZC50eHQ6CisKIDIwMDYtMTItMTIgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBCZXRoIERha2luLgpJbmRleDogTGF5b3V0VGVzdHMvc3Zn
L2N1c3RvbS9TVkdQb2ludC1tYXRyaXhUcmFuc2Zvcm0tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3N2Zy9jdXN0b20vU1ZHUG9pbnQtbWF0cml4VHJhbnNmb3JtLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMTgxNzYpCisrKyBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL1NWR1Bv
aW50LW1hdHJpeFRyYW5zZm9ybS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNiAr
MSw2IEBACiBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgUmVuZGVyVmlldyBhdCAoMCww
KSBzaXplIDgwMHg2MDAKLSAgICBLQ2FudmFzQ29udGFpbmVyIHtzdmd9IGF0ICg4MCwyNCkgc2l6
ZSAxNTZ4NzIKKyAgICBLQ2FudmFzQ29udGFpbmVyIHtzdmd9IGF0ICg4MCwyNCkgc2l6ZSAxNzJ4
NzIKICAgICAgIFJlbmRlclNWR1RleHQge3RleHR9IGF0ICgyMCwyMCkgc2l6ZSA4MDB4MTgKLSAg
ICAgICAgUmVuZGVyU1ZHSW5saW5lVGV4dCB7I3RleHR9IGF0ICgwLC0xNCkgc2l6ZSAzOXgxOAot
ICAgICAgICAgIHRleHQgcnVuIGF0ICgwLC0xNCkgd2lkdGggMzk6ICJGYWlsZWQiCisgICAgICAg
IFJlbmRlclNWR0lubGluZVRleHQgeyN0ZXh0fSBhdCAoMCwtMTQpIHNpemUgNDN4MTgKKyAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwtMTQpIHdpZHRoIDQzOiAiUGFzc2VkIgpJbmRleDogV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4
MTc2KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNzMg
QEAKKzIwMDYtMTItMTIgIE5pa29sYXMgWmltbWVybWFubiAgPHppbW1lcm1hbm5Aa2RlLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBDaGFuZ2VMb2cuCisKKyAgICAgICAgRml4ZXM6IGh0dHA6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzk3CisKKyAgICAgICAgUmVtb3Zl
IFNWR01hdHJpeCwgcmVwbGFjZSBpdCBieSBBZmZpbmVUcmFuc2Zvcm0gdXNhZ2UgZXZlcnl3aGVy
ZS4KKyAgICAgICAgQ2hhbmdlZCBBZmZpbmVUcmFuc2Zvcm0gQVBJIHRvIGJlIGFibGUgdG8gYmUg
dXNlZCB3aXRoaW4gZ2VuZXJhdGlvbgorICAgICAgICAobTExKCkgLT4gYSgpLCBtMTIoKSAtPiBi
KCksIC4uLikuIEFkZCBzb21lIG1ldGhvZHMgbmVlZGVkIGZvciBTVkcuCisKKyAgICAgICAgVGhl
IGFjdHVhbCBTVkdNYXRyaXggLT4gQWZmaW5lVHJhbnNmb3JtYXRpb24gcGF0Y2ggaGFzIGJlZW4g
Y3JlYXRlZAorICAgICAgICBieSBSb2IgLSBJIGp1c3QgYWRhcHRlZCBpdCB0byB0aGUgYXV0b2dl
bmVyYXRlZCBQT0Qgc3R5bGUuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTVkdNYXRyaXhDdXN0b20uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHTWF0cml4OjppbnZlcnNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTU1ZHTWF0cml4Ojpyb3RhdGVGcm9tVmVjdG9yKToKKyAgICAgICAgKiBiaW5k
aW5ncy9vYmpjL0RPTUludGVybmFsLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG06CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
T2JqQy5wbToKKyAgICAgICAgKiBrc3ZnMi9taXNjL0tTVkdUaW1lU2NoZWR1bGVyLmNwcDoKKyAg
ICAgICAgKiBrc3ZnMi9taXNjL1NWR0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBrc3ZnMi9z
dmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmhhbmRsZVRpbWVyRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmNhbGN1bGF0ZVJvdGF0aW9uRnJvbU1h
dHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6aW5p
dGlhbE1hdHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVu
dDo6dHJhbnNmb3JtTWF0cml4KToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQW5pbWF0ZVRyYW5z
Zm9ybUVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6Y2FudmFzUmVzb3VyY2Up
OgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRml0VG9WaWV3Qm94Ojp2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKToKKyAgICAgICAg
KiBrc3ZnMi9zdmcvU1ZHRml0VG9WaWV3Qm94Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0xl
bmd0aExpc3QuY3BwOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpidWls
ZEdyYWRpZW50KToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTG9jYXRhYmxlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0xvY2F0YWJsZTo6Z2V0Q1RNKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0xvY2F0YWJsZTo6Z2V0U2NyZWVuQ1RNKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xvY2F0YWJs
ZTo6Z2V0VHJhbnNmb3JtVG9FbGVtZW50KToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTG9jYXRh
YmxlLmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwOgorICAgICAg
ICAqIGtzdmcyL3N2Zy9TVkdNYXRyaXguY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGtzdmcyL3N2
Zy9TVkdNYXRyaXguaDogUmVtb3ZlZC4KKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTWF0cml4Lmlk
bDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTnVtYmVyTGlzdC5jcHA6CisgICAgICAgICoga3N2
ZzIvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRl
cm5FbGVtZW50Ojpub3RpZnlBdHRyaWJ1dGVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UGF0dGVybkVsZW1lbnQ6OmdldENUTSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1BhdHRlcm5F
bGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1BvaW50LmlkbDoKKyAgICAgICAgKiBr
c3ZnMi9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpnZXRDVE0pOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdQ
cmVzZXJ2ZUFzcGVjdFJhdGlvLmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1JhZGlhbEdyYWRp
ZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQ6OmJ1aWxkR3JhZGllbnQpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnZpZXdwb3J0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR01hdHJpeCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmdldENUTSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdTVkdFbGVtZW50OjpnZXRTY3JlZW5DVE0pOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdTVkdF
bGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwOgorICAg
ICAgICAqIGtzdmcyL3N2Zy9TVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQ6OmdldENUTSk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50OjpnZXRTY3JlZW5DVE0pOgorICAgICAg
ICAqIGtzdmcyL3N2Zy9TVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50Lmg6CisgICAgICAgICoga3N2
ZzIvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojpsb2NhbE1hdHJpeCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6Z2V0Q1RNKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpnZXRTY3JlZW5DVE0p
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnVwZGF0
ZUxvY2FsVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZFRyYW5zZm9ybWFi
bGVFbGVtZW50OjphdHRhY2gpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0RWxlbWVudDo6bG9jYWxNYXRyaXgpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVGV4dEVsZW1lbnQ6OnVwZGF0ZUxvY2FsVHJhbnNmb3JtKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1RleHRFbGVtZW50OjphdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHVGV4dEVsZW1lbnQ6OmdldFNjcmVlbkNUTSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0
RWxlbWVudDo6Z2V0Q1RNKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHVGV4dEVsZW1lbnQuaDoK
KyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtLmNwcDoKKyAgICAgICAgKFNWR1RyYW5z
Zm9ybTo6U1ZHVHJhbnNmb3JtKToKKyAgICAgICAgKFNWR1RyYW5zZm9ybTo6bWF0cml4KToKKyAg
ICAgICAgKFNWR1RyYW5zZm9ybTo6c2V0TWF0cml4KToKKyAgICAgICAgKFNWR1RyYW5zZm9ybTo6
c2V0VHJhbnNsYXRlKToKKyAgICAgICAgKFNWR1RyYW5zZm9ybTo6c2V0U2NhbGUpOgorICAgICAg
ICAoU1ZHVHJhbnNmb3JtOjpzZXRSb3RhdGUpOgorICAgICAgICAoU1ZHVHJhbnNmb3JtOjpzZXRT
a2V3WCk6CisgICAgICAgIChTVkdUcmFuc2Zvcm06OnNldFNrZXdZKToKKyAgICAgICAgKiBrc3Zn
Mi9zdmcvU1ZHVHJhbnNmb3JtLmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybUxp
c3QuY3BwOgorICAgICAgICAoU1ZHVHJhbnNmb3JtTGlzdDo6Y3JlYXRlU1ZHVHJhbnNmb3JtRnJv
bU1hdHJpeCk6CisgICAgICAgIChTVkdUcmFuc2Zvcm1MaXN0Ojpjb25jYXRlbmF0ZSk6CisgICAg
ICAgICoga3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcv
U1ZHVHJhbnNmb3JtYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zvcm1hYmxl
OjpnZXRDVE0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtYWJsZTo6Z2V0U2NyZWVu
Q1RNKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybWFibGU6OnBhcnNlVHJhbnNmb3Jt
QXR0cmlidXRlKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0FmZmluZVRyYW5zZm9ybS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06Om11bHRpcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkFm
ZmluZVRyYW5zZm9ybTo6c2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3Jt
OjpzY2FsZU5vblVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjpy
b3RhdGVGcm9tVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6Zmxp
cFgpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjpmbGlwWSk6CisgICAgICAg
IChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06OnNrZXdYKToKKyAgICAgICAgKFdlYkNvcmU6OkFm
ZmluZVRyYW5zZm9ybTo6c2tld1kpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0FmZmlu
ZVRyYW5zZm9ybS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0FmZmluZVRy
YW5zZm9ybUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6YSk6
CisgICAgICAgIChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06OnNldEEpOgorICAgICAgICAoV2Vi
Q29yZTo6QWZmaW5lVHJhbnNmb3JtOjpiKToKKyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5z
Zm9ybTo6c2V0Qik6CisgICAgICAgIChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06OmMpOgorICAg
ICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjpzZXRDKToKKyAgICAgICAgKFdlYkNvcmU6
OkFmZmluZVRyYW5zZm9ybTo6ZCk6CisgICAgICAgIChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06
OnNldEQpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjplKToKKyAgICAgICAg
KFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6c2V0RSk6CisgICAgICAgIChXZWJDb3JlOjpBZmZp
bmVUcmFuc2Zvcm06OmYpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjpzZXRG
KToKKyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6aW52ZXJzZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQWZmaW5lVHJhbnNmb3JtQ0cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjphKToKKyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRy
YW5zZm9ybTo6c2V0QSk6CisgICAgICAgIChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06OmIpOgor
ICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjpzZXRCKToKKyAgICAgICAgKFdlYkNv
cmU6OkFmZmluZVRyYW5zZm9ybTo6Yyk6CisgICAgICAgIChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zv
cm06OnNldEMpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjpkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6c2V0RCk6CisgICAgICAgIChXZWJDb3JlOjpB
ZmZpbmVUcmFuc2Zvcm06OmUpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjpz
ZXRFKToKKyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6Zik6CisgICAgICAgIChX
ZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06OnNldEYpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5l
VHJhbnNmb3JtOjppbnZlcnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9BZmZp
bmVUcmFuc2Zvcm1RdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06OmEp
OgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjpzZXRBKToKKyAgICAgICAgKFdl
YkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6Yik6CisgICAgICAgIChXZWJDb3JlOjpBZmZpbmVUcmFu
c2Zvcm06OnNldEIpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjpjKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6c2V0Qyk6CisgICAgICAgIChXZWJDb3Jl
OjpBZmZpbmVUcmFuc2Zvcm06OmQpOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3Jt
OjpzZXREKToKKyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06OnNldEUpOgorICAgICAgICAoV2ViQ29yZTo6QWZm
aW5lVHJhbnNmb3JtOjpmKToKKyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6c2V0
Rik6CisgICAgICAgIChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06OmludmVyc2UpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckZvcmVpZ25PYmplY3Q6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZv
cmVpZ25PYmplY3Q6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUGF0
aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJQYXRoOjptYXBBYnNvbHV0ZVBvaW50VG9M
b2NhbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdJbWFnZTo6bm9kZUF0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdU
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OmNvbXB1dGVBYnNvbHV0
ZVJlcGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6Om5vZGVBdFBv
aW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OnBhaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvU1ZHSW5saW5lRmxvd0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWlu
dFNWR0lubGluZUZsb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9TVkdSZW5kZXJUcmVlQXNUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorCiAyMDA2LTEyLTEyICBHZW9y
Z2UgU3RhaWtvcyAgPHN0YWlrb3NAa2RlLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4
ZXkuCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMTgxNzYpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMTk1OCw4ICsxOTU4LDYgQEAKIAkJQTg4QUQ0OUYwOTUyNDhG
MDAwMUREMTk2IC8qIFNWR0xvY2F0YWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQThDMEY4ODEwODk3MDFGMzAwQkE1MTE0IC8qIFNWR0xvY2F0YWJs
ZS5oICovOyB9OwogCQlBODhBRDRBMDA5NTI0OEYwMDAxREQxOTYgLyogU1ZHTWFya2VyRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEMw
Rjg4MjA4OTcwMUYzMDBCQTUxMTQgLyogU1ZHTWFya2VyRWxlbWVudC5jcHAgKi87IH07CiAJCUE4
OEFENEExMDk1MjQ4RjAwMDFERDE5NiAvKiBTVkdNYXJrZXJFbGVtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEMwRjg4MzA4OTcwMUYzMDBCQTUx
MTQgLyogU1ZHTWFya2VyRWxlbWVudC5oICovOyB9OwotCQlBODhBRDRBMjA5NTI0OEYwMDAxREQx
OTYgLyogU1ZHTWF0cml4LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE4QzBGODg0MDg5NzAxRjMwMEJBNTExNCAvKiBTVkdNYXRyaXguY3BwICovOyB9
OwotCQlBODhBRDRBMzA5NTI0OEYwMDAxREQxOTYgLyogU1ZHTWF0cml4LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEMwRjg4NTA4OTcwMUYzMDBCQTUx
MTQgLyogU1ZHTWF0cml4LmggKi87IH07CiAJCUE4OEFENEE2MDk1MjQ4RjAwMDFERDE5NiAvKiBT
VkdOdW1iZXJMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE4QzBGODg4MDg5NzAxRjMwMEJBNTExNCAvKiBTVkdOdW1iZXJMaXN0LmNwcCAqLzsg
fTsKIAkJQTg4QUQ0QTcwOTUyNDhGMDAwMUREMTk2IC8qIFNWR051bWJlckxpc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzBGODg5MDg5NzAxRjMw
MEJBNTExNCAvKiBTVkdOdW1iZXJMaXN0LmggKi87IH07CiAJCUE4OEFENEE4MDk1MjQ4RjAwMDFE
RDE5NiAvKiBTVkdQYWludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBOEMwRjg4QTA4OTcwMUYzMDBCQTUxMTQgLyogU1ZHUGFpbnQuY3BwICovOyB9
OwpAQCAtMjIzMSw2ICsyMjI5LDcgQEAKIAkJQjIzMTBCNzYwQjFGNDZBMjAwRDU1RDg3IC8qIENn
U3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMjMxMEI3MzBCMUY0NkEyMDBENTVEODcgLyogQ2dTdXBwb3J0LmNwcCAqLzsgfTsKIAkJQjIz
MTBCNzcwQjFGNDZBMjAwRDU1RDg3IC8qIENnU3VwcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIzMTBCNzQwQjFGNDZBMjAwRDU1RDg3IC8qIENn
U3VwcG9ydC5oICovOyB9OwogCQlCMjMxMEI3ODBCMUY0NkEzMDBENTVEODcgLyogUmVuZGVyUGF0
aENnLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIy
MzEwQjc1MEIxRjQ2QTIwMEQ1NUQ4NyAvKiBSZW5kZXJQYXRoQ2cuY3BwICovOyB9OworCQlCMjVE
RkFBRjBCMkUyOTI5MDAwRTY1MTAgLyogSlNTVkdNYXRyaXhDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1REZBQUUwQjJFMjkyOTAwMEU2
NTEwIC8qIEpTU1ZHTWF0cml4Q3VzdG9tLmNwcCAqLzsgfTsKIAkJQjI3NTM1NTYwQjA1MzgxNDAw
MkNFNjRGIC8qIEFmZmluZVRyYW5zZm9ybS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUyNzBCMDUzODE0MDAyQ0U2NEYgLyogQWZmaW5lVHJh
bnNmb3JtLmNwcCAqLzsgfTsKIAkJQjI3NTM1NTcwQjA1MzgxNDAwMkNFNjRGIC8qIEFmZmluZVRy
YW5zZm9ybS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjI3NTM1MjgwQjA1MzgxNDAwMkNFNjRGIC8qIEFmZmluZVRyYW5zZm9ybS5oICovOyB9OwogCQlC
Mjc1MzU1ODBCMDUzODE0MDAyQ0U2NEYgLyogQWZmaW5lVHJhbnNmb3JtQ0cuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MkEwQjA1MzgxNDAw
MkNFNjRGIC8qIEFmZmluZVRyYW5zZm9ybUNHLmNwcCAqLzsgfTsKQEAgLTQ5MTAsOCArNDkwOSw2
IEBACiAJCUE4QzBGODgxMDg5NzAxRjMwMEJBNTExNCAvKiBTVkdMb2NhdGFibGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdMb2NhdGFibGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07
CiAJCUE4QzBGODgyMDg5NzAxRjMwMEJBNTExNCAvKiBTVkdNYXJrZXJFbGVtZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHTWFy
a2VyRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNl
c1RhYnMgPSAwOyB9OwogCQlBOEMwRjg4MzA4OTcwMUYzMDBCQTUxMTQgLyogU1ZHTWFya2VyRWxl
bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGlu
ZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNWR01hcmtlckVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4
OyB1c2VzVGFicyA9IDA7IH07Ci0JCUE4QzBGODg0MDg5NzAxRjMwMEJBNTExNCAvKiBTVkdNYXRy
aXguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGlu
ZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTVkdNYXRyaXguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IHVzZXNUYWJzID0gMDsgfTsKLQkJQThDMEY4ODUwODk3MDFGMzAwQkE1MTE0IC8qIFNWR01hdHJp
eC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNW
R01hdHJpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJz
ID0gMDsgfTsKIAkJQThDMEY4ODgwODk3MDFGMzAwQkE1MTE0IC8qIFNWR051bWJlckxpc3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
VkdOdW1iZXJMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1
c2VzVGFicyA9IDA7IH07CiAJCUE4QzBGODg5MDg5NzAxRjMwMEJBNTExNCAvKiBTVkdOdW1iZXJM
aXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5k
ZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U1ZHTnVtYmVyTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVz
ZXNUYWJzID0gMDsgfTsKIAkJQThDMEY4OEEwODk3MDFGMzAwQkE1MTE0IC8qIFNWR1BhaW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U1ZHUGFpbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNU
YWJzID0gMDsgfTsKQEAgLTUxOTQsNiArNTE5MSw3IEBACiAJCUIyMzEwQjczMEIxRjQ2QTIwMEQ1
NUQ4NyAvKiBDZ1N1cHBvcnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENnU3VwcG9ydC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMzEwQjc0
MEIxRjQ2QTIwMEQ1NUQ4NyAvKiBDZ1N1cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENnU3VwcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjMx
MEI3NTBCMUY0NkEyMDBENTVEODcgLyogUmVuZGVyUGF0aENnLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJQYXRoQ2cuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlCMjVERkFBRTBCMkUyOTI5MDAwRTY1MTAgLyogSlNTVkdNYXRyaXhDdXN0
b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHTWF0cml4
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1MjcwQjA1Mzgx
NDAwMkNFNjRGIC8qIEFmZmluZVRyYW5zZm9ybS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQWZmaW5lVHJhbnNmb3JtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjI3NTM1MjgwQjA1MzgxNDAwMkNFNjRGIC8qIEFmZmluZVRyYW5zZm9ybS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWZmaW5lVHJhbnNmb3JtLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTJBMEIwNTM4MTQwMDJDRTY0RiAvKiBBZmZp
bmVUcmFuc2Zvcm1DRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QWZmaW5lVHJhbnNmb3JtQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODI1
NCw4ICs4MjUyLDYgQEAKIAkJCQlBOEMwRjg4MzA4OTcwMUYzMDBCQTUxMTQgLyogU1ZHTWFya2Vy
RWxlbWVudC5oICovLAogCQkJCUE4MTY1NUUyMDk2QkMxMzkwMDYwMTA1OCAvKiBTVkdNYXNrRWxl
bWVudC5jcHAgKi8sCiAJCQkJQTgxNjU1RTMwOTZCQzEzOTAwNjAxMDU4IC8qIFNWR01hc2tFbGVt
ZW50LmggKi8sCi0JCQkJQThDMEY4ODQwODk3MDFGMzAwQkE1MTE0IC8qIFNWR01hdHJpeC5jcHAg
Ki8sCi0JCQkJQThDMEY4ODUwODk3MDFGMzAwQkE1MTE0IC8qIFNWR01hdHJpeC5oICovLAogCQkJ
CUE4MzNCRUREMEEyQzM0NEIwMEQ1NzY2NCAvKiBTVkdNYXRyaXguaWRsICovLAogCQkJCUE4MzNC
RUEyMEEyQzMyOTMwMEQ1NzY2NCAvKiBTVkdOdW1iZXIuaWRsICovLAogCQkJCUE4QzBGODg4MDg5
NzAxRjMwMEJBNTExNCAvKiBTVkdOdW1iZXJMaXN0LmNwcCAqLywKQEAgLTg2NjEsNiArODY1Nyw3
IEBACiAJCQkJMUE3NTBERDMwQTkwRTcyOTAwMEZGMjE1IC8qIEpTTm9kZUl0ZXJhdG9yQ3VzdG9t
LmNwcCAqLywKIAkJCQk4NTc0RDFGMTBBREU2MTIyMDA0Q0JBMTEgLyogSlNTVkdFbGVtZW50V3Jh
cHBlckZhY3RvcnkuY3BwICovLAogCQkJCTg1NzREMUYyMEFERTYxMjIwMDRDQkExMSAvKiBKU1NW
R0VsZW1lbnRXcmFwcGVyRmFjdG9yeS5oICovLAorCQkJCUIyNURGQUFFMEIyRTI5MjkwMDBFNjUx
MCAvKiBKU1NWR01hdHJpeEN1c3RvbS5jcHAgKi8sCiAJCQkJMUE3NTBFMzMwQTkwRjg5RjAwMEZG
MjE1IC8qIEpTVHJlZVdhbGtlckN1c3RvbS5jcHAgKi8sCiAJCQkJOTNCNzBENDEwOUVCMEM3QzAw
OUQ4NDY4IC8qIEpTWE1MSHR0cFJlcXVlc3QuY3BwICovLAogCQkJCTkzQjcwRDQyMDlFQjBDN0Mw
MDlEODQ2OCAvKiBKU1hNTEh0dHBSZXF1ZXN0LmggKi8sCkBAIC05NTIzLDcgKzk1MjAsNiBAQAog
CQkJCUE4OEFENDlEMDk1MjQ4RjAwMDFERDE5NiAvKiBTVkdMaXN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBODhBRDQ5RjA5NTI0OEYwMDAxREQxOTYgLyogU1ZHTG9jYXRhYmxlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBODhBRDRBMTA5NTI0OEYwMDAxREQxOTYgLyogU1ZHTWFya2VyRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJQTg4QUQ0QTMwOTUyNDhGMDAwMUREMTk2IC8qIFNWR01hdHJp
eC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg4QUQ0QTcwOTUyNDhGMDAwMUREMTk2IC8qIFNWR051
bWJlckxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4OEFENEE5MDk1MjQ4RjAwMDFERDE5NiAv
KiBTVkdQYWludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg4QUQ0QUIwOTUyNDhGMDAwMUREMTk2
IC8qIFNWR1BhdGhFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTExMTA0LDcgKzExMTAwLDYg
QEAKIAkJCQlBODhBRDQ5QjA5NTI0OEYwMDAxREQxOTYgLyogU1ZHTGluZUVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTg4QUQ0OUUwOTUyNDhGMDAwMUREMTk2IC8qIFNWR0xvY2F0YWJs
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODhBRDRBMDA5NTI0OEYwMDAxREQxOTYgLyogU1ZH
TWFya2VyRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBODhBRDRBMjA5NTI0OEYwMDAx
REQxOTYgLyogU1ZHTWF0cml4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4OEFENEE2MDk1MjQ4
RjAwMDFERDE5NiAvKiBTVkdOdW1iZXJMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4OEFE
NEE4MDk1MjQ4RjAwMDFERDE5NiAvKiBTVkdQYWludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
ODhBRDRBQTA5NTI0OEYwMDAxREQxOTYgLyogU1ZHUGF0aEVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC0xMjE2Myw2ICsxMjE1OCw3IEBACiAJCQkJQkMxOEM1RDEwQjJBODg2RjAwMTg0NjFE
IC8qIFRleHRCcmVha0l0ZXJhdG9ySUNVLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFBNEMzQTc2
MEIyQjE2NzkwMDIzMzRBMiAvKiBTdHlsZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTNFMjQyNUYwQjJCNTA5NTAwQzczMkExIC8qIEhUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlCMjVERkFBRjBCMkUyOTI5MDAwRTY1MTAgLyogSlNTVkdNYXRyaXhD
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTExRDUxOTQwQjJFN0E1RjAwNTZDMTg4IC8q
IEJhc2U2NC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdNYXRy
aXhDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdNYXRy
aXhDdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR01h
dHJpeEN1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Cisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0g
U3VpdGUgMzMwLAorICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTU1ZHTWF0cml4LmgiCisKKyNpbmNsdWRlICJBZmZp
bmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJTVkdFeGNlcHRpb24uaCIKKwordXNpbmcgbmFtZXNw
YWNlIEtKUzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitKU1ZhbHVlKiBKU1NWR01hdHJpeDo6
aW52ZXJzZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IExpc3QmKQoreworICAgIEFmZmluZVRyYW5z
Zm9ybSYgaW1wKGltcGwoKSk7CisgICAgS0pTOjpKU1ZhbHVlKiByZXN1bHQgPSB0b0pTKGV4ZWMs
IGltcC5pbnZlcnNlKCkpOworCisgICAgaWYgKCFpbXAuaXNJbnZlcnRpYmxlKCkpCisgICAgICAg
IHNldERPTUV4Y2VwdGlvbihleGVjLCBTVkdfTUFUUklYX05PVF9JTlZFUlRBQkxFKTsKKworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK0pTVmFsdWUqIEpTU1ZHTWF0cml4Ojpyb3RhdGVGcm9tVmVj
dG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTGlzdCYgYXJncykKK3sKKyAgICBBZmZpbmVUcmFu
c2Zvcm0mIGltcChpbXBsKCkpOworIAorICAgIGZsb2F0IHggPSBhcmdzWzBdLT50b051bWJlcihl
eGVjKTsKKyAgICBmbG9hdCB5ID0gYXJnc1sxXS0+dG9OdW1iZXIoZXhlYyk7CisKKyAgICBLSlM6
OkpTVmFsdWUqIHJlc3VsdCA9IHRvSlMoZXhlYywgaW1wLnJvdGF0ZUZyb21WZWN0b3IoeCwgeSkp
OworCisgICAgaWYgKHggPT0gMC4wIHx8IHkgPT0gMC4wKQorICAgICAgICBzZXRET01FeGNlcHRp
b24oZXhlYywgU1ZHX0lOVkFMSURfVkFMVUVfRVJSKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9
CisgICAgCit9CisKKy8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9ET01JbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01J
bnRlcm5hbC5oCShyZXZpc2lvbiAxODE3NikKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01J
bnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMiArMzEsNiBAQAogI2ltcG9ydCAiRE9N
T2JqZWN0LmgiCiAjaW1wb3J0ICJET01SR0JDb2xvci5oIgogCi0jaWZkZWYgU1ZHX1NVUFBPUlQK
LSNpbXBvcnQgIkRPTVNWR051bWJlci5oIgotI2ltcG9ydCAiRE9NU1ZHUG9pbnQuaCIKLSNpbXBv
cnQgIkRPTVNWR1JlY3QuaCIKLSNlbmRpZiAvLyBTVkdfU1VQUE9SVAotCiAjaWZkZWYgWFBBVEhf
U1VQUE9SVAogI2ltcG9ydCAiRE9NWFBhdGhOU1Jlc29sdmVyLmgiCiAjZW5kaWYgLy8gWFBBVEhf
U1VQUE9SVApAQCAtMjEyLDYgKzIwNiw3IEBACiAjaW1wb3J0ICJET01TVkdNYXNrRWxlbWVudElu
dGVybmFsLmgiCiAjaW1wb3J0ICJET01TVkdNYXRyaXhJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9N
U1ZHTWV0YWRhdGFFbGVtZW50SW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTVNWR051bWJlckludGVy
bmFsLmgiCiAjaW1wb3J0ICJET01TVkdOdW1iZXJMaXN0SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRP
TVNWR1BhaW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVNWR1BhdGhFbGVtZW50SW50ZXJuYWwu
aCIKQEAgLTIzNywxMiArMjMyLDE0IEBACiAjaW1wb3J0ICJET01TVkdQYXRoU2VnTW92ZXRvQWJz
SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVNWR1BhdGhTZWdNb3ZldG9SZWxJbnRlcm5hbC5oIgog
I2ltcG9ydCAiRE9NU1ZHUGF0dGVybkVsZW1lbnRJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NU1ZH
UG9pbnRJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NU1ZHUG9pbnRMaXN0SW50ZXJuYWwuaCIKICNp
bXBvcnQgIkRPTVNWR1BvbHlnb25FbGVtZW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVNWR1Bv
bHlsaW5lRWxlbWVudEludGVybmFsLmgiCiAjaW1wb3J0ICJET01TVkdQcmVzZXJ2ZUFzcGVjdFJh
dGlvSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVNWR1JhZGlhbEdyYWRpZW50RWxlbWVudEludGVy
bmFsLmgiCiAjaW1wb3J0ICJET01TVkdSZWN0RWxlbWVudEludGVybmFsLmgiCisjaW1wb3J0ICJE
T01TVkdSZWN0SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVNWR1JlbmRlcmluZ0ludGVudEludGVy
bmFsLmgiCiAjaW1wb3J0ICJET01TVkdTVkdFbGVtZW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRP
TVNWR1NjcmlwdEVsZW1lbnRJbnRlcm5hbC5oIgpAQCAtMjc1LDYgKzI3Miw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBjbGFzcyBOb2RlRmlsdGVyOwogCiAjaWZkZWYgU1ZHX1NVUFBPUlQK
KyAgICBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiAgICAgY2xhc3MgRmxvYXRQb2ludDsKICAgICBj
bGFzcyBGbG9hdFJlY3Q7CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKQEAgLTMwNCwyNyArMzAyLDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQGVuZAogCiAKLSNpZmRlZiBTVkdfU1VQUE9SVAotLy8g
U1ZHIEludGVybmFsIEludGVyZmFjZXMKLQotQGludGVyZmFjZSBET01TVkdOdW1iZXIgKFdlYkNv
cmVJbnRlcm5hbCkKLSsgKERPTVNWR051bWJlciAqKV9TVkdOdW1iZXJXaXRoOihmbG9hdCl2YWx1
ZTsKLS0gKGZsb2F0KV9TVkdOdW1iZXI7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgRE9NU1ZHUG9pbnQg
KFdlYkNvcmVJbnRlcm5hbCkKLSsgKERPTVNWR1BvaW50ICopX1NWR1BvaW50V2l0aDooV2ViQ29y
ZTo6RmxvYXRQb2ludClpbXBsOwotLSAoV2ViQ29yZTo6RmxvYXRQb2ludClfU1ZHUG9pbnQ7Ci1A
ZW5kCi0KLUBpbnRlcmZhY2UgRE9NU1ZHUmVjdCAoV2ViQ29yZUludGVybmFsKQotKyAoRE9NU1ZH
UmVjdCAqKV9TVkdSZWN0V2l0aDooV2ViQ29yZTo6RmxvYXRSZWN0KWltcGw7Ci0tIChXZWJDb3Jl
OjpGbG9hdFJlY3QpX1NWR1JlY3Q7Ci1AZW5kCi0KLSNlbmRpZiAvLyBTVkdfU1VQUE9SVAotCi0K
ICNpZmRlZiBYUEFUSF9TVVBQT1JUCiAvLyBYUGF0aCBJbnRlcm5hbCBJbnRlcmZhY2VzCiAKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCShyZXZpc2lvbiAx
ODE3NikKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSw2ICszOSw4IEBAIG15ICVwcmltaXRpdmVUeXBlSGFzaCA9ICgiaW50
IiA9PiAxLCAic2gKICAgICAgICAgICAgICAgICAgICAgICAgICAidW5zaWduZWQgbG9uZyIgPT4g
MSwgImZsb2F0IiA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICJkb3VibGUiID0+IDEs
ICJib29sZWFuIiA9PiAxLCAidm9pZCIgPT4gMSk7CiAKK215ICVwb2RUeXBlSGFzaCA9ICgiUkdC
Q29sb3IiID0+IDEsICJTVkdQb2ludCIgPT4gMSwgIlNWR1JlY3QiID0+IDEsICJTVkdOdW1iZXIi
ID0+IDEsICJTVkdNYXRyaXgiID0+IDEpOworIAogbXkgJXN0cmluZ1R5cGVIYXNoID0gKCJET01T
dHJpbmciID0+IDEsICJBdG9taWNTdHJpbmciID0+IDEpOwogCiBteSAlbm9uUG9pbnRlclR5cGVI
YXNoID0gKCJET01UaW1lU3RhbXAiID0+IDEsICJDb21wYXJlSG93IiA9PiAxLCAiU1ZHUGFpbnRU
eXBlIiA9PiAxKTsKQEAgLTE3Nyw2ICsxNzksMTUgQEAgc3ViIEFkZE1ldGhvZHNDb25zdGFudHNB
bmRBdHRyaWJ1dGVzRnJvbQogfQogCiAjIEhlbHBlcnMgZm9yIGFsbCBDb2RlR2VuZXJhdG9yKioq
LnBtIG1vZHVsZXMKK3N1YiBJc1BvZFR5cGUKK3sKKyAgICBteSAkb2JqZWN0ID0gc2hpZnQ7Cisg
ICAgbXkgJHR5cGUgPSBzaGlmdDsKKworICAgIHJldHVybiAxIGlmICRwb2RUeXBlSGFzaHskdHlw
ZX07CisgICAgcmV0dXJuIDA7Cit9CisKIHN1YiBJc1ByaW1pdGl2ZVR5cGUKIHsKICAgICBteSAk
b2JqZWN0ID0gc2hpZnQ7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0JKHJldmlzaW9uIDE4MTc2KQorKysgV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDUgQEAKICMKLSMg
S0RPTSBJREwgcGFyc2VyCi0jCi0jIENvcHlyaWdodCAoQykgMjAwNSBOaWtvbGFzIFppbW1lcm1h
bm4gPHdpbGRmb3hAa2RlLm9yZz4KKyMgQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2IE5pa29sYXMg
WmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogIyBDb3B5cmlnaHQgKEMpIDIwMDYgQW5k
ZXJzIENhcmxzc29uIDxhbmRlcnNjYUBtYWMuY29tPgogIyBDb3B5cmlnaHQgKEMpIDIwMDYgU2Ft
dWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAjIENvcHlyaWdodCAoQykgMjAwNiBB
bGV4ZXkgUHJvc2t1cnlha292IDxhcEB3ZWJraXQub3JnPgpAQCAtMTU1LDggKzE1Myw4IEBAIHN1
YiBBdm9pZEluY2x1c2lvbk9mVHlwZQogewogICAgIG15ICR0eXBlID0gc2hpZnQ7CiAKLSAgICAj
IFNwZWNpYWwgY2FzZTogU1ZHUmVjdC5oIC8gU1ZHUG9pbnQuaCAvIFNWR051bWJlci5oIGRvIG5v
dCBleGlzdC4KLSAgICByZXR1cm4gMSBpZiAkdHlwZSBlcSAiU1ZHUmVjdCIgb3IgJHR5cGUgZXEg
IlNWR1BvaW50IiBvciAkdHlwZSBlcSAiU1ZHTnVtYmVyIjsKKyAgICAjIFNwZWNpYWwgY2FzZTog
U1ZHUmVjdC5oIC8gU1ZHUG9pbnQuaCAvIFNWR051bWJlci5oIC8gU1ZHTWF0cml4LmggZG8gbm90
IGV4aXN0LgorICAgIHJldHVybiAxIGlmICR0eXBlIGVxICJTVkdSZWN0IiBvciAkdHlwZSBlcSAi
U1ZHUG9pbnQiIG9yICR0eXBlIGVxICJTVkdOdW1iZXIiIG9yICR0eXBlIGVxICJTVkdNYXRyaXgi
OwogICAgIHJldHVybiAwOwogfQogCkBAIC0yNjcsNyArMjY1LDcgQEAgc3ViIEdlbmVyYXRlSGVh
ZGVyCiAgICAgbXkgJHBvZFR5cGUgPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJQ
T0RUeXBlIn07CiAgICAgbXkgJHBhc3NUeXBlID0gJHBvZFR5cGUgPyAiY29uc3QgJHBvZFR5cGUm
IiA6ICIkaW1wbENsYXNzTmFtZSoiOwogCi0gICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNpbmNs
dWRlIFwiJHBvZFR5cGUuaFwiXG4iKSBpZiAkcG9kVHlwZSBhbmQgJHBvZFR5cGUgbmUgImZsb2F0
IjsKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2luY2x1ZGUgXCIkcG9kVHlwZS5oXCJcbiIp
IGlmICRwb2RUeXBlIGFuZCAkcG9kVHlwZSBuZSAiZG91YmxlIjsKIAogICAgIG15ICRudW1Db25z
dGFudHMgPSBAeyRkYXRhTm9kZS0+Y29uc3RhbnRzfTsKICAgICBteSAkbnVtQXR0cmlidXRlcyA9
IEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfTsKQEAgLTc5Nyw3ICs3OTUsNyBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGNhc2UgIiAuIFdLX3VjZmlyc3QoJG5hbWUpIC4gIkF0dHJOdW06XG4iKTsKIAogICAgICAgICAg
ICAgICAgIGlmICgkcG9kVHlwZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoJHBvZFR5cGUg
ZXEgImZsb2F0IikgeyAjIFNwZWNpYWwgY2FzZSBmb3IgSlNTVkdOdW1iZXIKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCRwb2RUeXBlIGVxICJkb3VibGUiKSB7ICMgU3BlY2lhbCBjYXNlIGZvciBK
U1NWR051bWJlcgogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIHJldHVybiAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwg
ImltcCIpIC4gIjtcbiIpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiAiIC4gTmF0
aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgImltcC4kbmFtZSgpIikgLiAiO1xu
Iik7CkBAIC04NzEsNyArODY5LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGNhc2UgIiAuIFdLX3VjZmlyc3QoJG5hbWUpIC4iQXR0ck51bToge1xu
Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHBvZFR5cGUpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoJHBvZFR5cGUgZXEgImZsb2F0IikgeyAjIFNwZWNpYWwgY2Fz
ZSBmb3IgSlNTVkdOdW1iZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHBvZFR5
cGUgZXEgImRvdWJsZSIpIHsgIyBTcGVjaWFsIGNhc2UgZm9yIEpTU1ZHTnVtYmVyCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBpbXAg
PSAiIC4gSlNWYWx1ZVRvTmF0aXZlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgInZhbHVlIikgLiAi
O1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGltcC5zZXQi
IC4gV0tfdWNmaXJzdCgkbmFtZSkgLiAiKCIgLiBKU1ZhbHVlVG9OYXRpdmUoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLCAidmFsdWUiKSAuICIpO1xuIik7CkBAIC0xMDEyLDcgKzEwMTAsNyBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIp
OwogCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiB2YWwtPmlzT2JqZWN0
KCYke2NsYXNzTmFtZX06OmluZm8pID8gc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHZhbCktPmlt
cGwoKSA6ICIpOwotICAgICAgICBpZiAoJHBvZFR5cGUgYW5kICRwb2RUeXBlIG5lICJmbG9hdCIp
IHsKKyAgICAgICAgaWYgKCRwb2RUeXBlIGFuZCAkcG9kVHlwZSBuZSAiZG91YmxlIikgewogICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIkcG9kVHlwZSgpO1xufVxuIik7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIjA7XG59XG4iKTsKQEAg
LTEwNzYsNiArMTA3NCw3IEBAIHN1YiBHZXROYXRpdmVUeXBlCiAgICAgcmV0dXJuICJFdmVudFRh
cmdldE5vZGUqIiBpZiAkdHlwZSBlcSAiRXZlbnRUYXJnZXQiOwogICAgIHJldHVybiAiRmxvYXRS
ZWN0IiBpZiAkdHlwZSBlcSAiU1ZHUmVjdCI7CiAgICAgcmV0dXJuICJGbG9hdFBvaW50IiBpZiAk
dHlwZSBlcSAiU1ZHUG9pbnQiOworICAgIHJldHVybiAiQWZmaW5lVHJhbnNmb3JtIiBpZiAkdHlw
ZSBlcSAiU1ZHTWF0cml4IjsKICAgICByZXR1cm4gImRvdWJsZSIgaWYgJHR5cGUgZXEgIlNWR051
bWJlciI7CiAgICAgcmV0dXJuICJTVkdQYWludDo6U1ZHUGFpbnRUeXBlIiBpZiAkdHlwZSBlcSAi
U1ZHUGFpbnRUeXBlIjsKIApAQCAtMTIyNCw3ICsxMjIzLDcgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1
ZQogICAgICAgICByZXR1cm4gImdldERPTVJHQkNvbG9yKGV4ZWMsICR2YWx1ZSkiOwogICAgIH0K
IAotICAgIGlmICgkdHlwZSBlcSAiU1ZHUmVjdCIgb3IgJHR5cGUgZXEgIlNWR1BvaW50IiBvciAk
dHlwZSBlcSAiU1ZHTnVtYmVyIikgeworICAgIGlmICgkdHlwZSBlcSAiU1ZHUmVjdCIgb3IgJHR5
cGUgZXEgIlNWR1BvaW50IiBvciAkdHlwZSBlcSAiU1ZHTnVtYmVyIiBvciAkdHlwZSBlcSAiU1ZH
TWF0cml4IikgewogICAgICAgICAkaW1wbEluY2x1ZGVzeyJKUyR0eXBlLmgifSA9IDE7CiAgICAg
ICAgIHJldHVybiAidG9KUyhleGVjLCAkdmFsdWUpIjsKICAgICB9CkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCShyZXZpc2lvbiAxODE3NikK
KysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKICMgCi0jIENvcHlyaWdodCAoQykgMjAwNSBOaWtvbGFz
IFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyMgQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2
IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogIyBDb3B5cmlnaHQgKEMp
IDIwMDYgQW5kZXJzIENhcmxzc29uIDxhbmRlcnNjYUBtYWMuY29tPiAKICMgQ29weXJpZ2h0IChD
KSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgogIyBDb3B5cmlnaHQg
KEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiA8YXBAd2Via2l0Lm9yZz4KQEAgLTUyNyw2ICs1
MjcsMTMgQEAgc3ViIEFkZEluY2x1ZGVzRm9yVHlwZQogICAgICAgICByZXR1cm47CiAgICAgfQog
CisgICAgaWYgKCR0eXBlIGVxICJTVkdNYXRyaXgiKSB7CisgICAgICAgICRpbXBsSW5jbHVkZXN7
IkFmZmluZVRyYW5zZm9ybS5oIn0gPSAxOworICAgICAgICAkaW1wbEluY2x1ZGVzeyJET00kdHlw
ZS5oIn0gPSAxOworICAgICAgICAkaW1wbEluY2x1ZGVzeyJTVkdFeGNlcHRpb24uaCJ9ID0gMTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmICgkdHlwZSBlcSAiU1ZHTnVtYmVyIikg
ewogICAgICAgICAkaW1wbEluY2x1ZGVzeyJET00kdHlwZS5oIn0gPSAxOwogICAgICAgICByZXR1
cm47CkBAIC04MTUsNyArODIyLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBt
eSAkcG9kVHlwZVdpdGhOYW1lc3BhY2U7CiAKICAgICBpZiAoJHBvZFR5cGUpIHsKLSAgICAgICAg
JHBvZFR5cGVXaXRoTmFtZXNwYWNlID0gKCRwb2RUeXBlIGVxICJmbG9hdCIpID8gIiRwb2RUeXBl
IiA6ICJXZWJDb3JlOjokcG9kVHlwZSI7CisgICAgICAgICRwb2RUeXBlV2l0aE5hbWVzcGFjZSA9
ICgkcG9kVHlwZSBlcSAiZG91YmxlIikgPyAiJHBvZFR5cGUiIDogIldlYkNvcmU6OiRwb2RUeXBl
IjsKICAgICB9CiAKICAgICAjIC0gQWRkIGRlZmF1bHQgaGVhZGVyIHRlbXBsYXRlLgpAQCAtODM1
LDcgKzg0Miw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIGlmICghJHBv
ZFR5cGUpIHsKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IiRpbXBsQ2xhc3NOYW1lLmgifSA9
IDE7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyIkcG9kVHlw
ZS5oIn0gPSAxIHVubGVzcyAkcG9kVHlwZSBlcSAiZmxvYXQiOworICAgICAgICAgICAgJGltcGxJ
bmNsdWRlc3siJHBvZFR5cGUuaCJ9ID0gMSB1bmxlc3MgJHBvZFR5cGUgZXEgImRvdWJsZSI7CiAg
ICAgICAgIH0KICAgICB9IAogCkBAIC05NDEsNyArOTQ4LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICAgICAgICAgIG15ICRnZXR0ZXJDb250ZW50VGFpbCA9ICIpIjsKIAogICAg
ICAgICAgICAgIyBTcGVjaWFsIGNhc2UgZm9yIERPTVNWR051bWJlcgotICAgICAgICAgICAgaWYg
KCRwb2RUeXBlIGFuZCAkcG9kVHlwZSBlcSAiZmxvYXQiKSB7CisgICAgICAgICAgICBpZiAoJHBv
ZFR5cGUgYW5kICRwb2RUeXBlIGVxICJkb3VibGUiKSB7CiAgICAgICAgICAgICAgICAgJGdldHRl
ckNvbnRlbnRIZWFkID0gIipJTVBMIjsKICAgICAgICAgICAgICAgICAkZ2V0dGVyQ29udGVudFRh
aWwgPSAiIjsKICAgICAgICAgICAgIH0KQEAgLTk5MCw3ICs5OTcsNyBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICRnZXR0ZXJDb250ZW50VGFpbCAuPSAiKV0i
OwogICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiQ29udmVydEZyb21TdHJpbmcifSkgewogICAgICAgICAgICAgICAgICRnZXR0
ZXJDb250ZW50VGFpbCAuPSAiLnRvSW50KCkiOwotICAgICAgICAgICAgfSBlbHNpZiAoJGlkbFR5
cGUgZXEgIlJHQkNvbG9yIiBvciAkaWRsVHlwZSBlcSAiU1ZHUG9pbnQiIG9yICRpZGxUeXBlIGVx
ICJTVkdSZWN0IiBvciAkaWRsVHlwZSBlcSAiU1ZHTnVtYmVyIikgeworICAgICAgICAgICAgfSBl
bHNpZiAoJGNvZGVHZW5lcmF0b3ItPklzUG9kVHlwZSgkaWRsVHlwZSkpIHsKICAgICAgICAgICAg
ICAgICAkZ2V0dGVyQ29udGVudEhlYWQgPSAiWyRhdHRyaWJ1dGVUeXBlU2Fuc1B0ciAkdHlwZU1h
a2VyOiIgLiAkZ2V0dGVyQ29udGVudEhlYWQ7CiAgICAgICAgICAgICAgICAgJGdldHRlckNvbnRl
bnRUYWlsIC49ICJdIjsKICAgICAgICAgICAgIH0gZWxzaWYgKCR0eXBlTWFrZXIgbmUgIiIpIHsK
QEAgLTEwNTAsOSArMTA1Nyw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVCgkYXJnTmFtZSk7XG5c
biIpOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICMgU3BlY2lhbCBjYXNl
IGZvciBET01TVkdOdW1iZXIKICAgICAgICAgICAgICAgICBpZiAoJHBvZFR5cGUpIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCRwb2RUeXBlIGVxICJmbG9hdCIpIHsKKyAgICAgICAgICAgICAg
ICAgICAgIyBTcGVjaWFsIGNhc2UgZm9yIERPTVNWR051bWJlcgorICAgICAgICAgICAgICAgICAg
ICBpZiAoJHBvZFR5cGUgZXEgImRvdWJsZSIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICpJTVBMID0gJGFyZztcbiIpOwogICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgSU1QTC0+JGF0dHJpYnV0ZU5hbWUoJGFyZyk7XG4iKTsKQEAgLTExMjAsOCArMTEyNyw2
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgJHBhcmFtZXRl
ckluZGV4Kys7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHB1c2goQHBhcmFtZXRlck5h
bWVzLCAiZWMiKSBpZiAkcmFpc2VzRXhjZXB0aW9uczsKLQogICAgICAgICAgICAgbXkgQGZ1bmN0
aW9uQ29udGVudCA9ICgpOwogICAgICAgICAgICAgbXkgJGNhbGxlciA9ICJJTVBMIjsKIApAQCAt
MTE1MSwxMCArMTE1NiwyOCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAg
ICAgICAgICRjYWxsZXIgPSAiZHYiOwogICAgICAgICAgICAgfQogCi0KLSAgICAgICAgICAgIG15
ICRjb250ZW50ID0gJGNhbGxlciAuICItPiIgLiAkZnVuY3Rpb25OYW1lIC4gIigiIC4gam9pbigi
LCAiLCBAcGFyYW1ldGVyTmFtZXMpIC4gIikiOwotCi0gICAgICAgICAgICBpZiAoJHJldHVyblR5
cGUgZXEgInZvaWQiKSB7CisgICAgICAgICAgICAjIEZJWE1FISBXZSBuZWVkIFtDdXN0b21dIHN1
cHBvcnQgZm9yIE9iakMsIHRvIG1vdmUgdGhlc2UgaGFja3MgaW50byBET01TVkdNYXRyaXhDdXN0
b20ubW0KKyAgICAgICAgICAgIG15ICRzdmdNYXRyaXhSb3RhdGVGcm9tVmVjdG9yID0gKCRwb2RU
eXBlIGFuZCAkcG9kVHlwZSBlcSAiQWZmaW5lVHJhbnNmb3JtIiBhbmQgJGZ1bmN0aW9uTmFtZSBl
cSAicm90YXRlRnJvbVZlY3RvciIpOworICAgICAgICAgICAgbXkgJHN2Z01hdHJpeEludmVyc2Ug
PSAoJHBvZFR5cGUgYW5kICRwb2RUeXBlIGVxICJBZmZpbmVUcmFuc2Zvcm0iIGFuZCAkZnVuY3Rp
b25OYW1lIGVxICJpbnZlcnNlIik7CisKKyAgICAgICAgICAgIHB1c2goQHBhcmFtZXRlck5hbWVz
LCAiZWMiKSBpZiAkcmFpc2VzRXhjZXB0aW9ucyBhbmQgISgkc3ZnTWF0cml4Um90YXRlRnJvbVZl
Y3RvciB8fCAkc3ZnTWF0cml4SW52ZXJzZSk7CisgICAgICAgICAgICBteSAkY29udGVudCA9ICRj
YWxsZXIgLiAiLT4iIC4gJGZ1bmN0aW9uTmFtZSAuICIoIiAuIGpvaW4oIiwgIiwgQHBhcmFtZXRl
ck5hbWVzKSAuICIpIjsgCisKKyAgICAgICAgICAgIGlmICgkc3ZnTWF0cml4Um90YXRlRnJvbVZl
Y3RvcikgeworICAgICAgICAgICAgICAgICMgU3BlY2lhbCBjYXNlIHdpdGggcm90YXRlRnJvbVZl
Y3RvciAmIFNWR01hdHJpeCAgICAgICAgCisgICAgICAgICAgICAgICAgcHVzaChAZnVuY3Rpb25D
b250ZW50LCAiICAgICRleGNlcHRpb25Jbml0XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBm
dW5jdGlvbkNvbnRlbnQsICIgICAgaWYgKHggPT0gMC4wIHx8IHkgPT0gMC4wKVxuIik7CisgICAg
ICAgICAgICAgICAgcHVzaChAZnVuY3Rpb25Db250ZW50LCAiICAgICAgICBlYyA9IFdlYkNvcmU6
OlNWR19JTlZBTElEX1ZBTFVFX0VSUjtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0
aW9uQ29udGVudCwgIiAgICAkZXhjZXB0aW9uUmFpc2VPbkVycm9yXG4iKTsKKyAgICAgICAgICAg
ICAgICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIgICAgcmV0dXJuIFtET01TVkdNYXRyaXggX1NW
R01hdHJpeFdpdGg6JGNvbnRlbnRdO1xuIik7CisgICAgICAgICAgICB9IGVsc2lmICgkc3ZnTWF0
cml4SW52ZXJzZSkgeworICAgICAgICAgICAgICAgICMgU3BlY2lhbCBjYXNlIHdpdGggaW52ZXJz
ZSAmIFNWR01hdHJpeAorICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uQ29udGVudCwgIiAg
ICAkZXhjZXB0aW9uSW5pdFxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAZnVuY3Rpb25Db250
ZW50LCAiICAgIGlmICghJGNhbGxlci0+aXNJbnZlcnRpYmxlKCkpXG4iKTsKKyAgICAgICAgICAg
ICAgICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIgICAgICAgIGVjID0gV2ViQ29yZTo6U1ZHX01B
VFJJWF9OT1RfSU5WRVJUQUJMRTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9u
Q29udGVudCwgIiAgICAkZXhjZXB0aW9uUmFpc2VPbkVycm9yXG4iKTsKKyAgICAgICAgICAgICAg
ICBwdXNoKEBmdW5jdGlvbkNvbnRlbnQsICIgICAgcmV0dXJuIFtET01TVkdNYXRyaXggX1NWR01h
dHJpeFdpdGg6JGNvbnRlbnRdO1xuIik7CisgICAgICAgICAgICB9IGVsc2lmICgkcmV0dXJuVHlw
ZSBlcSAidm9pZCIpIHsKICAgICAgICAgICAgICAgICAjIFNwZWNpYWwgY2FzZSAndm9pZCcgcmV0
dXJuIHR5cGUuCiAgICAgICAgICAgICAgICAgaWYgKCRyYWlzZXNFeGNlcHRpb25zKSB7CiAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uQ29udGVudCwgIiAgICAkZXhjZXB0aW9uSW5p
dFxuIik7CkBAIC0xMTkyLDcgKzEyMTUsMTAgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
ICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgICMgU3Vycm91bmQg
Z2V0dGVyIHdpdGggVHlwZU1ha2VyCi0gICAgICAgICAgICAgICAgICAgIGlmICgkcmV0dXJuVHlw
ZUNsYXNzIGVxICJET01SR0JDb2xvciIgb3IgJHJldHVyblR5cGVDbGFzcyBlcSAiRE9NU1ZHUG9p
bnQiIG9yICRyZXR1cm5UeXBlQ2xhc3MgZXEgIkRPTVNWR1JlY3QiIG9yICRyZXR1cm5UeXBlQ2xh
c3MgZXEgIkRPTVNWR051bWJlciIpIHsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGlkbFR5cGUg
PSAkcmV0dXJuVHlwZUNsYXNzOworICAgICAgICAgICAgICAgICAgICAkaWRsVHlwZSA9fiBzL15E
T00vLzsKKworICAgICAgICAgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzUG9kVHlw
ZSgkaWRsVHlwZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICRjb250ZW50ID0gIlskcmV0
dXJuVHlwZUNsYXNzICR0eXBlTWFrZXI6IiAuICRjb250ZW50IC4gIl0iOwogICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgPSAiWyRy
ZXR1cm5UeXBlQ2xhc3MgJHR5cGVNYWtlcjpXVEY6OmdldFB0cigiIC4gJGNvbnRlbnQgLiAiKV0i
OwpAQCAtMTI4Niw4ICsxMzEyLDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
aWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1NWR0FuaW1hdGVkVHlwZSgkaW50ZXJmYWNlTmFtZSkpIHsK
ICAgICAgICAgcHVzaChAaW50ZW5hbEhlYWRlckNvbnRlbnQsICIjaW1wb3J0IDxXZWJDb3JlL1NW
R0FuaW1hdGVkVGVtcGxhdGUuaD5cblxuIik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgcHVzaChA
aW50ZW5hbEhlYWRlckNvbnRlbnQsICJcbm5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgJGltcGxD
bGFzc05hbWU7IH1cblxuIik7CisgICAgICAgIGlmICgkcG9kVHlwZSBhbmQgJHBvZFR5cGUgbmUg
ImRvdWJsZSIpIHsKKyAgICAgICAgICAgIHB1c2goQGludGVuYWxIZWFkZXJDb250ZW50LCAiXG5u
YW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzICRwb2RUeXBlOyB9XG5cbiIpOworICAgICAgICB9IGVs
c2UgeyAKKyAgICAgICAgICAgIHB1c2goQGludGVuYWxIZWFkZXJDb250ZW50LCAiXG5uYW1lc3Bh
Y2UgV2ViQ29yZSB7IGNsYXNzICRpbXBsQ2xhc3NOYW1lOyB9XG5cbiIpOworICAgICAgICB9CiAg
ICAgfQorCiAgICAgcHVzaChAaW50ZW5hbEhlYWRlckNvbnRlbnQsICJcQGludGVyZmFjZSAkY2xh
c3NOYW1lIChXZWJDb3JlSW50ZXJuYWwpXG4iKTsKICAgICBwdXNoKEBpbnRlbmFsSGVhZGVyQ29u
dGVudCwgJHR5cGVHZXR0ZXJTaWcgLiAiO1xuIik7CiAgICAgcHVzaChAaW50ZW5hbEhlYWRlckNv
bnRlbnQsICR0eXBlTWFrZXJTaWcgLiAiO1xuIik7CkluZGV4OiBXZWJDb3JlL2tzdmcyL21pc2Mv
S1NWR1RpbWVTY2hlZHVsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvbWlzYy9L
U1ZHVGltZVNjaGVkdWxlci5jcHAJKHJldmlzaW9uIDE4MTc2KQorKysgV2ViQ29yZS9rc3ZnMi9t
aXNjL0tTVkdUaW1lU2NoZWR1bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNiBA
QAogI2luY2x1ZGUgIlNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZH
VHJhbnNmb3JtTGlzdC5oIgogI2luY2x1ZGUgIlNWR0RPTUltcGxlbWVudGF0aW9uLmgiCi0jaW5j
bHVkZSAiU1ZHTWF0cml4LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdT
dHlsZWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQu
aCIKSW5kZXg6IFdlYkNvcmUva3N2ZzIvbWlzYy9TVkdJbWFnZUxvYWRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9rc3ZnMi9taXNjL1NWR0ltYWdlTG9hZGVyLmNwcAkocmV2aXNpb24gMTgx
NzYpCisrKyBXZWJDb3JlL2tzdmcyL21pc2MvU1ZHSW1hZ2VMb2FkZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiwxMCArMjYsOSBAQAogI2luY2x1ZGUgIkRvY0xvYWRlci5oIgogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAKLSNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR0ltYWdl
RWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgotI2luY2x1ZGUgIlNWR01hdHJpeC5o
IgorI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgogCklu
ZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxODE3NikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVUcmFu
c2Zvcm1FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogCiAjaW5j
bHVkZSAiS1NWR1RpbWVTY2hlZHVsZXIuaCIKICNpbmNsdWRlICJTVkdBbmdsZS5oIgotI2luY2x1
ZGUgIlNWR01hdHJpeC5oIgorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUg
IlNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVu
dC5oIgogI2luY2x1ZGUgIlNWR1RyYW5zZm9ybS5oIgpAQCAtMTM5LDEwICsxMzksMTAgQEAgdm9p
ZCBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6aGFuZGxlVAogICAgICAgICAgICAgICAgIGlm
ICghbV9mcm9tVHJhbnNmb3JtKQogICAgICAgICAgICAgICAgICAgICBtX2Zyb21UcmFuc2Zvcm0g
PSBuZXcgU1ZHVHJhbnNmb3JtKCk7CiAKLSAgICAgICAgICAgICAgICBTVkdNYXRyaXgqIGJ5TWF0
cml4ID0gbV90b1RyYW5zZm9ybS0+bWF0cml4KCk7Ci0gICAgICAgICAgICAgICAgU1ZHTWF0cml4
KiBmcm9tTWF0cml4ID0gbV9mcm9tVHJhbnNmb3JtLT5tYXRyaXgoKTsKKyAgICAgICAgICAgICAg
ICBBZmZpbmVUcmFuc2Zvcm0gYnlNYXRyaXggPSBtX3RvVHJhbnNmb3JtLT5tYXRyaXgoKTsKKyAg
ICAgICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gZnJvbU1hdHJpeCA9IG1fZnJvbVRyYW5zZm9y
bS0+bWF0cml4KCk7CiAKLSAgICAgICAgICAgICAgICBieU1hdHJpeC0+bXVsdGlwbHkoZnJvbU1h
dHJpeCk7CisgICAgICAgICAgICAgICAgYnlNYXRyaXggKj0gZnJvbU1hdHJpeDsKIAogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMTg2LDggKzE4Niw4IEBAIHZvaWQg
U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmhhbmRsZVQKICAgICAgICAgICAgIGlmICghdmFs
dWUxLmlzRW1wdHkoKSAmJiAhdmFsdWUyLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIGJv
b2wgYXBwbHkgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBpZiAobV90b1RyYW5zZm9ybSAmJiBt
X2Zyb21UcmFuc2Zvcm0pIHsgICAgCi0gICAgICAgICAgICAgICAgICAgIHFUb01hdHJpeCA9IG1f
dG9UcmFuc2Zvcm0tPm1hdHJpeCgpLT5tYXRyaXgoKTsKLSAgICAgICAgICAgICAgICAgICAgcUZy
b21NYXRyaXggPSBtX2Zyb21UcmFuc2Zvcm0tPm1hdHJpeCgpLT5tYXRyaXgoKTsKKyAgICAgICAg
ICAgICAgICAgICAgcVRvTWF0cml4ID0gbV90b1RyYW5zZm9ybS0+bWF0cml4KCk7CisgICAgICAg
ICAgICAgICAgICAgIHFGcm9tTWF0cml4ID0gbV9mcm9tVHJhbnNmb3JtLT5tYXRyaXgoKTsKICAg
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGFwcGx5ID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICAgICAgdXNlVGltZVBlcmNlbnRhZ2UgPSAxLjA7CkBAIC0yMDksMzYgKzIw
OSwzOCBAQCB2b2lkIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpoYW5kbGVUCiAgICAgICAg
ICAgICB1c2VUaW1lUGVyY2VudGFnZSA9IGNhbGN1bGF0ZVJlbGF0aXZlVGltZVBlcmNlbnRhZ2Uo
dGltZVBlcmNlbnRhZ2UsIG1fY3VycmVudEl0ZW0pOwogICAgIH0KIAotICAgIGlmIChtX3RvVHJh
bnNmb3JtICYmIG1fdG9UcmFuc2Zvcm0tPm1hdHJpeCgpICYmIHFUb01hdHJpeC5pc0lkZW50aXR5
KCkpCi0gICAgICAgIHFUb01hdHJpeCA9IG1fdG9UcmFuc2Zvcm0tPm1hdHJpeCgpLT5tYXRyaXgo
KTsKKyAgICBpZiAobV90b1RyYW5zZm9ybSAmJiBxVG9NYXRyaXguaXNJZGVudGl0eSgpKQorICAg
ICAgICBxVG9NYXRyaXggPSBtX3RvVHJhbnNmb3JtLT5tYXRyaXgoKTsKIAotICAgIGlmIChtX2Zy
b21UcmFuc2Zvcm0gJiYgbV9mcm9tVHJhbnNmb3JtLT5tYXRyaXgoKSAmJiBxRnJvbU1hdHJpeC5p
c0lkZW50aXR5KCkpCi0gICAgICAgIHFGcm9tTWF0cml4ID0gbV9mcm9tVHJhbnNmb3JtLT5tYXRy
aXgoKS0+bWF0cml4KCk7CisgICAgaWYgKG1fZnJvbVRyYW5zZm9ybSAmJiBxRnJvbU1hdHJpeC5p
c0lkZW50aXR5KCkpCisgICAgICAgIHFGcm9tTWF0cml4ID0gbV9mcm9tVHJhbnNmb3JtLT5tYXRy
aXgoKTsKIAotICAgIGlmICghbV90cmFuc2Zvcm1NYXRyaXgpCisvKiBGSVhNRTogVGhpcyBsb2dp
YyBuZWVkcyBmaXhpbmcsIHdhcyBicm9rZW4gYmVmb3JlLCBpcyBzdGlsbCBicm9rZW4uCisgICAg
aWYgKG1fdHJhbnNmb3JtTWF0cml4KQogICAgICAgICBtX3RyYW5zZm9ybU1hdHJpeCA9IG5ldyBT
VkdNYXRyaXgoKTsKICAgICBlbHNlIHsKLSAgICAgICAgbV90cmFuc2Zvcm1NYXRyaXgtPnJlc2V0
KCk7CisgICAgICAgIG1fdHJhbnNmb3JtTWF0cml4LnJlc2V0KCk7CiAKICAgICAgICAgaWYgKGlz
QWNjdW11bGF0ZWQoKSAmJiByZXBlYXRpb25zKCkgIT0gMC4wICYmIG1fbGFzdE1hdHJpeCkKICAg
ICAgICAgICAgIG1fdHJhbnNmb3JtTWF0cml4LT5tdWx0aXBseShtX2xhc3RNYXRyaXguZ2V0KCkp
OwogICAgIH0KLSAgICAKKyAqLyAgIAorCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICAgICAg
Y2FzZSBTVkdUcmFuc2Zvcm06OlNWR19UUkFOU0ZPUk1fVFJBTlNMQVRFOgogICAgICAgICB7Ci0g
ICAgICAgICAgICBkb3VibGUgZHggPSAoKHFUb01hdHJpeC5keCgpIC0gcUZyb21NYXRyaXguZHgo
KSkgKiB1c2VUaW1lUGVyY2VudGFnZSkgKyBxRnJvbU1hdHJpeC5keCgpOwotICAgICAgICAgICAg
ZG91YmxlIGR5ID0gKChxVG9NYXRyaXguZHkoKSAtIHFGcm9tTWF0cml4LmR5KCkpICogdXNlVGlt
ZVBlcmNlbnRhZ2UpICsgcUZyb21NYXRyaXguZHkoKTsKKyAgICAgICAgICAgIGRvdWJsZSBkeCA9
ICgocVRvTWF0cml4LmUoKSAtIHFGcm9tTWF0cml4LmUoKSkgKiB1c2VUaW1lUGVyY2VudGFnZSkg
KyBxRnJvbU1hdHJpeC5lKCk7CisgICAgICAgICAgICBkb3VibGUgZHkgPSAoKHFUb01hdHJpeC5m
KCkgLSBxRnJvbU1hdHJpeC5mKCkpICogdXNlVGltZVBlcmNlbnRhZ2UpICsgcUZyb21NYXRyaXgu
ZigpOwogCi0gICAgICAgICAgICBtX3RyYW5zZm9ybU1hdHJpeC0+dHJhbnNsYXRlKGR4LCBkeSk7
CisgICAgICAgICAgICBtX3RyYW5zZm9ybU1hdHJpeC50cmFuc2xhdGUoZHgsIGR5KTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgU1ZHVHJhbnNmb3JtOjpTVkdf
VFJBTlNGT1JNX1NDQUxFOgogICAgICAgICB7Ci0gICAgICAgICAgICBkb3VibGUgc3ggPSAoKHFU
b01hdHJpeC5tMTEoKSAtIHFGcm9tTWF0cml4Lm0xMSgpKSAqIHVzZVRpbWVQZXJjZW50YWdlKSAr
IHFGcm9tTWF0cml4Lm0xMSgpOwotICAgICAgICAgICAgZG91YmxlIHN5ID0gKChxVG9NYXRyaXgu
bTIyKCkgLSBxRnJvbU1hdHJpeC5tMjIoKSkgKiB1c2VUaW1lUGVyY2VudGFnZSkgKyBxRnJvbU1h
dHJpeC5tMjIoKTsKKyAgICAgICAgICAgIGRvdWJsZSBzeCA9ICgocVRvTWF0cml4LmEoKSAtIHFG
cm9tTWF0cml4LmEoKSkgKiB1c2VUaW1lUGVyY2VudGFnZSkgKyBxRnJvbU1hdHJpeC5hKCk7Cisg
ICAgICAgICAgICBkb3VibGUgc3kgPSAoKHFUb01hdHJpeC5kKCkgLSBxRnJvbU1hdHJpeC5kKCkp
ICogdXNlVGltZVBlcmNlbnRhZ2UpICsgcUZyb21NYXRyaXguZCgpOwogCi0gICAgICAgICAgICBt
X3RyYW5zZm9ybU1hdHJpeC0+c2NhbGVOb25Vbmlmb3JtKHN4LCBzeSk7CisgICAgICAgICAgICBt
X3RyYW5zZm9ybU1hdHJpeC5zY2FsZShzeCwgc3kpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBTVkdUcmFuc2Zvcm06OlNWR19UUkFOU0ZPUk1fUk9UQVRFOgpA
QCAtMjY1LDI1ICsyNjcsMjUgQEAgdm9pZCBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6aGFu
ZGxlVAogICAgICAgICAgICAgZG91YmxlIGN4ID0gKHRvQ3ggLSBmcm9tQ3gpICogdXNlVGltZVBl
cmNlbnRhZ2UgKyBmcm9tQ3g7CiAgICAgICAgICAgICBkb3VibGUgY3kgPSAodG9DeSAtIGZyb21D
eSkgKiB1c2VUaW1lUGVyY2VudGFnZSArIGZyb21DeTsKIAotICAgICAgICAgICAgbV90cmFuc2Zv
cm1NYXRyaXgtPnRyYW5zbGF0ZShjeCwgY3kpOwotICAgICAgICAgICAgbV90cmFuc2Zvcm1NYXRy
aXgtPnJvdGF0ZShhbmdsZSk7Ci0gICAgICAgICAgICBtX3RyYW5zZm9ybU1hdHJpeC0+dHJhbnNs
YXRlKC1jeCwgLWN5KTsKKyAgICAgICAgICAgIG1fdHJhbnNmb3JtTWF0cml4LnRyYW5zbGF0ZShj
eCwgY3kpOworICAgICAgICAgICAgbV90cmFuc2Zvcm1NYXRyaXgucm90YXRlKGFuZ2xlKTsKKyAg
ICAgICAgICAgIG1fdHJhbnNmb3JtTWF0cml4LnRyYW5zbGF0ZSgtY3gsIC1jeSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIFNWR1RyYW5zZm9ybTo6U1ZHX1RS
QU5TRk9STV9TS0VXWDoKICAgICAgICAgewotICAgICAgICAgICAgZG91YmxlIHN4ID0gKFNWR0Fu
Z2xlOjp0b2RlZyhhdGFuKHFUb01hdHJpeC5tMjEoKSkgLSBhdGFuKHFGcm9tTWF0cml4Lm0yMSgp
KSkgKgotICAgICAgICAgICAgICAgICAgICAgICAgIHVzZVRpbWVQZXJjZW50YWdlKSArIFNWR0Fu
Z2xlOjp0b2RlZyhhdGFuKHFGcm9tTWF0cml4Lm0yMSgpKSk7CisgICAgICAgICAgICBkb3VibGUg
c3ggPSAoU1ZHQW5nbGU6OnRvZGVnKGF0YW4ocVRvTWF0cml4LmMoKSkgLSBhdGFuKHFGcm9tTWF0
cml4LmMoKSkpICoKKyAgICAgICAgICAgICAgICAgICAgICAgICB1c2VUaW1lUGVyY2VudGFnZSkg
KyBTVkdBbmdsZTo6dG9kZWcoYXRhbihxRnJvbU1hdHJpeC5jKCkpKTsKIAotICAgICAgICAgICAg
bV90cmFuc2Zvcm1NYXRyaXgtPnNrZXdYKHN4KTsKKyAgICAgICAgICAgIG1fdHJhbnNmb3JtTWF0
cml4LnNoZWFyKHN4LCAxLjApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBTVkdUcmFuc2Zvcm06OlNWR19UUkFOU0ZPUk1fU0tFV1k6CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGRvdWJsZSBzeSA9IChTVkdBbmdsZTo6dG9kZWcoYXRhbihxVG9NYXRyaXgubTEy
KCkpIC0gYXRhbihxRnJvbU1hdHJpeC5tMTIoKSkpICoKLSAgICAgICAgICAgICAgICAgICAgICAg
ICB1c2VUaW1lUGVyY2VudGFnZSkgKyBTVkdBbmdsZTo6dG9kZWcoYXRhbihxRnJvbU1hdHJpeC5t
MTIoKSkpOworICAgICAgICAgICAgZG91YmxlIHN5ID0gKFNWR0FuZ2xlOjp0b2RlZyhhdGFuKHFU
b01hdHJpeC5iKCkpIC0gYXRhbihxRnJvbU1hdHJpeC5iKCkpKSAqCisgICAgICAgICAgICAgICAg
ICAgICAgICAgdXNlVGltZVBlcmNlbnRhZ2UpICsgU1ZHQW5nbGU6OnRvZGVnKGF0YW4ocUZyb21N
YXRyaXguYigpKSk7CiAKLSAgICAgICAgICAgIG1fdHJhbnNmb3JtTWF0cml4LT5za2V3WShzeSk7
CisgICAgICAgICAgICBtX3RyYW5zZm9ybU1hdHJpeC5zaGVhcigxLjAsIHN5KTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0yOTUsMTAgKzI5Nywx
MCBAQCB2b2lkIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpoYW5kbGVUCiAgICAgewogICAg
ICAgICBpZiAoKG1fcmVwZWF0Q291bnQgPiAwICYmIG1fcmVwZWF0aW9ucyA8IG1fcmVwZWF0Q291
bnQgLSAxKSB8fCBpc0luZGVmaW5pdGUobV9yZXBlYXRDb3VudCkpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIG1fbGFzdE1hdHJpeCA9IG5ldyBTVkdNYXRyaXgoKTsKLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgaWYgKG1fdHJhbnNmb3JtTWF0cml4KQotICAgICAgICAgICAgICAgIG1fbGFzdE1h
dHJpeC0+Y29weShtX3RyYW5zZm9ybU1hdHJpeC5nZXQoKSk7CisgICAgICAgICAgICBtX2xhc3RN
YXRyaXgucmVzZXQoKTsKKworICAgICAgICAgICAgaWYgKCFtX3RyYW5zZm9ybU1hdHJpeC5pc0lk
ZW50aXR5KCkpCisgICAgICAgICAgICAgICAgbV9sYXN0TWF0cml4ID0gbV90cmFuc2Zvcm1NYXRy
aXg7CiAKICAgICAgICAgICAgIG1fcmVwZWF0aW9ucysrOwogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMzE0LDExICszMTYsMTEgQEAgdm9pZCBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6aGFu
ZGxlVAogICAgICAgICBtX2luaXRpYWxUcmFuc2Zvcm0gPSAwOwogCiAgICAgICAgIGlmICghaXNG
cm96ZW4oKSkgewotICAgICAgICAgICAgU1ZHTWF0cml4KiBpbml0aWFsID0gaW5pdGlhbE1hdHJp
eCgpOwotICAgICAgICAgICAgaWYgKGluaXRpYWwpCisgICAgICAgICAgICBBZmZpbmVUcmFuc2Zv
cm0gaW5pdGlhbCA9IGluaXRpYWxNYXRyaXgoKTsKKyAgICAgICAgICAgIGlmICghaW5pdGlhbC5p
c0lkZW50aXR5KCkpCiAgICAgICAgICAgICAgICAgbV90cmFuc2Zvcm1NYXRyaXggPSBpbml0aWFs
OwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fdHJhbnNmb3JtTWF0cml4ID0g
bmV3IFNWR01hdHJpeCgpOworICAgICAgICAgICAgICAgIG1fdHJhbnNmb3JtTWF0cml4LnJlc2V0
KCk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC00MTQsOCArNDE2LDggQEAgUmVmUHRyPFNWR1Ry
YW5zZm9ybT4gU1ZHQW5pbWF0ZVRyYW5zZm9ybQogCiB2b2lkIFNWR0FuaW1hdGVUcmFuc2Zvcm1F
bGVtZW50OjpjYWxjdWxhdGVSb3RhdGlvbkZyb21NYXRyaXgoY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBtYXRyaXgsIGRvdWJsZSYgYW5nbGUsIGRvdWJsZSYgY3gsIGRvdWJsZSYgY3kpIGNvbnN0CiB7
Ci0gICAgZG91YmxlIGNvc2EgPSBtYXRyaXgubTExKCk7Ci0gICAgZG91YmxlIHNpbmEgPSAtbWF0
cml4Lm0yMSgpOworICAgIGRvdWJsZSBjb3NhID0gbWF0cml4LmEoKTsKKyAgICBkb3VibGUgc2lu
YSA9IC1tYXRyaXguYygpOwogCiAgICAgaWYgKGNvc2EgIT0gMS4wKQogICAgIHsKQEAgLTQyNyw4
ICs0MjksOCBAQCB2b2lkIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpjYWxjdWxhCiAgICAg
ICAgIAogICAgICAgICBkb3VibGUgcmVzID0gKDEgLSBjb3NhKSArICgoc2luYSAqIHNpbmEpIC8g
KDEgLSBjb3NhKSk7CiAgICAgICAgIAotICAgICAgICBjeCA9IChtYXRyaXguZHgoKSAtICgoc2lu
YSAqIG1hdHJpeC5keSgpKSAvICgxIC0gY29zYSkpKSAvIHJlczsKLSAgICAgICAgY3kgPSAobWF0
cml4LmR5KCkgKyAoKHNpbmEgKiBtYXRyaXguZHgoKSkgLyAoMSAtIGNvc2EpKSkgLyByZXM7Cisg
ICAgICAgIGN4ID0gKG1hdHJpeC5lKCkgLSAoKHNpbmEgKiBtYXRyaXguZigpKSAvICgxIC0gY29z
YSkpKSAvIHJlczsKKyAgICAgICAgY3kgPSAobWF0cml4LmYoKSArICgoc2luYSAqIG1hdHJpeC5l
KCkpIC8gKDEgLSBjb3NhKSkpIC8gcmVzOwogCiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00
MzgsMjggKzQ0MCwyNSBAQCB2b2lkIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpjYWxjdWxh
CiAgICAgYW5nbGUgPSAwLjA7CiB9CiAKLVNWR01hdHJpeCogU1ZHQW5pbWF0ZVRyYW5zZm9ybUVs
ZW1lbnQ6OmluaXRpYWxNYXRyaXgoKSBjb25zdAorQWZmaW5lVHJhbnNmb3JtIFNWR0FuaW1hdGVU
cmFuc2Zvcm1FbGVtZW50Ojppbml0aWFsTWF0cml4KCkgY29uc3QKIHsKICAgICBpZiAoIXRhcmdl
dEVsZW1lbnQoKS0+aXNTdHlsZWRUcmFuc2Zvcm1hYmxlKCkpCi0gICAgICAgIHJldHVybiAwOwor
ICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7CiAgICAgU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQqIHRyYW5zZm9ybSA9IHN0YXRpY19jYXN0PFNWR1N0eWxlZFRyYW5zZm9ybWFi
bGVFbGVtZW50Kj4odGFyZ2V0RWxlbWVudCgpKTsKICAgICBTVkdUcmFuc2Zvcm1MaXN0KiB0cmFu
c2Zvcm1MaXN0ID0gKHRyYW5zZm9ybSA/IHRyYW5zZm9ybS0+dHJhbnNmb3JtQmFzZVZhbHVlKCkg
OiAwKTsKICAgICBpZiAoIXRyYW5zZm9ybUxpc3QpCi0gICAgICAgIHJldHVybiAwOwotICAgIAor
ICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7CisKICAgICBSZWZQdHI8U1ZHVHJhbnNm
b3JtPiByZXN1bHQgPSB0cmFuc2Zvcm1MaXN0LT5jb25jYXRlbmF0ZSgpOwogICAgIGlmICghcmVz
dWx0KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFNWR01hdHJpeCogcmV0ID0gcmVzdWx0LT5t
YXRyaXgoKTsKLSAgICByZXQtPnJlZigpOworICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3Jt
KCk7CiAKLSAgICByZXR1cm4gcmV0OworICAgIHJldHVybiByZXN1bHQtPm1hdHJpeCgpOwogfQog
Ci1TVkdNYXRyaXgqIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50Ojp0cmFuc2Zvcm1NYXRyaXgo
KSBjb25zdAorQWZmaW5lVHJhbnNmb3JtIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50Ojp0cmFu
c2Zvcm1NYXRyaXgoKSBjb25zdAogewotICAgIHJldHVybiBtX3RyYW5zZm9ybU1hdHJpeC5nZXQo
KTsKKyAgICByZXR1cm4gbV90cmFuc2Zvcm1NYXRyaXg7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuaAkocmV2aXNpb24gMTgx
NzYpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NCw4ICs0NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgUmVmUHRyPFNWR1RyYW5zZm9ybT4gcGFyc2VUcmFuc2Zvcm1WYWx1ZShjb25zdCBTdHJpbmcm
KSBjb25zdDsKICAgICAgICAgdm9pZCBjYWxjdWxhdGVSb3RhdGlvbkZyb21NYXRyaXgoY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiwgZG91YmxlJiBhbmdsZSwgZG91YmxlJiBjeCwgZG91YmxlJiBjeSkg
Y29uc3Q7CiAKLSAgICAgICAgU1ZHTWF0cml4KiBpbml0aWFsTWF0cml4KCkgY29uc3Q7Ci0gICAg
ICAgIFNWR01hdHJpeCogdHJhbnNmb3JtTWF0cml4KCkgY29uc3Q7CisgICAgICAgIEFmZmluZVRy
YW5zZm9ybSBpbml0aWFsTWF0cml4KCkgY29uc3Q7CisgICAgICAgIEFmZmluZVRyYW5zZm9ybSB0
cmFuc2Zvcm1NYXRyaXgoKSBjb25zdDsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVh
bCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7
IH0KQEAgLTU4LDggKzU4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBSZWZQdHI8
U1ZHVHJhbnNmb3JtPiBtX2Zyb21UcmFuc2Zvcm07CiAgICAgICAgIFJlZlB0cjxTVkdUcmFuc2Zv
cm0+IG1faW5pdGlhbFRyYW5zZm9ybTsKIAotICAgICAgICBSZWZQdHI8U1ZHTWF0cml4PiBtX2xh
c3RNYXRyaXg7Ci0gICAgICAgIFJlZlB0cjxTVkdNYXRyaXg+IG1fdHJhbnNmb3JtTWF0cml4Owor
ICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gbV9sYXN0TWF0cml4OworICAgICAgICBBZmZpbmVUcmFu
c2Zvcm0gbV90cmFuc2Zvcm1NYXRyaXg7CiAKICAgICAgICAgbXV0YWJsZSBib29sIG1fcm90YXRl
U3BlY2lhbENhc2UgOiAxOwogICAgICAgICBib29sIG1fdG9Sb3RhdGVTcGVjaWFsQ2FzZSA6IDE7
CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAJKHJldmlzaW9u
IDE4MTc2KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5j
bHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNWR0hlbHBlci5oIgotI2luY2x1ZGUgIlNW
R01hdHJpeC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHVW5pdFR5cGVz
LmgiCiAjaW5jbHVkZSAiY3Nzc3R5bGVzZWxlY3Rvci5oIgpAQCAtODgsNyArODcsNyBAQCBTVkdS
ZXNvdXJjZSogU1ZHQ2xpcFBhdGhFbGVtZW50OjpjYW52YXNSCiAgICAgICAgICAgICBSZW5kZXJT
dHlsZSogcGF0aFN0eWxlID0gZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpLT5zdHlsZUZvckVs
ZW1lbnQoc3R5bGVkLCBjbGlwUGF0aFN0eWxlKTsKICAgICAgICAgICAgIFBhdGggcGF0aERhdGEg
PSBzdHlsZWQtPnRvUGF0aERhdGEoKTsKICAgICAgICAgICAgIGlmIChlLT5pc1N0eWxlZFRyYW5z
Zm9ybWFibGUoKSkKLSAgICAgICAgICAgICAgICBwYXRoRGF0YS50cmFuc2Zvcm0oc3RhdGljX2Nh
c3Q8U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQqPihlKS0+bG9jYWxNYXRyaXgoKS0+bWF0
cml4KCkpOworICAgICAgICAgICAgICAgIHBhdGhEYXRhLnRyYW5zZm9ybShzdGF0aWNfY2FzdDxT
VkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCo+KGUpLT5sb2NhbE1hdHJpeCgpKTsKICAgICAg
ICAgICAgIGlmICghcGF0aERhdGEuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIG1fY2xpcHBl
ci0+YWRkQ2xpcERhdGEocGF0aERhdGEsIHBhdGhTdHlsZS0+c3ZnU3R5bGUoKS0+Y2xpcFJ1bGUo
KSwgYmJveCk7CiAgICAgICAgICAgICBwYXRoU3R5bGUtPmRlcmVmKHZpZXcoKS0+cmVuZGVyQXJl
bmEoKSk7CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHAJKHJldmlzaW9u
IDE4MTc2KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODIsMTEgKzgyLDExIEBAIGJhaWxfb3V0OjsKICAgICAvLyBGSVhNRTogUGVy
IHRoZSBzcGVjIHdlIGFyZSBzdXBwb3NlZCB0byBzZXQgdGhlIGRvY3VtZW50IGludG8gYW4gImVy
cm9yIHN0YXRlIiBoZXJlLgogfQogCi1TVkdNYXRyaXgqIFNWR0ZpdFRvVmlld0JveDo6dmlld0Jv
eFRvVmlld1RyYW5zZm9ybShmbG9hdCB2aWV3V2lkdGgsIGZsb2F0IHZpZXdIZWlnaHQpIGNvbnN0
CitBZmZpbmVUcmFuc2Zvcm0gU1ZHRml0VG9WaWV3Qm94Ojp2aWV3Qm94VG9WaWV3VHJhbnNmb3Jt
KGZsb2F0IHZpZXdXaWR0aCwgZmxvYXQgdmlld0hlaWdodCkgY29uc3QKIHsKICAgICBGbG9hdFJl
Y3Qgdmlld0JveFJlY3QgPSB2aWV3Qm94KCk7CiAgICAgaWYgKCF2aWV3Qm94UmVjdC53aWR0aCgp
IHx8ICF2aWV3Qm94UmVjdC5oZWlnaHQoKSkKLSAgICAgICAgcmV0dXJuIFNWR1NWR0VsZW1lbnQ6
OmNyZWF0ZVNWR01hdHJpeCgpOworICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7CiAK
ICAgICByZXR1cm4gcHJlc2VydmVBc3BlY3RSYXRpbygpLT5nZXRDVE0odmlld0JveFJlY3QueCgp
LAogICAgICAgICAgICAgdmlld0JveFJlY3QueSgpLCB2aWV3Qm94UmVjdC53aWR0aCgpLCB2aWV3
Qm94UmVjdC5oZWlnaHQoKSwKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZpdFRvVmlld0Jv
eC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZpdFRvVmlld0JveC5oCShy
ZXZpc2lvbiAxODE3NikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZpdFRvVmlld0JveC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBjbGFzcyBBdHRyaWJ1dGU7Ci0gICAgY2xhc3MgU1ZHTWF0cml4OworICAgIGNsYXNzIEFmZmlu
ZVRyYW5zZm9ybTsKICAgICBjbGFzcyBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOwogICAgIGNsYXNz
IFN0cmluZ0ltcGw7CiAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgICAgIC8vICdTVkdGaXRUb1ZpZXdCb3gnIGZ1bmN0aW9ucwogICAgICAgICB2b2lkIHBhcnNl
Vmlld0JveChjb25zdCBTdHJpbmcmKTsKLSAgICAgICAgU1ZHTWF0cml4KiB2aWV3Qm94VG9WaWV3
VHJhbnNmb3JtKGZsb2F0IHZpZXdXaWR0aCwgZmxvYXQgdmlld0hlaWdodCkgY29uc3Q7CisgICAg
ICAgIEFmZmluZVRyYW5zZm9ybSB2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKGZsb2F0IHZpZXdXaWR0
aCwgZmxvYXQgdmlld0hlaWdodCkgY29uc3Q7CiAKICAgICAgICAgYm9vbCBwYXJzZU1hcHBlZEF0
dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKIApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
TGVuZ3RoTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGVuZ3Ro
TGlzdC5jcHAJKHJldmlzaW9uIDE4MTc2KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGVuZ3Ro
TGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDYgQEAKIAogI2lmZGVmIFNWR19T
VVBQT1JUCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoTGlzdC5oIgotI2luY2x1ZGUgIlNWR01hdHJpeC5o
IgogI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRl
eDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxODE3NikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJTVkdQ
YWludFNlcnZlckxpbmVhckdyYWRpZW50LmgiCiAjaW5jbHVkZSAiU1ZHSGVscGVyLmgiCiAjaW5j
bHVkZSAiU1ZHTGVuZ3RoLmgiCi0jaW5jbHVkZSAiU1ZHTWF0cml4LmgiCiAjaW5jbHVkZSAiU1ZH
TmFtZXMuaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zv
cm1MaXN0LmgiCkBAIC04OCw3ICs4Nyw3IEBAIHZvaWQgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50
OjpidWlsZEdyYWQKICAgICBSZWZQdHI8U1ZHUGFpbnRTZXJ2ZXJMaW5lYXJHcmFkaWVudD4gZ3Jh
ZCA9IFdURjo6c3RhdGljX3BvaW50ZXJfY2FzdDxTVkdQYWludFNlcnZlckxpbmVhckdyYWRpZW50
PihfZ3JhZCk7CiAgICAgQWZmaW5lVHJhbnNmb3JtIG1hdDsKICAgICBpZiAoZ3JhZGllbnRUcmFu
c2Zvcm0oKS0+bnVtYmVyT2ZJdGVtcygpID4gMCkKLSAgICAgICAgbWF0ID0gZ3JhZGllbnRUcmFu
c2Zvcm0oKS0+Y29uc29saWRhdGUoKS0+bWF0cml4KCktPm1hdHJpeCgpOworICAgICAgICBtYXQg
PSBncmFkaWVudFRyYW5zZm9ybSgpLT5jb25zb2xpZGF0ZSgpLT5tYXRyaXgoKTsKIAogICAgIERl
cHJlY2F0ZWRTdHJpbmcgcmVmID0gaHJlZigpLmRlcHJlY2F0ZWRTdHJpbmcoKTsKICAgICBSZWZQ
dHI8U1ZHUGFpbnRTZXJ2ZXI+IHBzZXJ2ZXIgPSBnZXRQYWludFNlcnZlckJ5SWQoZG9jdW1lbnQo
KSwgcmVmLm1pZCgxKSk7CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMb2NhdGFibGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xvY2F0YWJsZS5jcHAJKHJldmlz
aW9uIDE4MTc2KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTG9jYXRhYmxlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsOCArMjQsOSBAQAogI2lmZGVmIFNWR19TVVBQT1JUCiAjaW5jbHVkZSAi
U1ZHTG9jYXRhYmxlLmgiCiAKKyNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRl
ICJSZW5kZXJQYXRoLmgiCi0jaW5jbHVkZSAiU1ZHTWF0cml4LmgiCisjaW5jbHVkZSAiU1ZHRXhj
ZXB0aW9uLmgiCiAjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC04OCw1NyArODksNTYgQEAgRmxvYXRSZWN0IFNWR0xvY2F0YWJsZTo6Z2V0QkJveChj
b25zdCBTVgogICAgIHJldHVybiBiYm94UmVjdDsKIH0KIAotU1ZHTWF0cml4KiBTVkdMb2NhdGFi
bGU6OmdldENUTShjb25zdCBTVkdFbGVtZW50KiBlbGVtZW50KQorQWZmaW5lVHJhbnNmb3JtIFNW
R0xvY2F0YWJsZTo6Z2V0Q1RNKGNvbnN0IFNWR0VsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgaWYg
KCFlbGVtZW50KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5z
Zm9ybSgpOwogCi0gICAgU1ZHTWF0cml4KiBjdG0gPSBTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdN
YXRyaXgoKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gY3RtOwogCiAgICAgTm9kZSogcGFyZW50ID0g
ZWxlbWVudC0+cGFyZW50Tm9kZSgpOwogICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LT5pc0VsZW1l
bnROb2RlKCkpIHsKICAgICAgICAgU1ZHRWxlbWVudCogcGFyZW50RWxlbWVudCA9IHN2Z19keW5h
bWljX2Nhc3QocGFyZW50KTsKICAgICAgICAgaWYgKHBhcmVudEVsZW1lbnQgJiYgcGFyZW50RWxl
bWVudC0+aXNTdHlsZWRMb2NhdGFibGUoKSkgewotICAgICAgICAgICAgUmVmUHRyPFNWR01hdHJp
eD4gcGFyZW50Q1RNID0gc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudCo+KHBh
cmVudEVsZW1lbnQpLT5nZXRDVE0oKTsKLSAgICAgICAgICAgIGN0bS0+bXVsdGlwbHkocGFyZW50
Q1RNLmdldCgpKTsKKyAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBwYXJlbnRDVE0gPSBzdGF0
aWNfY2FzdDxTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50Kj4ocGFyZW50RWxlbWVudCktPmdldENU
TSgpOworICAgICAgICAgICAgY3RtID0gcGFyZW50Q1RNICogY3RtOwogICAgICAgICB9CiAgICAg
fQogCiAgICAgcmV0dXJuIGN0bTsKIH0KIAotU1ZHTWF0cml4KiBTVkdMb2NhdGFibGU6OmdldFNj
cmVlbkNUTShjb25zdCBTVkdFbGVtZW50KiBlbGVtZW50KQorQWZmaW5lVHJhbnNmb3JtIFNWR0xv
Y2F0YWJsZTo6Z2V0U2NyZWVuQ1RNKGNvbnN0IFNWR0VsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAg
aWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIEFmZmluZVRy
YW5zZm9ybSgpOwogCi0gICAgU1ZHTWF0cml4KiBjdG0gPSBTVkdTVkdFbGVtZW50OjpjcmVhdGVT
VkdNYXRyaXgoKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gY3RtOwogCiAgICAgTm9kZSogcGFyZW50
ID0gZWxlbWVudC0+cGFyZW50Tm9kZSgpOwogICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LT5pc0Vs
ZW1lbnROb2RlKCkpIHsKICAgICAgICAgU1ZHRWxlbWVudCogcGFyZW50RWxlbWVudCA9IHN0YXRp
Y19jYXN0PFNWR0VsZW1lbnQqPihwYXJlbnQpOwogICAgICAgICBpZiAocGFyZW50RWxlbWVudC0+
aXNTdHlsZWRMb2NhdGFibGUoKSkgewotICAgICAgICAgICAgUmVmUHRyPFNWR01hdHJpeD4gcGFy
ZW50Q1RNID0gc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudCo+KHBhcmVudEVs
ZW1lbnQpLT5nZXRTY3JlZW5DVE0oKTsKLSAgICAgICAgICAgIGN0bS0+bXVsdGlwbHkocGFyZW50
Q1RNLmdldCgpKTsKKyAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBwYXJlbnRDVE0gPSBzdGF0
aWNfY2FzdDxTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50Kj4ocGFyZW50RWxlbWVudCktPmdldFNj
cmVlbkNUTSgpOworICAgICAgICAgICAgY3RtID0gcGFyZW50Q1RNICogY3RtOwogICAgICAgICB9
CiAgICAgfQogCiAgICAgcmV0dXJuIGN0bTsKIH0KIAotU1ZHTWF0cml4KiBTVkdMb2NhdGFibGU6
OmdldFRyYW5zZm9ybVRvRWxlbWVudChTVkdFbGVtZW50KiB0YXJnZXQsIEV4Y2VwdGlvbkNvZGUm
IGVjKSBjb25zdAorQWZmaW5lVHJhbnNmb3JtIFNWR0xvY2F0YWJsZTo6Z2V0VHJhbnNmb3JtVG9F
bGVtZW50KFNWR0VsZW1lbnQqIHRhcmdldCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7Ci0g
ICAgUmVmUHRyPFNWR01hdHJpeD4gc3RhcnRjdG0oZ2V0Q1RNKCkpOwotICAgIFNWR01hdHJpeCog
Y3RtID0gU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHTWF0cml4KCk7Ci0gICAgY3RtLT5tdWx0aXBs
eShzdGFydGN0bS5nZXQoKSk7CisgICAgQWZmaW5lVHJhbnNmb3JtIGN0bSA9IGdldENUTSgpOwog
CiAgICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IHN2Z19keW5hbWljX2Nhc3QodGFyZ2V0
KTsKICAgICBpZiAodGFyZ2V0RWxlbWVudCAmJiB0YXJnZXRFbGVtZW50LT5pc1N0eWxlZExvY2F0
YWJsZSgpKSB7Ci0gICAgICAgIFJlZlB0cjxTVkdNYXRyaXg+IHRhcmdldENUTSA9IHN0YXRpY19j
YXN0PFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQqPih0YXJnZXRFbGVtZW50KS0+Z2V0Q1RNKCk7
Ci0gICAgICAgIHRhcmdldENUTS5nZXQoKS0+aW52ZXJzZShlYyk7Ci0gICAgICAgIGlmIChlYykK
KyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRhcmdldENUTSA9IHN0YXRpY19jYXN0PFNWR1N0eWxl
ZExvY2F0YWJsZUVsZW1lbnQqPih0YXJnZXRFbGVtZW50KS0+Z2V0Q1RNKCk7CisgICAgICAgIGlm
ICghdGFyZ2V0Q1RNLmlzSW52ZXJ0aWJsZSgpKSB7CisgICAgICAgICAgICBlYyA9IFNWR19NQVRS
SVhfTk9UX0lOVkVSVEFCTEU7CiAgICAgICAgICAgICByZXR1cm4gY3RtOwotICAgICAgICBjdG0t
PnBvc3RNdWx0aXBseSh0YXJnZXRDVE0uZ2V0KCkpOworICAgICAgICB9CisgICAgICAgIGN0bSAq
PSB0YXJnZXRDVE0uaW52ZXJzZSgpOwogICAgIH0KIAogICAgIHJldHVybiBjdG07CkluZGV4OiBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdMb2NhdGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdMb2NhdGFibGUuaAkocmV2aXNpb24gMTgxNzYpCisrKyBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdMb2NhdGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjksOSArMjksOSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKKyAgICBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiAgICAgY2xh
c3MgRmxvYXRSZWN0OwogICAgIGNsYXNzIFNWR0VsZW1lbnQ7Ci0gICAgY2xhc3MgU1ZHTWF0cml4
OwogICAgIGNsYXNzIFNWR1N0eWxlZEVsZW1lbnQ7CiAKICAgICBjbGFzcyBTVkdMb2NhdGFibGUg
ewpAQCAtNDQsMTYgKzQ0LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVh
bCBTVkdFbGVtZW50KiBmYXJ0aGVzdFZpZXdwb3J0RWxlbWVudCgpIGNvbnN0ID0gMDsKIAogICAg
ICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBnZXRCQm94KCkgY29uc3QgPSAwOwotICAgICAgICB2aXJ0
dWFsIFNWR01hdHJpeCogZ2V0Q1RNKCkgY29uc3QgPSAwOwotICAgICAgICB2aXJ0dWFsIFNWR01h
dHJpeCogZ2V0U2NyZWVuQ1RNKCkgY29uc3QgPSAwOwotICAgICAgICBTVkdNYXRyaXgqIGdldFRy
YW5zZm9ybVRvRWxlbWVudChTVkdFbGVtZW50KiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OworICAg
ICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBnZXRDVE0oKSBjb25zdCA9IDA7CisgICAgICAg
IHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGdldFNjcmVlbkNUTSgpIGNvbnN0ID0gMDsKKyAgICAg
ICAgQWZmaW5lVHJhbnNmb3JtIGdldFRyYW5zZm9ybVRvRWxlbWVudChTVkdFbGVtZW50KiwgRXhj
ZXB0aW9uQ29kZSYpIGNvbnN0OwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBzdGF0aWMgU1ZH
RWxlbWVudCogbmVhcmVzdFZpZXdwb3J0RWxlbWVudChjb25zdCBTVkdTdHlsZWRFbGVtZW50Kik7
CiAgICAgICAgIHN0YXRpYyBTVkdFbGVtZW50KiBmYXJ0aGVzdFZpZXdwb3J0RWxlbWVudChjb25z
dCBTVkdTdHlsZWRFbGVtZW50Kik7CiAgICAgICAgIHN0YXRpYyBGbG9hdFJlY3QgZ2V0QkJveChj
b25zdCBTVkdTdHlsZWRFbGVtZW50Kik7Ci0gICAgICAgIHN0YXRpYyBTVkdNYXRyaXgqIGdldENU
TShjb25zdCBTVkdFbGVtZW50Kik7Ci0gICAgICAgIHN0YXRpYyBTVkdNYXRyaXgqIGdldFNjcmVl
bkNUTShjb25zdCBTVkdFbGVtZW50Kik7CisgICAgICAgIHN0YXRpYyBBZmZpbmVUcmFuc2Zvcm0g
Z2V0Q1RNKGNvbnN0IFNWR0VsZW1lbnQqKTsKKyAgICAgICAgc3RhdGljIEFmZmluZVRyYW5zZm9y
bSBnZXRTY3JlZW5DVE0oY29uc3QgU1ZHRWxlbWVudCopOwogICAgIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxODE3NikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiU1ZHRml0VG9WaWV3
Qm94LmgiCiAjaW5jbHVkZSAiU1ZHSGVscGVyLmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCi0j
aW5jbHVkZSAiU1ZHTWF0cml4LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJT
VkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCiAjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgpJbmRl
eDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWF0cml4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdNYXRyaXguY3BwCShyZXZpc2lvbiAxODE3NikKKysrIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR01hdHJpeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMzA1ICswLDAgQEAKLS8q
Ci0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZv
eEBrZGUub3JnPgotICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0Br
ZGUub3JnPgotCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0Ci0KLSAg
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
LSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2Ug
LSBTdWl0ZSAzMzAsCi0gICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0qLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaWZkZWYgU1ZHX1NVUFBPUlQKLSNpbmNsdWRlICJTVkdNYXRyaXgu
aCIKLQotI2luY2x1ZGUgIlNWR0FuZ2xlLmgiCi0jaW5jbHVkZSAiU1ZHRXhjZXB0aW9uLmgiCi0j
aW5jbHVkZSAiU1ZHSGVscGVyLmgiCi0jaW5jbHVkZSA8bWF0aC5oPgotCi11c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKLQotU1ZHTWF0cml4OjpTVkdNYXRyaXgoKSA6IFNoYXJlZDxTVkdNYXRyaXg+
KCkKLXsKLX0KLQotU1ZHTWF0cml4OjpTVkdNYXRyaXgoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBt
YXQpCi0gICAgOiBTaGFyZWQ8U1ZHTWF0cml4PigpCi0gICAgLCBtX21hdChtYXQpCi17Ci19Ci0K
LVNWR01hdHJpeDo6U1ZHTWF0cml4KGRvdWJsZSBhLCBkb3VibGUgYiwgZG91YmxlIGMsIGRvdWJs
ZSBkLCBkb3VibGUgZSwgZG91YmxlIGYpIDogU2hhcmVkPFNWR01hdHJpeD4oKQotewotICAgIG1f
bWF0LnNldE1hdHJpeChhLCBiLCBjLCBkLCBlLCBmKTsKLX0KLQotU1ZHTWF0cml4Ojp+U1ZHTWF0
cml4KCkKLXsKLX0KLQotdm9pZCBTVkdNYXRyaXg6OnNldEEoZG91YmxlIGEpCi17Ci0gICAgbV9t
YXQuc2V0TWF0cml4KGEsIG1fbWF0Lm0xMigpLCBtX21hdC5tMjEoKSwgbV9tYXQubTIyKCksIG1f
bWF0LmR4KCksIG1fbWF0LmR5KCkpOwotfQotCi1kb3VibGUgU1ZHTWF0cml4OjphKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9tYXQubTExKCk7Ci19Ci0KLXZvaWQgU1ZHTWF0cml4OjpzZXRCKGRv
dWJsZSBiKQotewotICAgIG1fbWF0LnNldE1hdHJpeChtX21hdC5tMTEoKSwgYiwgbV9tYXQubTIx
KCksIG1fbWF0Lm0yMigpLCBtX21hdC5keCgpLCBtX21hdC5keSgpKTsKLX0KLQotZG91YmxlIFNW
R01hdHJpeDo6YigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbWF0Lm0xMigpOwotfQotCi12b2lk
IFNWR01hdHJpeDo6c2V0Qyhkb3VibGUgYykKLXsKLSAgICBtX21hdC5zZXRNYXRyaXgobV9tYXQu
bTExKCksIG1fbWF0Lm0xMigpLCBjLCBtX21hdC5tMjIoKSwgbV9tYXQuZHgoKSwgbV9tYXQuZHko
KSk7Ci19Ci0KLWRvdWJsZSBTVkdNYXRyaXg6OmMoKSBjb25zdAotewotICAgIHJldHVybiBtX21h
dC5tMjEoKTsKLX0KLQotdm9pZCBTVkdNYXRyaXg6OnNldEQoZG91YmxlIGQpCi17Ci0gICAgbV9t
YXQuc2V0TWF0cml4KG1fbWF0Lm0xMSgpLCBtX21hdC5tMTIoKSwgbV9tYXQubTIxKCksIGQsIG1f
bWF0LmR4KCksIG1fbWF0LmR5KCkpOwotfQotCi1kb3VibGUgU1ZHTWF0cml4OjpkKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9tYXQubTIyKCk7Ci19Ci0KLXZvaWQgU1ZHTWF0cml4OjpzZXRFKGRv
dWJsZSBlKQotewotICAgIG1fbWF0LnNldE1hdHJpeChtX21hdC5tMTEoKSwgbV9tYXQubTEyKCks
IG1fbWF0Lm0yMSgpLCBtX21hdC5tMjIoKSwgZSwgbV9tYXQuZHkoKSk7Ci19Ci0KLWRvdWJsZSBT
VkdNYXRyaXg6OmUoKSBjb25zdAotewotICAgIHJldHVybiBtX21hdC5keCgpOwotfQotCi12b2lk
IFNWR01hdHJpeDo6c2V0Rihkb3VibGUgZikKLXsKLSAgICBtX21hdC5zZXRNYXRyaXgobV9tYXQu
bTExKCksIG1fbWF0Lm0xMigpLCBtX21hdC5tMjEoKSwgbV9tYXQubTIyKCksIG1fbWF0LmR4KCks
IGYpOwotfQotCi1kb3VibGUgU1ZHTWF0cml4OjpmKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9t
YXQuZHkoKTsKLX0KLQotdm9pZCBTVkdNYXRyaXg6OmNvcHkoY29uc3QgU1ZHTWF0cml4KiBvdGhl
cikKLXsKLSAgICBtX21hdC5zZXRNYXRyaXgob3RoZXItPm1fbWF0Lm0xMSgpLCBvdGhlci0+bV9t
YXQubTEyKCksIG90aGVyLT5tX21hdC5tMjEoKSwgb3RoZXItPm1fbWF0Lm0yMigpLCBvdGhlci0+
bV9tYXQuZHgoKSwgb3RoZXItPm1fbWF0LmR5KCkpOwotfQotCi1TVkdNYXRyaXgqIFNWR01hdHJp
eDo6cG9zdE11bHRpcGx5KGNvbnN0IFNWR01hdHJpeCogc2Vjb25kTWF0cml4KQotewotICAgIEFm
ZmluZVRyYW5zZm9ybSB0ZW1wKHNlY29uZE1hdHJpeC0+YSgpLCBzZWNvbmRNYXRyaXgtPmIoKSwg
c2Vjb25kTWF0cml4LT5jKCksIHNlY29uZE1hdHJpeC0+ZCgpLCBzZWNvbmRNYXRyaXgtPmUoKSwg
c2Vjb25kTWF0cml4LT5mKCkpOwotICAgIG1fbWF0ICo9IHRlbXA7Ci0gICAgcmV0dXJuIHRoaXM7
Ci19Ci0KLVNWR01hdHJpeCogU1ZHTWF0cml4OjppbnZlcnNlKEV4Y2VwdGlvbkNvZGUmIGVjKQot
ewotICAgIGlmICghbV9tYXQuaXNJbnZlcnRpYmxlKCkpCi0gICAgICAgIGVjID0gU1ZHX01BVFJJ
WF9OT1RfSU5WRVJUQUJMRTsKLSAgICBtX21hdCA9IG1fbWF0LmludmVydCgpOwotICAgIHJldHVy
biB0aGlzOwotfQotCi1TVkdNYXRyaXgqIFNWR01hdHJpeDo6cG9zdFRyYW5zbGF0ZShkb3VibGUg
eCwgIGRvdWJsZSB5KQotewotICAgIC8vIENvdWxkIG9wdGltaXNlIHRoZXNlLgotICAgIEFmZmlu
ZVRyYW5zZm9ybSB0ZW1wOwotICAgIHRlbXAudHJhbnNsYXRlKHgsIHkpOwotICAgIG1fbWF0ICo9
IHRlbXA7Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0KLVNWR01hdHJpeCogU1ZHTWF0cml4Ojpwb3N0
U2NhbGUoZG91YmxlIHNjYWxlRmFjdG9yKQotewotICAgIEFmZmluZVRyYW5zZm9ybSB0ZW1wOwot
ICAgIHRlbXAuc2NhbGUoc2NhbGVGYWN0b3IsIHNjYWxlRmFjdG9yKTsKLSAgICBtX21hdCAqPSB0
ZW1wOwotICAgIHJldHVybiB0aGlzOwotfQotCi1TVkdNYXRyaXgqIFNWR01hdHJpeDo6cG9zdFNj
YWxlTm9uVW5pZm9ybShkb3VibGUgc2NhbGVGYWN0b3JYLCBkb3VibGUgc2NhbGVGYWN0b3JZKQot
ewotICAgIEFmZmluZVRyYW5zZm9ybSB0ZW1wOwotICAgIHRlbXAuc2NhbGUoc2NhbGVGYWN0b3JY
LCBzY2FsZUZhY3RvclkpOwotICAgIG1fbWF0ICo9IHRlbXA7Ci0gICAgcmV0dXJuIHRoaXM7Ci19
Ci0KLVNWR01hdHJpeCogU1ZHTWF0cml4Ojpwb3N0Um90YXRlKGRvdWJsZSBhbmdsZSkKLXsKLSAg
ICBBZmZpbmVUcmFuc2Zvcm0gdGVtcDsKLSAgICB0ZW1wLnJvdGF0ZShhbmdsZSk7Ci0gICAgbV9t
YXQgKj0gdGVtcDsKLSAgICByZXR1cm4gdGhpczsKLX0KLQotU1ZHTWF0cml4KiBTVkdNYXRyaXg6
OnBvc3RSb3RhdGVGcm9tVmVjdG9yKGRvdWJsZSB4LCBkb3VibGUgeSkKLXsKLSAgICBBZmZpbmVU
cmFuc2Zvcm0gdGVtcDsKLSAgICB0ZW1wLnJvdGF0ZShTVkdBbmdsZTo6dG9kZWcoYXRhbjIoeSwg
eCkpKTsKLSAgICBtX21hdCAqPSB0ZW1wOwotICAgIHJldHVybiB0aGlzOwotfQotCi1TVkdNYXRy
aXgqIFNWR01hdHJpeDo6cG9zdEZsaXBYKCkKLXsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gdGVtcCgt
MS4wRiwgMC4wRiwgMC4wRiwgMS4wRiwgMC4wRiwgMC4wRik7Ci0gICAgbV9tYXQgKj0gdGVtcDsK
LSAgICByZXR1cm4gdGhpczsKLX0KLQotU1ZHTWF0cml4KiBTVkdNYXRyaXg6OnBvc3RGbGlwWSgp
Ci17Ci0gICAgQWZmaW5lVHJhbnNmb3JtIHRlbXAoMS4wRiwgMC4wRiwgMC4wRiwgLTEuMEYsIDAu
MEYsIDAuMEYpOwotICAgIG1fbWF0ICo9IHRlbXA7Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0KLVNW
R01hdHJpeCogU1ZHTWF0cml4Ojpwb3N0U2tld1goZG91YmxlIGFuZ2xlKQotewotICAgIEFmZmlu
ZVRyYW5zZm9ybSB0ZW1wOwotICAgIHRlbXAuc2hlYXIodGFuKFNWR0FuZ2xlOjp0b3JhZChhbmds
ZSkpLCAwLjBGKTsKLSAgICBtX21hdCAqPSB0ZW1wOwotICAgIHJldHVybiB0aGlzOwotfQotCi1T
VkdNYXRyaXgqIFNWR01hdHJpeDo6cG9zdFNrZXdZKGRvdWJsZSBhbmdsZSkKLXsKLSAgICBBZmZp
bmVUcmFuc2Zvcm0gdGVtcDsKLSAgICB0ZW1wLnNoZWFyKDAuMEYsIHRhbihTVkdBbmdsZTo6dG9y
YWQoYW5nbGUpKSk7Ci0gICAgbV9tYXQgKj0gdGVtcDsKLSAgICByZXR1cm4gdGhpczsKLX0KLQot
U1ZHTWF0cml4KiBTVkdNYXRyaXg6Om11bHRpcGx5KGNvbnN0IFNWR01hdHJpeCogc2Vjb25kTWF0
cml4KQotewotICAgIEFmZmluZVRyYW5zZm9ybSB0ZW1wKHNlY29uZE1hdHJpeC0+YSgpLCBzZWNv
bmRNYXRyaXgtPmIoKSwgc2Vjb25kTWF0cml4LT5jKCksIHNlY29uZE1hdHJpeC0+ZCgpLCBzZWNv
bmRNYXRyaXgtPmUoKSwgc2Vjb25kTWF0cml4LT5mKCkpOwotICAgIHRlbXAgKj0gbV9tYXQ7Ci0g
ICAgbV9tYXQgPSB0ZW1wOwotICAgIHJldHVybiB0aGlzOwotfQotCi1TVkdNYXRyaXgqIFNWR01h
dHJpeDo6dHJhbnNsYXRlKGRvdWJsZSB4LCAgZG91YmxlIHkpCi17Ci0gICAgbV9tYXQudHJhbnNs
YXRlKHgsIHkpOwotICAgIHJldHVybiB0aGlzOwotfQotCi1TVkdNYXRyaXgqIFNWR01hdHJpeDo6
c2NhbGUoZG91YmxlIHNjYWxlRmFjdG9yKQotewotICAgIG1fbWF0LnNjYWxlKHNjYWxlRmFjdG9y
LCBzY2FsZUZhY3Rvcik7Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0KLVNWR01hdHJpeCogU1ZHTWF0
cml4OjpzY2FsZU5vblVuaWZvcm0oZG91YmxlIHNjYWxlRmFjdG9yWCwgZG91YmxlIHNjYWxlRmFj
dG9yWSkKLXsKLSAgICBtX21hdC5zY2FsZShzY2FsZUZhY3RvclgsIHNjYWxlRmFjdG9yWSk7Ci0g
ICAgcmV0dXJuIHRoaXM7Ci19Ci0KLVNWR01hdHJpeCogU1ZHTWF0cml4Ojpyb3RhdGUoZG91Ymxl
IGFuZ2xlKQotewotICAgIG1fbWF0LnJvdGF0ZShhbmdsZSk7Ci0gICAgcmV0dXJuIHRoaXM7Ci19
Ci0KLVNWR01hdHJpeCogU1ZHTWF0cml4Ojpyb3RhdGVGcm9tVmVjdG9yKGRvdWJsZSB4LCBkb3Vi
bGUgeSwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKHggPT0gMCB8fCB5ID09IDApIHsK
LSAgICAgICAgZWMgPSBTVkdfSU5WQUxJRF9WQUxVRV9FUlI7Ci0gICAgICAgIHJldHVybiB0aGlz
OwotICAgIH0KLSAgICBtX21hdC5yb3RhdGUoU1ZHQW5nbGU6OnRvZGVnKGF0YW4yKHksIHgpKSk7
Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0KLVNWR01hdHJpeCogU1ZHTWF0cml4OjpmbGlwWCgpCi17
Ci0gICAgbV9tYXQuc2NhbGUoLTEuMGYsIDEuMGYpOwotICAgIHJldHVybiB0aGlzOwotfQotCi1T
VkdNYXRyaXgqIFNWR01hdHJpeDo6ZmxpcFkoKQotewotICAgIG1fbWF0LnNjYWxlKDEuMGYsIC0x
LjBmKTsKLSAgICByZXR1cm4gdGhpczsKLX0KLQotU1ZHTWF0cml4KiBTVkdNYXRyaXg6OnNrZXdY
KGRvdWJsZSBhbmdsZSkKLXsKLSAgICBtX21hdC5zaGVhcih0YW4oU1ZHQW5nbGU6OnRvcmFkKGFu
Z2xlKSksIDAuMEYpOwotICAgIHJldHVybiB0aGlzOwotfQotCi1TVkdNYXRyaXgqIFNWR01hdHJp
eDo6c2tld1koZG91YmxlIGFuZ2xlKQotewotICAgIG1fbWF0LnNoZWFyKDAuMEYsIHRhbihTVkdB
bmdsZTo6dG9yYWQoYW5nbGUpKSk7Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0KLXZvaWQgU1ZHTWF0
cml4OjpzZXRNYXRyaXgoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBtYXQpCi17Ci0gICAgbV9tYXQg
PSBtYXQ7Ci19Ci0KLUFmZmluZVRyYW5zZm9ybSYgU1ZHTWF0cml4OjptYXRyaXgoKQotewotICAg
IHJldHVybiBtX21hdDsKLX0KLQotY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBTVkdNYXRyaXg6Om1h
dHJpeCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbWF0OwotfQotCi12b2lkIFNWR01hdHJpeDo6
cmVzZXQoKQotewotICAgIG1fbWF0LnJlc2V0KCk7Ci19Ci0KLXZvaWQgU1ZHTWF0cml4OjpyZW1v
dmVTY2FsZShkb3VibGUqIHhTY2FsZSwgZG91YmxlKiB5U2NhbGUpCi17Ci0gICAgZG91YmxlIHN4
ID0gc3FydChhKCkgKiBhKCkgKyBiKCkgKiBiKCkpOwotICAgIGRvdWJsZSBzeSA9IHNxcnQoYygp
ICogYygpICsgZCgpICogZCgpKTsKLQotICAgIC8vIFJlbW92ZSB0aGUgc2NhbGluZyBmcm9tIHRo
ZSBtYXRyaXguCi0gICAgc2V0QShhKCkgLyBzeCk7IHNldEIoYigpIC8gc3gpOwotICAgIHNldEMo
YygpIC8gc3kpOyBzZXREKGQoKSAvIHN5KTsKLQotICAgICp4U2NhbGUgPSBzeDsKLSAgICAqeVNj
YWxlID0gc3k7Ci19Ci0KLS8vIHZpbTp0cz00Om5vZXQKLSNlbmRpZiAvLyBTVkdfU1VQUE9SVAot
CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXRyaXguaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdNYXRyaXguaAkocmV2aXNpb24gMTgxNzYpCisrKyBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdNYXRyaXguaAkod29ya2luZyBjb3B5KQpAQCAtMSwxMDcgKzAsMCBAQAotLyoK
LSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94
QGtkZS5vcmc+Ci0gICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtk
ZS5vcmc+Ci0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKLQotICAg
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwot
ICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAt
IFN1aXRlIDMzMCwKLSAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSovCi0KLSNpZm5k
ZWYgS1NWR19TVkdNYXRyaXhJbXBsX0gKLSNkZWZpbmUgS1NWR19TVkdNYXRyaXhJbXBsX0gKLSNp
ZmRlZiBTVkdfU1VQUE9SVAotCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCi0jaW5jbHVk
ZSAiU2hhcmVkLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotICAgIHR5cGVkZWYgaW50IEV4
Y2VwdGlvbkNvZGU7Ci0KLSAgICBjbGFzcyBTVkdNYXRyaXggOiBwdWJsaWMgU2hhcmVkPFNWR01h
dHJpeD4geyAKLSAgICBwdWJsaWM6Ci0gICAgICAgIFNWR01hdHJpeCgpOwotICAgICAgICBTVkdN
YXRyaXgoZG91YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUgYywgZG91YmxlIGQsIGRvdWJsZSBlLCBk
b3VibGUgZik7Ci0gICAgICAgIFNWR01hdHJpeChjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIG1hdCk7
Ci0gICAgICAgIHZpcnR1YWwgflNWR01hdHJpeCgpOwotCi0gICAgICAgIHZvaWQgc2V0QShkb3Vi
bGUpOwotICAgICAgICBkb3VibGUgYSgpIGNvbnN0OwotCi0gICAgICAgIHZvaWQgc2V0Qihkb3Vi
bGUpOwotICAgICAgICBkb3VibGUgYigpIGNvbnN0OwotCi0gICAgICAgIHZvaWQgc2V0Qyhkb3Vi
bGUpOwotICAgICAgICBkb3VibGUgYygpIGNvbnN0OwotCi0gICAgICAgIHZvaWQgc2V0RChkb3Vi
bGUpOwotICAgICAgICBkb3VibGUgZCgpIGNvbnN0OwotCi0gICAgICAgIHZvaWQgc2V0RShkb3Vi
bGUpOwotICAgICAgICBkb3VibGUgZSgpIGNvbnN0OwotCi0gICAgICAgIHZvaWQgc2V0Rihkb3Vi
bGUpOwotICAgICAgICBkb3VibGUgZigpIGNvbnN0OwotCi0gICAgICAgIHZvaWQgY29weShjb25z
dCBTVkdNYXRyaXgqKTsKLQotICAgICAgICBTVkdNYXRyaXgqIGludmVyc2UoRXhjZXB0aW9uQ29k
ZSYpOwotCi0gICAgICAgIC8vIFByZS1tdWx0aXBsaWVkIG9wZXJhdGlvbnMsIGFzIHBlciB0aGUg
c3BlY3MuCi0gICAgICAgIFNWR01hdHJpeCogbXVsdGlwbHkoY29uc3QgU1ZHTWF0cml4Kik7Ci0g
ICAgICAgIFNWR01hdHJpeCogdHJhbnNsYXRlKGRvdWJsZSB4LCBkb3VibGUgeSk7Ci0gICAgICAg
IFNWR01hdHJpeCogc2NhbGUoZG91YmxlIHNjYWxlRmFjdG9yKTsKLSAgICAgICAgU1ZHTWF0cml4
KiBzY2FsZU5vblVuaWZvcm0oZG91YmxlIHNjYWxlRmFjdG9yWCwgZG91YmxlIHNjYWxlRmFjdG9y
WSk7Ci0gICAgICAgIFNWR01hdHJpeCogcm90YXRlKGRvdWJsZSBhbmdsZSk7Ci0gICAgICAgIFNW
R01hdHJpeCogcm90YXRlRnJvbVZlY3Rvcihkb3VibGUgeCwgZG91YmxlIHksIEV4Y2VwdGlvbkNv
ZGUmKTsKLSAgICAgICAgU1ZHTWF0cml4KiBmbGlwWCgpOwotICAgICAgICBTVkdNYXRyaXgqIGZs
aXBZKCk7Ci0gICAgICAgIFNWR01hdHJpeCogc2tld1goZG91YmxlIGFuZ2xlKTsKLSAgICAgICAg
U1ZHTWF0cml4KiBza2V3WShkb3VibGUgYW5nbGUpOwotCi0gICAgICAgIC8vIFBvc3QtbXVsdGlw
bGllZCBvcGVyYXRpb25zCi0gICAgICAgIFNWR01hdHJpeCogcG9zdE11bHRpcGx5KGNvbnN0IFNW
R01hdHJpeCopOwotICAgICAgICBTVkdNYXRyaXgqIHBvc3RUcmFuc2xhdGUoZG91YmxlIHgsIGRv
dWJsZSB5KTsKLSAgICAgICAgU1ZHTWF0cml4KiBwb3N0U2NhbGUoZG91YmxlIHNjYWxlRmFjdG9y
KTsKLSAgICAgICAgU1ZHTWF0cml4KiBwb3N0U2NhbGVOb25Vbmlmb3JtKGRvdWJsZSBzY2FsZUZh
Y3RvclgsIGRvdWJsZSBzY2FsZUZhY3RvclkpOwotICAgICAgICBTVkdNYXRyaXgqIHBvc3RSb3Rh
dGUoZG91YmxlIGFuZ2xlKTsKLSAgICAgICAgU1ZHTWF0cml4KiBwb3N0Um90YXRlRnJvbVZlY3Rv
cihkb3VibGUgeCwgZG91YmxlIHkpOwotICAgICAgICBTVkdNYXRyaXgqIHBvc3RGbGlwWCgpOwot
ICAgICAgICBTVkdNYXRyaXgqIHBvc3RGbGlwWSgpOwotICAgICAgICBTVkdNYXRyaXgqIHBvc3RT
a2V3WChkb3VibGUgYW5nbGUpOwotICAgICAgICBTVkdNYXRyaXgqIHBvc3RTa2V3WShkb3VibGUg
YW5nbGUpOwotCi0gICAgICAgIHZvaWQgcmVzZXQoKTsKLQotICAgICAgICAvLyBLU1ZHIGhlbHBl
ciBtZXRob2QKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtJiBtYXRyaXgoKTsKLSAgICAgICAgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBtYXRyaXgoKSBjb25zdDsKLQotICAgICAgICAvLyBEZXRlcm1p
bmUgdGhlIHNjYWxpbmcgY29tcG9uZW50IG9mIHRoZSBtYXRyaXggYW5kIGZhY3RvciBpdCBvdXQu
IEFmdGVyCi0gICAgICAgIC8vIHRoaXMgb3BlcmF0aW9uLCB0aGUgbWF0cml4IGhhcyB4IGFuZCB5
IHNjYWxlIG9mIG9uZS4KLSAgICAgICAgdm9pZCByZW1vdmVTY2FsZShkb3VibGUqIHhTY2FsZSwg
ZG91YmxlKiB5U2NhbGUpOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBzZXRNYXRyaXgo
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJik7Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSBtX21hdDsK
LSAgICB9OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBTVkdfU1VQUE9S
VAotI2VuZGlmIC8vIEtTVkdfU1ZHTWF0cml4SW1wbF9ICi0KLS8vIHZpbTp0cz00Om5vZXQKSW5k
ZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hdHJpeC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHTWF0cml4LmlkbAkocmV2aXNpb24gMTgxNzYpCisrKyBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdNYXRyaXguaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAK
IG1vZHVsZSBzdmcgewogCi0gICAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD1TVkddIFNWR01hdHJp
eCB7IAorICAgIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9U1ZHLCBQT0RUeXBlPUFmZmluZVRyYW5z
Zm9ybV0gU1ZHTWF0cml4IHsgCiAgICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBhOwogICAgICAgICBh
dHRyaWJ1dGUgZmxvYXQgYjsKICAgICAgICAgYXR0cmlidXRlIGZsb2F0IGM7CkBAIC0zMywxMyAr
MzMsMTMgQEAgbW9kdWxlIHN2ZyB7CiAgICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBmOwogCiAgICAg
ICAgIFNWR01hdHJpeCBtdWx0aXBseShpbiBTVkdNYXRyaXggc2Vjb25kTWF0cml4KTsKLSAgICAg
ICAgU1ZHTWF0cml4IGludmVyc2UoKQorICAgICAgICBbQ3VzdG9tXSBTVkdNYXRyaXggaW52ZXJz
ZSgpCiAgICAgICAgICAgICByYWlzZXMoU1ZHRXhjZXB0aW9uKTsKICAgICAgICAgU1ZHTWF0cml4
IHRyYW5zbGF0ZShpbiBmbG9hdCB4LCBpbiBmbG9hdCB5KTsKICAgICAgICAgU1ZHTWF0cml4IHNj
YWxlKGluIGZsb2F0IHNjYWxlRmFjdG9yKTsKICAgICAgICAgU1ZHTWF0cml4IHNjYWxlTm9uVW5p
Zm9ybShpbiBmbG9hdCBzY2FsZUZhY3RvclgsIGluIGZsb2F0IHNjYWxlRmFjdG9yWSk7CiAgICAg
ICAgIFNWR01hdHJpeCByb3RhdGUoaW4gZmxvYXQgYW5nbGUpOwotICAgICAgICBTVkdNYXRyaXgg
cm90YXRlRnJvbVZlY3RvcihpbiBmbG9hdCB4LCBpbiBmbG9hdCB5KQorICAgICAgICBbQ3VzdG9t
XSBTVkdNYXRyaXggcm90YXRlRnJvbVZlY3RvcihpbiBmbG9hdCB4LCBpbiBmbG9hdCB5KQogICAg
ICAgICAgICAgcmFpc2VzKFNWR0V4Y2VwdGlvbik7CiAgICAgICAgIFNWR01hdHJpeCBmbGlwWCgp
OwogICAgICAgICBTVkdNYXRyaXggZmxpcFkoKTsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R051bWJlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTnVtYmVyLmlk
bAkocmV2aXNpb24gMTgxNzYpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdOdW1iZXIuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAKIG1vZHVsZSBzdmcgewogCi0gICAgaW50
ZXJmYWNlIFtDb25kaXRpb25hbD1TVkcsIFBPRFR5cGU9ZmxvYXRdIFNWR051bWJlciB7CisgICAg
aW50ZXJmYWNlIFtDb25kaXRpb25hbD1TVkcsIFBPRFR5cGU9ZG91YmxlXSBTVkdOdW1iZXIgewog
ICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgZmxvYXQgdmFsdWUKICAgICAgICAgICAgICAgICAg
ICAgIHNldHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICB9OwpJbmRleDogV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHTnVtYmVyTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHTnVtYmVyTGlzdC5jcHAJKHJldmlzaW9uIDE4MTc2KQorKysgV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHTnVtYmVyTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDYgQEAKICNp
ZmRlZiBTVkdfU1VQUE9SVAogI2luY2x1ZGUgIlNWR051bWJlckxpc3QuaCIKIAotI2luY2x1ZGUg
IlNWR01hdHJpeC5oIgogI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAkocmV2
aXNpb24gMTgxNzYpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJSZW5kZXJTVkdDb250
YWluZXIuaCIKICNpbmNsdWRlICJTVkdIZWxwZXIuaCIKICNpbmNsdWRlICJTVkdMZW5ndGguaCIK
LSNpbmNsdWRlICJTVkdNYXRyaXguaCIKKyNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNp
bmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKICNpbmNsdWRl
ICJTVkdUcmFuc2Zvcm1MaXN0LmgiCkBAIC0yOTcsNyArMjk3LDcgQEAgdm9pZCBTVkdQYXR0ZXJu
RWxlbWVudDo6bm90aWZ5QXR0cmlidXRlQwogCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5U
cmFuc2Zvcm1NYXRyaXg7CiAgICAgaWYgKHBhdHRlcm5UcmFuc2Zvcm0oKS0+bnVtYmVyT2ZJdGVt
cygpID4gMCkKLSAgICAgICAgcGF0dGVyblRyYW5zZm9ybU1hdHJpeCA9IHBhdHRlcm5UcmFuc2Zv
cm0oKS0+Y29uc29saWRhdGUoKS0+bWF0cml4KCktPm1hdHJpeCgpOworICAgICAgICBwYXR0ZXJu
VHJhbnNmb3JtTWF0cml4ID0gcGF0dGVyblRyYW5zZm9ybSgpLT5jb25zb2xpZGF0ZSgpLT5tYXRy
aXgoKTsKIAogCiAgICAgU1ZHUGF0dGVybkVsZW1lbnQqIG5vbkNvbnN0VGhpcyA9IGNvbnN0X2Nh
c3Q8U1ZHUGF0dGVybkVsZW1lbnQqPih0aGlzKTsKQEAgLTMyOCwxNCArMzI4LDExIEBAIFNWR1Jl
c291cmNlKiBTVkdQYXR0ZXJuRWxlbWVudDo6Y2FudmFzUmUKICAgICByZXR1cm4gbV9wYWludFNl
cnZlci5nZXQoKTsKIH0KIAotU1ZHTWF0cml4KiBTVkdQYXR0ZXJuRWxlbWVudDo6Z2V0Q1RNKCkg
Y29uc3QKK0FmZmluZVRyYW5zZm9ybSBTVkdQYXR0ZXJuRWxlbWVudDo6Z2V0Q1RNKCkgY29uc3QK
IHsKLSAgICBTVkdNYXRyaXgqIG1hdCA9IFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR01hdHJpeCgp
OwotICAgIGlmIChtYXQpIHsKLSAgICAgICAgUmVmUHRyPFNWR01hdHJpeD4gdmlld0JveCA9IHZp
ZXdCb3hUb1ZpZXdUcmFuc2Zvcm0od2lkdGgoKS0+dmFsdWUoKSwgaGVpZ2h0KCktPnZhbHVlKCkp
OwotICAgICAgICBtYXQtPm11bHRpcGx5KHZpZXdCb3guZ2V0KCkpOwotICAgIH0KLQorICAgIEFm
ZmluZVRyYW5zZm9ybSBtYXQ7CisgICAgQWZmaW5lVHJhbnNmb3JtIHZpZXdCb3ggPSB2aWV3Qm94
VG9WaWV3VHJhbnNmb3JtKHdpZHRoKCktPnZhbHVlKCksIGhlaWdodCgpLT52YWx1ZSgpKTsKKyAg
ICBtYXQgKj0gdmlld0JveDsKICAgICByZXR1cm4gbWF0OwogfQogCkluZGV4OiBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgJKHJldmlzaW9uIDE4MTc2KQorKysgV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIFNWR1Jlc291cmNlKiBjYW52YXNS
ZXNvdXJjZSgpOwogCiAgICAgICAgIC8vICd2aXJ0dWFsIFNWR0xvY2F0YWJsZScgZnVuY3Rpb25z
Ci0gICAgICAgIHZpcnR1YWwgU1ZHTWF0cml4KiBnZXRDVE0oKSBjb25zdDsKKyAgICAgICAgdmly
dHVhbCBBZmZpbmVUcmFuc2Zvcm0gZ2V0Q1RNKCkgY29uc3Q7CiAKICAgICBwcm90ZWN0ZWQ6CiAg
ICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR1VSSVJlZmVy
ZW5jZSwgU3RyaW5nLCBIcmVmLCBocmVmKQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUG9p
bnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BvaW50LmlkbAkocmV2
aXNpb24gMTgxNzYpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQb2ludC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDggKzMwLDcgQEAgbW9kdWxlIHN2ZyB7CiAgICAgICAgICAgICAgICAgIGF0
dHJpYnV0ZSBmbG9hdCB5CiAgICAgICAgICAgICAgICAgICAgICBzZXR0ZXIgcmFpc2VzKERPTUV4
Y2VwdGlvbik7CiAKLSAgICAgICAgLy8gRklYTUUgLSBSZWVuYWJsZSB0aGlzIG9uY2UgU1ZHTWF0
cml4IGlzIGNvbnZlcnRlZCB0byBBZmZpbmVUcmFuc2Zvcm0KLSAgICAgICAgLy9TVkdQb2ludCBt
YXRyaXhUcmFuc2Zvcm0oaW4gU1ZHTWF0cml4IG1hdHJpeCk7CisgICAgICAgIFNWR1BvaW50IG1h
dHJpeFRyYW5zZm9ybShpbiBTVkdNYXRyaXggbWF0cml4KTsKICAgICB9OwogCiB9CkluZGV4OiBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcAkocmV2aXNpb24g
MTgxNzYpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNiBAQAogI2lmZGVmIFNWR19TVVBQT1JUCiAjaW5j
bHVkZSAiU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oIgogCi0jaW5jbHVkZSAiU1ZHTWF0cml4Lmgi
CiAjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0x
MDEsMTIgKzEwMCwxMiBAQCB2b2lkIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OnBhcnNlUHJlc2Vy
CiAgICAgICAgIG1fY29udGV4dC0+bm90aWZ5QXR0cmlidXRlQ2hhbmdlKCk7CiB9CiAKLVNWR01h
dHJpeCogU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6Z2V0Q1RNKGZsb2F0IGxvZ2ljWCwgZmxvYXQg
bG9naWNZLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQg
bG9naWNXaWR0aCwgZmxvYXQgbG9naWNIZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbG9hdCAvKnBoeXNYKi8sIGZsb2F0IC8qcGh5c1kqLywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHBoeXNXaWR0aCwgZmxv
YXQgcGh5c0hlaWdodCkKK0FmZmluZVRyYW5zZm9ybSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpn
ZXRDVE0oZmxvYXQgbG9naWNYLCBmbG9hdCBsb2dpY1ksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGxvZ2ljV2lkdGgsIGZsb2F0IGxvZ2ljSGVp
Z2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9h
dCAvKnBoeXNYKi8sIGZsb2F0IC8qcGh5c1kqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxvYXQgcGh5c1dpZHRoLCBmbG9hdCBwaHlzSGVpZ2h0KQog
ewotICAgIFNWR01hdHJpeCogdGVtcCA9IFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR01hdHJpeCgp
OworICAgIEFmZmluZVRyYW5zZm9ybSB0ZW1wOwogCiAgICAgaWYgKGFsaWduKCkgPT0gU1ZHX1BS
RVNFUlZFQVNQRUNUUkFUSU9fVU5LTk9XTikKICAgICAgICAgcmV0dXJuIHRlbXA7CkBAIC0xMTUs
MjYgKzExNCwyNiBAQCBTVkdNYXRyaXgqIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OmdldENUCiAg
ICAgZmxvYXQgc3ZnYXIgPSBwaHlzV2lkdGggLyBwaHlzSGVpZ2h0OwogCiAgICAgaWYgKGFsaWdu
KCkgPT0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fTk9ORSkgewotICAgICAgICB0ZW1wLT5zY2Fs
ZU5vblVuaWZvcm0ocGh5c1dpZHRoIC8gbG9naWNXaWR0aCwgcGh5c0hlaWdodCAvIGxvZ2ljSGVp
Z2h0KTsKLSAgICAgICAgdGVtcC0+dHJhbnNsYXRlKC1sb2dpY1gsIC1sb2dpY1kpOworICAgICAg
ICB0ZW1wLnNjYWxlKHBoeXNXaWR0aCAvIGxvZ2ljV2lkdGgsIHBoeXNIZWlnaHQgLyBsb2dpY0hl
aWdodCk7CisgICAgICAgIHRlbXAudHJhbnNsYXRlKC1sb2dpY1gsIC1sb2dpY1kpOwogICAgIH0g
ZWxzZSBpZiAodnBhciA8IHN2Z2FyICYmIChtZWV0T3JTbGljZSgpID09IFNWR19NRUVUT1JTTElD
RV9NRUVUKSB8fCB2cGFyID49IHN2Z2FyICYmIChtZWV0T3JTbGljZSgpID09IFNWR19NRUVUT1JT
TElDRV9TTElDRSkpIHsKLSAgICAgICAgdGVtcC0+c2NhbGUocGh5c0hlaWdodCAvIGxvZ2ljSGVp
Z2h0KTsKKyAgICAgICAgdGVtcC5zY2FsZShwaHlzSGVpZ2h0IC8gbG9naWNIZWlnaHQsIHBoeXNI
ZWlnaHQgLyBsb2dpY0hlaWdodCk7CiAKICAgICAgICAgaWYgKGFsaWduKCkgPT0gU1ZHX1BSRVNF
UlZFQVNQRUNUUkFUSU9fWE1JTllNSU4gfHwgYWxpZ24oKSA9PSBTVkdfUFJFU0VSVkVBU1BFQ1RS
QVRJT19YTUlOWU1JRCB8fCBhbGlnbigpID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5Z
TUFYKQotICAgICAgICAgICAgdGVtcC0+dHJhbnNsYXRlKC1sb2dpY1gsIC1sb2dpY1kpOworICAg
ICAgICAgICAgdGVtcC50cmFuc2xhdGUoLWxvZ2ljWCwgLWxvZ2ljWSk7CiAgICAgICAgIGVsc2Ug
aWYgKGFsaWduKCkgPT0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNSU4gfHwgYWxpZ24o
KSA9PSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JRCB8fCBhbGlnbigpID09IFNWR19Q
UkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUFYKQotICAgICAgICAgICAgdGVtcC0+dHJhbnNsYXRl
KC1sb2dpY1ggLSAobG9naWNXaWR0aCAtIHBoeXNXaWR0aCAqIGxvZ2ljSGVpZ2h0IC8gcGh5c0hl
aWdodCkgLyAyLCAtbG9naWNZKTsKKyAgICAgICAgICAgIHRlbXAudHJhbnNsYXRlKC1sb2dpY1gg
LSAobG9naWNXaWR0aCAtIHBoeXNXaWR0aCAqIGxvZ2ljSGVpZ2h0IC8gcGh5c0hlaWdodCkgLyAy
LCAtbG9naWNZKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdGVtcC0+dHJhbnNsYXRlKC1s
b2dpY1ggLSAobG9naWNXaWR0aCAtIHBoeXNXaWR0aCAqIGxvZ2ljSGVpZ2h0IC8gcGh5c0hlaWdo
dCksIC1sb2dpY1kpOworICAgICAgICAgICAgdGVtcC50cmFuc2xhdGUoLWxvZ2ljWCAtIChsb2dp
Y1dpZHRoIC0gcGh5c1dpZHRoICogbG9naWNIZWlnaHQgLyBwaHlzSGVpZ2h0KSwgLWxvZ2ljWSk7
CiAgICAgfSBlbHNlIHsKLSAgICAgICAgdGVtcC0+c2NhbGUocGh5c1dpZHRoIC8gbG9naWNXaWR0
aCk7CisgICAgICAgIHRlbXAuc2NhbGUocGh5c1dpZHRoIC8gbG9naWNXaWR0aCwgcGh5c1dpZHRo
IC8gbG9naWNXaWR0aCk7CiAKICAgICAgICAgaWYgKGFsaWduKCkgPT0gU1ZHX1BSRVNFUlZFQVNQ
RUNUUkFUSU9fWE1JTllNSU4gfHwgYWxpZ24oKSA9PSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19Y
TUlEWU1JTiB8fCBhbGlnbigpID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUlOKQot
ICAgICAgICAgICAgdGVtcC0+dHJhbnNsYXRlKC1sb2dpY1gsIC1sb2dpY1kpOworICAgICAgICAg
ICAgdGVtcC50cmFuc2xhdGUoLWxvZ2ljWCwgLWxvZ2ljWSk7CiAgICAgICAgIGVsc2UgaWYgKGFs
aWduKCkgPT0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNSUQgfHwgYWxpZ24oKSA9PSBT
VkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JRCB8fCBhbGlnbigpID09IFNWR19QUkVTRVJW
RUFTUEVDVFJBVElPX1hNQVhZTUlEKQotICAgICAgICAgICAgdGVtcC0+dHJhbnNsYXRlKC1sb2dp
Y1gsIC1sb2dpY1kgLSAobG9naWNIZWlnaHQgLSBwaHlzSGVpZ2h0ICogbG9naWNXaWR0aCAvIHBo
eXNXaWR0aCkgLyAyKTsKKyAgICAgICAgICAgIHRlbXAudHJhbnNsYXRlKC1sb2dpY1gsIC1sb2dp
Y1kgLSAobG9naWNIZWlnaHQgLSBwaHlzSGVpZ2h0ICogbG9naWNXaWR0aCAvIHBoeXNXaWR0aCkg
LyAyKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdGVtcC0+dHJhbnNsYXRlKC1sb2dpY1gs
IC1sb2dpY1kgLSAobG9naWNIZWlnaHQgLSBwaHlzSGVpZ2h0ICogbG9naWNXaWR0aCAvIHBoeXNX
aWR0aCkpOworICAgICAgICAgICAgdGVtcC50cmFuc2xhdGUoLWxvZ2ljWCwgLWxvZ2ljWSAtIChs
b2dpY0hlaWdodCAtIHBoeXNIZWlnaHQgKiBsb2dpY1dpZHRoIC8gcGh5c1dpZHRoKSk7CiAgICAg
fQogCiAgICAgcmV0dXJuIHRlbXA7CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUHJlc2Vy
dmVBc3BlY3RSYXRpby5oCShyZXZpc2lvbiAxODE3NikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R1ByZXNlcnZlQXNwZWN0UmF0aW8uaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgU3RyaW5nOwotICAgIGNsYXNzIFNWR01h
dHJpeDsKKyAgICBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiAgICAgY2xhc3MgU1ZHU3R5bGVkRWxl
bWVudDsKIAogICAgIGNsYXNzIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8gOiBwdWJsaWMgU2hhcmVk
PFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8+IHsgCkBAIC02NCwxMCArNjQsMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldE1lZXRPclNsaWNlKHVuc2lnbmVkIHNob3J0KTsK
ICAgICAgICAgdW5zaWduZWQgc2hvcnQgbWVldE9yU2xpY2UoKSBjb25zdDsKICAgICAgICAgCi0g
ICAgICAgIFNWR01hdHJpeCogZ2V0Q1RNKGZsb2F0IGxvZ2ljWCwgZmxvYXQgbG9naWNZLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBsb2dpY1dpZHRoLCBmbG9hdCBsb2dpY0hlaWdo
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgcGh5c1gsIGZsb2F0IHBoeXNZLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBwaHlzV2lkdGgsIGZsb2F0IHBoeXNIZWln
aHQpOworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gZ2V0Q1RNKGZsb2F0IGxvZ2ljWCwgZmxvYXQg
bG9naWNZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGxvZ2ljV2lkdGgs
IGZsb2F0IGxvZ2ljSGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0
IHBoeXNYLCBmbG9hdCBwaHlzWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9h
dCBwaHlzV2lkdGgsIGZsb2F0IHBoeXNIZWlnaHQpOwogCiAgICAgICAgIC8vIEhlbHBlcgogICAg
ICAgICB2b2lkIHBhcnNlUHJlc2VydmVBc3BlY3RSYXRpbyhjb25zdCBTdHJpbmcmKTsKSW5kZXg6
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAkocmV2
aXNpb24gMTgxNzYpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiU1ZHUGFp
bnRTZXJ2ZXJSYWRpYWxHcmFkaWVudC5oIgogI2luY2x1ZGUgIlNWR0hlbHBlci5oIgogI2luY2x1
ZGUgIlNWR0xlbmd0aC5oIgotI2luY2x1ZGUgIlNWR01hdHJpeC5oIgogI2luY2x1ZGUgIlNWR05h
bWVzLmgiCiAjaW5jbHVkZSAiU1ZHU3RvcEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zv
cm0uaCIKQEAgLTk3LDcgKzk2LDcgQEAgdm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmJ1
aWxkR3JhZAogICAgIFJlZlB0cjxTVkdQYWludFNlcnZlclJhZGlhbEdyYWRpZW50PiBncmFkID0g
V1RGOjpzdGF0aWNfcG9pbnRlcl9jYXN0PFNWR1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnQ+KF9n
cmFkKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gbWF0OwogICAgIGlmIChncmFkaWVudFRyYW5zZm9y
bSgpLT5udW1iZXJPZkl0ZW1zKCkgPiAwKQotICAgICAgICBtYXQgPSBncmFkaWVudFRyYW5zZm9y
bSgpLT5jb25zb2xpZGF0ZSgpLT5tYXRyaXgoKS0+bWF0cml4KCk7CisgICAgICAgIG1hdCA9IGdy
YWRpZW50VHJhbnNmb3JtKCktPmNvbnNvbGlkYXRlKCktPm1hdHJpeCgpOwogCiAgICAgRGVwcmVj
YXRlZFN0cmluZyByZWYgPSBocmVmKCkuZGVwcmVjYXRlZFN0cmluZygpOwogICAgIFJlZlB0cjxT
VkdQYWludFNlcnZlcj4gcHNlcnZlciA9IGdldFBhaW50U2VydmVyQnlJZChkb2N1bWVudCgpLCBy
ZWYubWlkKDEpKTsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCShyZXZpc2lv
biAxODE3NikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiUmVuZGVyU1ZHQ29udGFpbmVyLmgi
CiAjaW5jbHVkZSAiU1ZHQW5nbGUuaCIKICNpbmNsdWRlICJTVkdMZW5ndGguaCIKLSNpbmNsdWRl
ICJTVkdNYXRyaXguaCIKKyNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJT
VkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaCIKICNpbmNsdWRl
ICJTVkdUcmFuc2Zvcm0uaCIKQEAgLTEwOCw5ICsxMDgsOSBAQCBGbG9hdFJlY3QgU1ZHU1ZHRWxl
bWVudDo6dmlld3BvcnQoKSBjb25zCiAgICAgZG91YmxlIF95ID0geSgpLT52YWx1ZSgpOwogICAg
IGRvdWJsZSB3ID0gd2lkdGgoKS0+dmFsdWUoKTsKICAgICBkb3VibGUgaCA9IGhlaWdodCgpLT52
YWx1ZSgpOwotICAgIFJlZlB0cjxTVkdNYXRyaXg+IHZpZXdCb3ggPSB2aWV3Qm94VG9WaWV3VHJh
bnNmb3JtKHcsIGgpOwotICAgIHZpZXdCb3gtPm1hdHJpeCgpLm1hcChfeCwgX3ksICZfeCwgJl95
KTsKLSAgICB2aWV3Qm94LT5tYXRyaXgoKS5tYXAodywgaCwgJncsICZoKTsKKyAgICBBZmZpbmVU
cmFuc2Zvcm0gdmlld0JveCA9IHZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0odywgaCk7CisgICAgdmll
d0JveC5tYXAoX3gsIF95LCAmX3gsICZfeSk7CisgICAgdmlld0JveC5tYXAodywgaCwgJncsICZo
KTsKICAgICByZXR1cm4gRmxvYXRSZWN0KF94LCBfeSwgdywgaCk7CiB9CiAKQEAgLTI3MSw5ICsy
NzEsOSBAQCB2b2lkIFNWR1NWR0VsZW1lbnQ6OmRlc2VsZWN0QWxsKCkKICAgICAvLyBGSVhNRTog
SW1wbGVtZW50IG1lIChzZWUgYnVnIDExMjc1KQogfQogCi1mbG9hdCBTVkdTVkdFbGVtZW50Ojpj
cmVhdGVTVkdOdW1iZXIoKQorZG91YmxlIFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR051bWJlcigp
CiB7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIDAuMDsKIH0KIAogU1ZHTGVuZ3RoKiBTVkdT
VkdFbGVtZW50OjpjcmVhdGVTVkdMZW5ndGgoKQpAQCAtMjkxLDkgKzI5MSw5IEBAIEZsb2F0UG9p
bnQgU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHUG9pbnQKICAgICByZXR1cm4gRmxvYXRQb2ludCgp
OwogfQogCi1TVkdNYXRyaXgqIFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR01hdHJpeCgpCitBZmZp
bmVUcmFuc2Zvcm0gU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHTWF0cml4KCkKIHsKLSAgICByZXR1
cm4gbmV3IFNWR01hdHJpeCgpOworICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsKIH0KIAog
RmxvYXRSZWN0IFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR1JlY3QoKQpAQCAtMzA2LDM4ICszMDYs
MzQgQEAgU1ZHVHJhbnNmb3JtKiBTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdUcgogICAgIHJldHVy
biBuZXcgU1ZHVHJhbnNmb3JtKCk7CiB9CiAKLVNWR1RyYW5zZm9ybSogU1ZHU1ZHRWxlbWVudDo6
Y3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChTVkdNYXRyaXgqIG1hdHJpeCkKK1NWR1RyYW5z
Zm9ybSogU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIG1hdHJpeCkKIHsgICAgCiAgICAgU1ZHVHJhbnNmb3JtKiBvYmogPSBT
VkdTVkdFbGVtZW50OjpjcmVhdGVTVkdUcmFuc2Zvcm0oKTsKICAgICBvYmotPnNldE1hdHJpeCht
YXRyaXgpOwogICAgIHJldHVybiBvYmo7CiB9CiAKLVNWR01hdHJpeCogU1ZHU1ZHRWxlbWVudDo6
Z2V0Q1RNKCkgY29uc3QKK0FmZmluZVRyYW5zZm9ybSBTVkdTVkdFbGVtZW50OjpnZXRDVE0oKSBj
b25zdAogewotICAgIFNWR01hdHJpeCogbWF0ID0gY3JlYXRlU1ZHTWF0cml4KCk7Ci0gICAgaWYg
KG1hdCkgewotICAgICAgICBtYXQtPnRyYW5zbGF0ZSh4KCktPnZhbHVlKCksIHkoKS0+dmFsdWUo
KSk7Ci0KLSAgICAgICAgaWYgKGF0dHJpYnV0ZXMoKS0+Z2V0TmFtZWRJdGVtKFNWR05hbWVzOjp2
aWV3Qm94QXR0cikpIHsKLSAgICAgICAgICAgIFJlZlB0cjxTVkdNYXRyaXg+IHZpZXdCb3ggPSB2
aWV3Qm94VG9WaWV3VHJhbnNmb3JtKHdpZHRoKCktPnZhbHVlKCksIGhlaWdodCgpLT52YWx1ZSgp
KTsKLSAgICAgICAgICAgIG1hdC0+bXVsdGlwbHkodmlld0JveC5nZXQoKSk7Ci0gICAgICAgIH0K
KyAgICBBZmZpbmVUcmFuc2Zvcm0gbWF0OworICAgIG1hdC50cmFuc2xhdGUoeCgpLT52YWx1ZSgp
LCB5KCktPnZhbHVlKCkpOworCisgICAgaWYgKGF0dHJpYnV0ZXMoKS0+Z2V0TmFtZWRJdGVtKFNW
R05hbWVzOjp2aWV3Qm94QXR0cikpIHsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHZpZXdCb3gg
PSB2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKHdpZHRoKCktPnZhbHVlKCksIGhlaWdodCgpLT52YWx1
ZSgpKTsKKyAgICAgICAgbWF0ID0gdmlld0JveCAqIG1hdDsKICAgICB9CiAKICAgICByZXR1cm4g
bWF0OwogfQogCi1TVkdNYXRyaXgqIFNWR1NWR0VsZW1lbnQ6OmdldFNjcmVlbkNUTSgpIGNvbnN0
CitBZmZpbmVUcmFuc2Zvcm0gU1ZHU1ZHRWxlbWVudDo6Z2V0U2NyZWVuQ1RNKCkgY29uc3QKIHsK
LSAgICBTVkdNYXRyaXgqIG1hdCA9IFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQ6OmdldFNjcmVl
bkNUTSgpOwotICAgIGlmIChtYXQpIHsKLSAgICAgICAgbWF0LT50cmFuc2xhdGUoeCgpLT52YWx1
ZSgpLCB5KCktPnZhbHVlKCkpOwotCi0gICAgICAgIGlmIChhdHRyaWJ1dGVzKCktPmdldE5hbWVk
SXRlbShTVkdOYW1lczo6dmlld0JveEF0dHIpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8U1ZHTWF0
cml4PiB2aWV3Qm94ID0gdmlld0JveFRvVmlld1RyYW5zZm9ybSh3aWR0aCgpLT52YWx1ZSgpLCBo
ZWlnaHQoKS0+dmFsdWUoKSk7Ci0gICAgICAgICAgICBtYXQtPm11bHRpcGx5KHZpZXdCb3guZ2V0
KCkpOwotICAgICAgICB9CisgICAgQWZmaW5lVHJhbnNmb3JtIG1hdCA9IFNWR1N0eWxlZExvY2F0
YWJsZUVsZW1lbnQ6OmdldFNjcmVlbkNUTSgpOworICAgIG1hdC50cmFuc2xhdGUoeCgpLT52YWx1
ZSgpLCB5KCktPnZhbHVlKCkpOworCisgICAgaWYgKGF0dHJpYnV0ZXMoKS0+Z2V0TmFtZWRJdGVt
KFNWR05hbWVzOjp2aWV3Qm94QXR0cikpIHsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHZpZXdC
b3ggPSB2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKHdpZHRoKCktPnZhbHVlKCksIGhlaWdodCgpLT52
YWx1ZSgpKTsKKyAgICAgICAgbWF0ID0gdmlld0JveCAqIG1hdDsKICAgICB9CiAKICAgICByZXR1
cm4gbWF0OwpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnQuaAkocmV2aXNpb24gMTgxNzYp
CisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDcgKzM1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIHsKICAgICBjbGFzcyBTVkdBbmdsZTsK
ICAgICBjbGFzcyBTVkdMZW5ndGg7Ci0gICAgY2xhc3MgU1ZHTWF0cml4OwogICAgIGNsYXNzIFNW
R1RyYW5zZm9ybTsKICAgICBjbGFzcyBTVkdMZW5ndGg7CiAgICAgY2xhc3MgVGltZVNjaGVkdWxl
cjsKQEAgLTEwNCwyMCArMTAzLDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIGJvb2wg
Y2hlY2tFbmNsb3N1cmUoU1ZHRWxlbWVudCosIGNvbnN0IEZsb2F0UmVjdCYpOwogICAgICAgICB2
b2lkIGRlc2VsZWN0QWxsKCk7CiAKLSAgICAgICAgc3RhdGljIGZsb2F0IGNyZWF0ZVNWR051bWJl
cigpOworICAgICAgICBzdGF0aWMgZG91YmxlIGNyZWF0ZVNWR051bWJlcigpOwogICAgICAgICBz
dGF0aWMgU1ZHTGVuZ3RoKiBjcmVhdGVTVkdMZW5ndGgoKTsKICAgICAgICAgc3RhdGljIFNWR0Fu
Z2xlKiBjcmVhdGVTVkdBbmdsZSgpOwogICAgICAgICBzdGF0aWMgRmxvYXRQb2ludCBjcmVhdGVT
VkdQb2ludCgpOwotICAgICAgICBzdGF0aWMgU1ZHTWF0cml4KiBjcmVhdGVTVkdNYXRyaXgoKTsK
KyAgICAgICAgc3RhdGljIEFmZmluZVRyYW5zZm9ybSBjcmVhdGVTVkdNYXRyaXgoKTsKICAgICAg
ICAgc3RhdGljIEZsb2F0UmVjdCBjcmVhdGVTVkdSZWN0KCk7CiAgICAgICAgIHN0YXRpYyBTVkdU
cmFuc2Zvcm0qIGNyZWF0ZVNWR1RyYW5zZm9ybSgpOwotICAgICAgICBzdGF0aWMgU1ZHVHJhbnNm
b3JtKiBjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4KFNWR01hdHJpeCopOworICAgICAgICBz
dGF0aWMgU1ZHVHJhbnNmb3JtKiBjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4KGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJp
YnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKIAogICAgICAgICAvLyAndmlydHVhbCBTVkdMb2NhdGFi
bGUnIGZ1bmN0aW9ucwotICAgICAgICB2aXJ0dWFsIFNWR01hdHJpeCogZ2V0Q1RNKCkgY29uc3Q7
Ci0gICAgICAgIHZpcnR1YWwgU1ZHTWF0cml4KiBnZXRTY3JlZW5DVE0oKSBjb25zdDsKKyAgICAg
ICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gZ2V0Q1RNKCkgY29uc3Q7CisgICAgICAgIHZpcnR1
YWwgQWZmaW5lVHJhbnNmb3JtIGdldFNjcmVlbkNUTSgpIGNvbnN0OwogCiAgICAgICAgIHZpcnR1
YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gU3R5
bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KICAgICAgICAgdmlydHVhbCBS
ZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsK
SW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODE3
NikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiUmVuZGVyUGF0aC5oIgogI2luY2x1ZGUg
IlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdIZWxwZXIuaCIKLSNpbmNsdWRlICJTVkdNYXRy
aXguaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclN0eWxlLmgi
CiAjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
U3R5bGVkTG9jYXRhYmxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MTc2KQorKysgV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIlJlbmRlclBhdGguaCIKICNpbmNsdWRl
ICJTVkdFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHTWF0cml4LmgiCisjaW5jbHVkZSAiQWZmaW5l
VHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC01OCwxMiArNTgsMTIgQEAgRmxvYXRSZWN0IFNWR1N0eWxlZExvY2F0YWJsZUVs
ZW1lbnQ6OmdldAogICAgIHJldHVybiBTVkdMb2NhdGFibGU6OmdldEJCb3godGhpcyk7CiB9CiAK
LVNWR01hdHJpeCogU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6Z2V0Q1RNKCkgY29uc3QKK0Fm
ZmluZVRyYW5zZm9ybSBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50OjpnZXRDVE0oKSBjb25zdAog
ewogICAgIHJldHVybiBTVkdMb2NhdGFibGU6OmdldENUTSh0aGlzKTsKIH0KIAotU1ZHTWF0cml4
KiBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50OjpnZXRTY3JlZW5DVE0oKSBjb25zdAorQWZmaW5l
VHJhbnNmb3JtIFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQ6OmdldFNjcmVlbkNUTSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIFNWR0xvY2F0YWJsZTo6Z2V0U2NyZWVuQ1RNKHRoaXMpOwogfQpJbmRl
eDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQuaAkocmV2
aXNpb24gMTgxNzYpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdHlsZWRMb2NhdGFibGVFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi0gICAgY2xhc3MgU1ZHTWF0cml4OwogICAgIGNsYXNzIFNWR0VsZW1lbnQ7CiAKICAg
ICBjbGFzcyBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50IDogcHVibGljIFNWR1N0eWxlZEVsZW1l
bnQsIHZpcnR1YWwgcHVibGljIFNWR0xvY2F0YWJsZSB7CkBAIC00NCw4ICs0Myw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBTVkdFbGVtZW50KiBmYXJ0aGVzdFZpZXdw
b3J0RWxlbWVudCgpIGNvbnN0OwogCiAgICAgICAgIHZpcnR1YWwgRmxvYXRSZWN0IGdldEJCb3go
KSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBTVkdNYXRyaXgqIGdldENUTSgpIGNvbnN0OwotICAg
ICAgICB2aXJ0dWFsIFNWR01hdHJpeCogZ2V0U2NyZWVuQ1RNKCkgY29uc3Q7CisgICAgICAgIHZp
cnR1YWwgQWZmaW5lVHJhbnNmb3JtIGdldENUTSgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIEFm
ZmluZVRyYW5zZm9ybSBnZXRTY3JlZW5DVE0oKSBjb25zdDsKICAgICB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1h
YmxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVk
VHJhbnNmb3JtYWJsZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODE3NikKKysrIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIlJlbmRlclBhdGguaCIKICNpbmNsdWRlICJTVkdE
b2N1bWVudC5oIgogI2luY2x1ZGUgIlNWR0hlbHBlci5oIgotI2luY2x1ZGUgIlNWR01hdHJpeC5o
IgorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1l
bnQuaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0LmgiCiAKQEAgLTUwLDE3ICs1MCwxNyBA
QCBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6flNWR1N0eWxlCiAKIEFOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LCBTVkdUcmFu
c2Zvcm1MaXN0KiwgVHJhbnNmb3JtTGlzdCwgdHJhbnNmb3JtTGlzdCwgVHJhbnNmb3JtLCB0cmFu
c2Zvcm0sIFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyLmxvY2FsTmFtZSgpLCBtX3RyYW5zZm9ybS5n
ZXQoKSkKIAotU1ZHTWF0cml4KiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6bG9jYWxN
YXRyaXgoKSBjb25zdAorQWZmaW5lVHJhbnNmb3JtIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
ZW50Ojpsb2NhbE1hdHJpeCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGxhenlfY3JlYXRlPFNWR01h
dHJpeD4obV9sb2NhbE1hdHJpeCk7CisgICAgcmV0dXJuIG1fbG9jYWxNYXRyaXg7CiB9CiAKLVNW
R01hdHJpeCogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmdldENUTSgpIGNvbnN0CitB
ZmZpbmVUcmFuc2Zvcm0gU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmdldENUTSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIFNWR1RyYW5zZm9ybWFibGU6OmdldENUTSh0aGlzKTsKIH0KIAot
U1ZHTWF0cml4KiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6Z2V0U2NyZWVuQ1RNKCkg
Y29uc3QKK0FmZmluZVRyYW5zZm9ybSBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6Z2V0
U2NyZWVuQ1RNKCkgY29uc3QKIHsKICAgICByZXR1cm4gU1ZHVHJhbnNmb3JtYWJsZTo6Z2V0U2Ny
ZWVuQ1RNKHRoaXMpOwogfQpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFNWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtZW50Ojp1cGRhCiAgICAgaWYobG9jYWxUcmFuc2Zvcm0pIHsKICAgICAgICAgbV9s
b2NhbE1hdHJpeCA9IGxvY2FsVHJhbnNmb3JtLT5tYXRyaXgoKTsKICAgICAgICAgaWYgKHJlbmRl
cmVyKCkpIHsKLSAgICAgICAgICAgIHJlbmRlcmVyKCktPnNldExvY2FsVHJhbnNmb3JtKG1fbG9j
YWxNYXRyaXgtPm1hdHJpeCgpKTsKKyAgICAgICAgICAgIHJlbmRlcmVyKCktPnNldExvY2FsVHJh
bnNmb3JtKG1fbG9jYWxNYXRyaXgpOwogICAgICAgICAgICAgcmVuZGVyZXIoKS0+c2V0TmVlZHNM
YXlvdXQodHJ1ZSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMTMsOCArMTEzLDggQEAgdm9pZCBT
VkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6YXR0YQogewogICAgIFNWR1N0eWxlZEVsZW1l
bnQ6OmF0dGFjaCgpOwogCi0gICAgaWYgKHJlbmRlcmVyKCkgJiYgbV9sb2NhbE1hdHJpeCkKLSAg
ICAgICAgcmVuZGVyZXIoKS0+c2V0TG9jYWxUcmFuc2Zvcm0obV9sb2NhbE1hdHJpeC0+bWF0cml4
KCkpOworICAgIGlmIChyZW5kZXJlcigpICYmICFtX2xvY2FsTWF0cml4LmlzSWRlbnRpdHkoKSkK
KyAgICAgICAgcmVuZGVyZXIoKS0+c2V0TG9jYWxUcmFuc2Zvcm0obV9sb2NhbE1hdHJpeCk7CiB9
CiAKIH0KSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQuaAkocmV2aXNpb24gMTgxNzYpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw4ICszNCw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBOb2RlOwogICAgIGNsYXNzIFN0cmlu
Z0ltcGw7CiAgICAgY2xhc3MgU1ZHVHJhbnNmb3JtTGlzdDsKLSAgICBjbGFzcyBTVkdNYXRyaXg7
Ci0gICAgY2xhc3MgU1ZHVHJhbnNmb3JtTGlzdDsKIAogICAgIGNsYXNzIFNWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50IDogcHVibGljIFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQsIHB1Ymxp
YyBTVkdUcmFuc2Zvcm1hYmxlIHsKICAgICBwdWJsaWM6CkBAIC00NSwxMSArNDMsMTEgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTdHlsZWRUcmFuc2Zvcm1h
YmxlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgICAgIC8vICdTVkdUcmFuc2Zvcm1h
YmxlJyBmdW5jdGlvbnMKLSAgICAgICAgdmlydHVhbCBTVkdNYXRyaXgqIGxvY2FsTWF0cml4KCkg
Y29uc3Q7CisgICAgICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGxvY2FsTWF0cml4KCkgY29u
c3Q7CiAKICAgICAgICAgLy8gRGVyaXZlZCBmcm9tOiAnU1ZHTG9jYXRhYmxlJwotICAgICAgICB2
aXJ0dWFsIFNWR01hdHJpeCogZ2V0Q1RNKCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgU1ZHTWF0
cml4KiBnZXRTY3JlZW5DVE0oKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zv
cm0gZ2V0Q1RNKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGdldFNj
cmVlbkNUTSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIFNWR0VsZW1lbnQqIG5lYXJlc3RWaWV3
cG9ydEVsZW1lbnQoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBTVkdFbGVtZW50KiBmYXJ0aGVz
dFZpZXdwb3J0RWxlbWVudCgpIGNvbnN0OwogCkBAIC02Miw3ICs2MCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogCiAgICAgcHJvdGVjdGVk
OgotICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdNYXRyaXg+IG1fbG9jYWxNYXRyaXg7CisgICAg
ICAgIG11dGFibGUgQWZmaW5lVHJhbnNmb3JtIG1fbG9jYWxNYXRyaXg7CiAgICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCwg
U1ZHVHJhbnNmb3JtTGlzdCosIFJlZlB0cjxTVkdUcmFuc2Zvcm1MaXN0PiwgVHJhbnNmb3JtLCB0
cmFuc2Zvcm0pCiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVGV4dEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RleHRFbGVtZW50LmNw
cAkocmV2aXNpb24gMTgxNzYpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUZXh0RWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDEwICsyNCwxMCBAQAogI2lmZGVmIFNWR19TVVBQT1JU
CiAjaW5jbHVkZSAiU1ZHVGV4dEVsZW1lbnQuaCIKIAorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9y
bS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1RleHQuaCIK
ICNpbmNsdWRlICJTVkdMZW5ndGhMaXN0LmgiCi0jaW5jbHVkZSAiU1ZHTWF0cml4LmgiCiAjaW5j
bHVkZSAiU1ZHUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJTVkdUU3BhbkVsZW1lbnQuaCIKICNp
bmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0LmgiCkBAIC00Nyw5ICs0Nyw5IEBAIFNWR1RleHRFbGVt
ZW50Ojp+U1ZHVGV4dEVsZW1lbnQoKQogCiBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhT
VkdUZXh0RWxlbWVudCwgU1ZHVHJhbnNmb3JtTGlzdCosIFRyYW5zZm9ybUxpc3QsIHRyYW5zZm9y
bUxpc3QsIFRyYW5zZm9ybSwgdHJhbnNmb3JtLCBTVkdOYW1lczo6dHJhbnNmb3JtQXR0ci5sb2Nh
bE5hbWUoKSwgbV90cmFuc2Zvcm0uZ2V0KCkpCiAKLVNWR01hdHJpeCogU1ZHVGV4dEVsZW1lbnQ6
OmxvY2FsTWF0cml4KCkgY29uc3QKK0FmZmluZVRyYW5zZm9ybSBTVkdUZXh0RWxlbWVudDo6bG9j
YWxNYXRyaXgoKSBjb25zdAogewotICAgIHJldHVybiBsYXp5X2NyZWF0ZTxTVkdNYXRyaXg+KG1f
bG9jYWxNYXRyaXgpOworICAgIHJldHVybiBtX2xvY2FsTWF0cml4OwogfQogCiB2b2lkIFNWR1Rl
eHRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCkBA
IC03NSw3ICs3NSw3IEBAIHZvaWQgU1ZHVGV4dEVsZW1lbnQ6OnVwZGF0ZUxvY2FsVHJhbnNmb3IK
ICAgICBpZiAobG9jYWxUcmFuc2Zvcm0pIHsKICAgICAgICAgbV9sb2NhbE1hdHJpeCA9IGxvY2Fs
VHJhbnNmb3JtLT5tYXRyaXgoKTsKICAgICAgICAgaWYgKHJlbmRlcmVyKCkpIHsKLSAgICAgICAg
ICAgIHJlbmRlcmVyKCktPnNldExvY2FsVHJhbnNmb3JtKG1fbG9jYWxNYXRyaXgtPm1hdHJpeCgp
KTsKKyAgICAgICAgICAgIHJlbmRlcmVyKCktPnNldExvY2FsVHJhbnNmb3JtKG1fbG9jYWxNYXRy
aXgpOwogICAgICAgICAgICAgcmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiAgICAg
ICAgIH0KICAgICB9CkBAIC04NSw4ICs4NSw4IEBAIHZvaWQgU1ZHVGV4dEVsZW1lbnQ6OmF0dGFj
aCgpCiB7CiAgICAgU1ZHU3R5bGVkRWxlbWVudDo6YXR0YWNoKCk7CiAKLSAgICBpZiAocmVuZGVy
ZXIoKSAmJiBtX2xvY2FsTWF0cml4KQotICAgICAgICByZW5kZXJlcigpLT5zZXRMb2NhbFRyYW5z
Zm9ybShtX2xvY2FsTWF0cml4LT5tYXRyaXgoKSk7CisgICAgaWYgKHJlbmRlcmVyKCkgJiYgIW1f
bG9jYWxNYXRyaXguaXNJZGVudGl0eSgpKQorICAgICAgICByZW5kZXJlcigpLT5zZXRMb2NhbFRy
YW5zZm9ybShtX2xvY2FsTWF0cml4KTsKIH0KIAogU1ZHRWxlbWVudCogU1ZHVGV4dEVsZW1lbnQ6
Om5lYXJlc3RWaWV3cG9ydEVsZW1lbnQoKSBjb25zdApAQCAtMTA0LDEyICsxMDQsMTIgQEAgRmxv
YXRSZWN0IFNWR1RleHRFbGVtZW50OjpnZXRCQm94KCkgY29ucwogICAgIHJldHVybiBTVkdUcmFu
c2Zvcm1hYmxlOjpnZXRCQm94KHRoaXMpOwogfQogCi1TVkdNYXRyaXgqIFNWR1RleHRFbGVtZW50
OjpnZXRTY3JlZW5DVE0oKSBjb25zdAorQWZmaW5lVHJhbnNmb3JtIFNWR1RleHRFbGVtZW50Ojpn
ZXRTY3JlZW5DVE0oKSBjb25zdAogewogICAgIHJldHVybiBTVkdUcmFuc2Zvcm1hYmxlOjpnZXRT
Y3JlZW5DVE0odGhpcyk7CiB9CiAKLVNWR01hdHJpeCogU1ZHVGV4dEVsZW1lbnQ6OmdldENUTSgp
IGNvbnN0CitBZmZpbmVUcmFuc2Zvcm0gU1ZHVGV4dEVsZW1lbnQ6OmdldENUTSgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIFNWR1RyYW5zZm9ybWFibGU6OmdldENUTSh0aGlzKTsKIH0KSW5kZXg6IFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR1RleHRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHVGV4dEVsZW1lbnQuaAkocmV2aXNpb24gMTgxNzYpCisrKyBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdUZXh0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywxNCArNDMsMTQg
QEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCBTVkdFbGVtZW50KiBmYXJ0aGVz
dFZpZXdwb3J0RWxlbWVudCgpIGNvbnN0OwogCiAgICAgICAgIHZpcnR1YWwgRmxvYXRSZWN0IGdl
dEJCb3goKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBTVkdNYXRyaXgqIGdldENUTSgpIGNvbnN0
OwotICAgICAgICB2aXJ0dWFsIFNWR01hdHJpeCogZ2V0U2NyZWVuQ1RNKCkgY29uc3Q7CisgICAg
ICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGdldENUTSgpIGNvbnN0OworICAgICAgICB2aXJ0
dWFsIEFmZmluZVRyYW5zZm9ybSBnZXRTY3JlZW5DVE0oKSBjb25zdDsKIAogICAgICAgICB2aXJ0
dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIFN0
eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOyB9CiAgICAgICAgIHZpcnR1YWwg
UmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBj
b25zdDsKICAgICAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwotICAgICAgICB2aXJ0dWFsIFNW
R01hdHJpeCogbG9jYWxNYXRyaXgoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBBZmZpbmVUcmFu
c2Zvcm0gbG9jYWxNYXRyaXgoKSBjb25zdDsKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVMb2NhbFRyYW5zZm9ybShTVkdUcmFuc2Zvcm1MaXN0Kik7CiAgICAgICAgIApAQCAt
NTgsNyArNTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNW
R0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQogCiAgICAg
cHJpdmF0ZToKLSAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHTWF0cml4PiBtX2xvY2FsTWF0cml4
OworICAgICAgICBtdXRhYmxlIEFmZmluZVRyYW5zZm9ybSBtX2xvY2FsTWF0cml4OwogICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHVGV4dEVsZW1lbnQsIFNWR1RyYW5z
Zm9ybUxpc3QqLCBSZWZQdHI8U1ZHVHJhbnNmb3JtTGlzdD4sIFRyYW5zZm9ybSwgdHJhbnNmb3Jt
KQogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtLmNwcAkocmV2aXNpb24g
MTgxNzYpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm0uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMyw3ICsyMyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaWZkZWYgU1ZHX1NV
UFBPUlQKIAotI2luY2x1ZGUgIlNWR01hdHJpeC5oIgorI2luY2x1ZGUgIlNWR0FuZ2xlLmgiCiAj
aW5jbHVkZSAiU1ZHVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgogCkBA
IC0zMSw3ICszMSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBTVkdUcmFuc2Zvcm06
OlNWR1RyYW5zZm9ybSgpCiAgICAgOiBTaGFyZWQ8U1ZHVHJhbnNmb3JtPigpCi0gICAgLCBtX21h
dHJpeChTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdNYXRyaXgoKSkKIHsKICAgICBtX3R5cGUgPSBT
VkdfVFJBTlNGT1JNX1VOS05PV047CiAgICAgbV9hbmdsZSA9IDA7CkBAIC00Niw5ICs0NSw5IEBA
IHVuc2lnbmVkIHNob3J0IFNWR1RyYW5zZm9ybTo6dHlwZSgpIGNvbnMKICAgICByZXR1cm4gbV90
eXBlOwogfQogCi1TVkdNYXRyaXggKlNWR1RyYW5zZm9ybTo6bWF0cml4KCkgY29uc3QKK0FmZmlu
ZVRyYW5zZm9ybSBTVkdUcmFuc2Zvcm06Om1hdHJpeCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
bWF0cml4LmdldCgpOworICAgIHJldHVybiBtX21hdHJpeDsKIH0KIAogZG91YmxlIFNWR1RyYW5z
Zm9ybTo6YW5nbGUoKSBjb25zdApAQCAtNTYsMTEgKzU1LDExIEBAIGRvdWJsZSBTVkdUcmFuc2Zv
cm06OmFuZ2xlKCkgY29uc3QKICAgICByZXR1cm4gbV9hbmdsZTsKIH0KIAotdm9pZCBTVkdUcmFu
c2Zvcm06OnNldE1hdHJpeChTVkdNYXRyaXggKm1hdHJpeCkKK3ZvaWQgU1ZHVHJhbnNmb3JtOjpz
ZXRNYXRyaXgoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBtYXRyaXgpCiB7CiAgICAgbV90eXBlID0g
U1ZHX1RSQU5TRk9STV9NQVRSSVg7CiAgICAgbV9hbmdsZSA9IDA7Ci0gICAgCisKICAgICBtX21h
dHJpeCA9IG1hdHJpeDsKIH0KIApAQCAtNjgsNDggKzY3LDQ4IEBAIHZvaWQgU1ZHVHJhbnNmb3Jt
OjpzZXRUcmFuc2xhdGUoZG91YmxlIHQKIHsKICAgICBtX3R5cGUgPSBTVkdfVFJBTlNGT1JNX1RS
QU5TTEFURTsKICAgICBtX2FuZ2xlID0gMDsKLSAgICAKLSAgICBtX21hdHJpeC0+cmVzZXQoKTsK
LSAgICBtX21hdHJpeC0+dHJhbnNsYXRlKHR4LCB0eSk7CisKKyAgICBtX21hdHJpeC5yZXNldCgp
OworICAgIG1fbWF0cml4LnRyYW5zbGF0ZSh0eCwgdHkpOwogfQogCiB2b2lkIFNWR1RyYW5zZm9y
bTo6c2V0U2NhbGUoZG91YmxlIHN4LCBkb3VibGUgc3kpCiB7CiAgICAgbV90eXBlID0gU1ZHX1RS
QU5TRk9STV9TQ0FMRTsKICAgICBtX2FuZ2xlID0gMDsKLSAgICAKLSAgICBtX21hdHJpeC0+cmVz
ZXQoKTsKLSAgICBtX21hdHJpeC0+c2NhbGVOb25Vbmlmb3JtKHN4LCBzeSk7CisKKyAgICBtX21h
dHJpeC5yZXNldCgpOworICAgIG1fbWF0cml4LnNjYWxlKHN4LCBzeSk7CiB9CiAKIHZvaWQgU1ZH
VHJhbnNmb3JtOjpzZXRSb3RhdGUoZG91YmxlIGFuZ2xlLCBkb3VibGUgY3gsIGRvdWJsZSBjeSkK
IHsKICAgICBtX3R5cGUgPSBTVkdfVFJBTlNGT1JNX1JPVEFURTsKICAgICBtX2FuZ2xlID0gYW5n
bGU7Ci0gICAgCisKICAgICAvLyBUT0RPOiB0b1N0cmluZygpIGltcGxlbWVudGF0aW9uLCB3aGlj
aCBjYW4gc2hvdyBjeCwgY3kgKG5lZWQgdG8gYmUgc3RvcmVkPykKLSAgICBtX21hdHJpeC0+cmVz
ZXQoKTsKLSAgICBtX21hdHJpeC0+dHJhbnNsYXRlKGN4LCBjeSk7Ci0gICAgbV9tYXRyaXgtPnJv
dGF0ZShhbmdsZSk7Ci0gICAgbV9tYXRyaXgtPnRyYW5zbGF0ZSgtY3gsIC1jeSk7CisgICAgbV9t
YXRyaXgucmVzZXQoKTsKKyAgICBtX21hdHJpeC50cmFuc2xhdGUoY3gsIGN5KTsKKyAgICBtX21h
dHJpeC5yb3RhdGUoYW5nbGUpOworICAgIG1fbWF0cml4LnRyYW5zbGF0ZSgtY3gsIC1jeSk7CiB9
CiAKIHZvaWQgU1ZHVHJhbnNmb3JtOjpzZXRTa2V3WChkb3VibGUgYW5nbGUpCiB7CiAgICAgbV90
eXBlID0gU1ZHX1RSQU5TRk9STV9TS0VXWDsKICAgICBtX2FuZ2xlID0gYW5nbGU7Ci0gICAgCi0g
ICAgbV9tYXRyaXgtPnJlc2V0KCk7Ci0gICAgbV9tYXRyaXgtPnNrZXdYKGFuZ2xlKTsKKworICAg
IG1fbWF0cml4LnJlc2V0KCk7CisgICAgbV9tYXRyaXguc2hlYXIodGFuKFNWR0FuZ2xlOjp0b3Jh
ZChhbmdsZSkpLCAwLjBmKTsKIH0KIAogdm9pZCBTVkdUcmFuc2Zvcm06OnNldFNrZXdZKGRvdWJs
ZSBhbmdsZSkKIHsKICAgICBtX3R5cGUgPSBTVkdfVFJBTlNGT1JNX1NLRVdZOwogICAgIG1fYW5n
bGUgPSBhbmdsZTsKLSAgICAKLSAgICBtX21hdHJpeC0+cmVzZXQoKTsKLSAgICBtX21hdHJpeC0+
c2tld1koYW5nbGUpOworCisgICAgbV9tYXRyaXgucmVzZXQoKTsKKyAgICBtX21hdHJpeC5zaGVh
cigwLjBmLCB0YW4oU1ZHQW5nbGU6OnRvcmFkKGFuZ2xlKSkpOwogfQogCiAvLyB2aW06dHM9NDpu
b2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm0uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm0uaAkocmV2aXNpb24gMTgxNzYpCisrKyBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTIg
KzI0LDEyIEBACiAjZGVmaW5lIEtTVkdfU1ZHVHJhbnNmb3JtSW1wbF9ICiAjaWZkZWYgU1ZHX1NV
UFBPUlQKIAorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIlNoYXJlZC5o
IgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAg
Y2xhc3MgU1ZHTWF0cml4OwogICAgIGNsYXNzIFNWR1RyYW5zZm9ybSA6IHB1YmxpYyBTaGFyZWQ8
U1ZHVHJhbnNmb3JtPiB7CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIFNWR1RyYW5zZm9ybVR5
cGUgewpAQCAtNDcsMTEgKzQ3LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAg
ICAgIAogICAgICAgICB1bnNpZ25lZCBzaG9ydCB0eXBlKCkgY29uc3Q7CiAKLSAgICAgICAgU1ZH
TWF0cml4KiBtYXRyaXgoKSBjb25zdDsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIG1hdHJpeCgp
IGNvbnN0OwogICAgIAogICAgICAgICBkb3VibGUgYW5nbGUoKSBjb25zdDsKIAotICAgICAgICB2
b2lkIHNldE1hdHJpeChTVkdNYXRyaXgqKTsKKyAgICAgICAgdm9pZCBzZXRNYXRyaXgoY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJik7CiAgICAgICAgIHZvaWQgc2V0VHJhbnNsYXRlKGRvdWJsZSB0eCwg
ZG91YmxlIHR5KTsKICAgICAgICAgdm9pZCBzZXRTY2FsZShkb3VibGUgc3gsIGRvdWJsZSBzeSk7
CiAgICAgICAgIHZvaWQgc2V0Um90YXRlKGRvdWJsZSBhbmdsZSwgZG91YmxlIGN4LCBkb3VibGUg
Y3kpOwpAQCAtNjEsNyArNjEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHJpdmF0ZToK
ICAgICAgICAgZG91YmxlIG1fYW5nbGU7CiAgICAgICAgIHVuc2lnbmVkIHNob3J0IG1fdHlwZTsK
LSAgICAgICAgUmVmUHRyPFNWR01hdHJpeD4gbV9tYXRyaXg7CisgICAgICAgIEFmZmluZVRyYW5z
Zm9ybSBtX21hdHJpeDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmNwcAkocmV2aXNpb24gMTgxNzYpCisrKyBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjQsNyArMjQsNyBAQAogCiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAotI2luY2x1ZGUgIlNWR01hdHJp
eC5oIgorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIlNWR1RyYW5zZm9y
bS5oIgogI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm1M
aXN0LmgiCkBAIC00MCw3ICs0MCw3IEBAIFNWR1RyYW5zZm9ybUxpc3Q6On5TVkdUcmFuc2Zvcm1M
aXN0KCkKIHsKIH0KIAotUmVmUHRyPFNWR1RyYW5zZm9ybT4gU1ZHVHJhbnNmb3JtTGlzdDo6Y3Jl
YXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChTVkdNYXRyaXgqIG1hdHJpeCkgY29uc3QKK1JlZlB0
cjxTVkdUcmFuc2Zvcm0+IFNWR1RyYW5zZm9ybUxpc3Q6OmNyZWF0ZVNWR1RyYW5zZm9ybUZyb21N
YXRyaXgoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBtYXRyaXgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgobWF0cml4KTsKIH0K
QEAgLTYyLDExICs2MiwxMSBAQCBTVkdUcmFuc2Zvcm0qIFNWR1RyYW5zZm9ybUxpc3Q6OmNvbmNh
dGVuCiAgICAgICAgIHJldHVybiAwOwogICAgICAgICAKICAgICBTVkdUcmFuc2Zvcm0qIG9iaiA9
IFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR1RyYW5zZm9ybSgpOwotICAgIFNWR01hdHJpeCogbWF0
cml4ID0gU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHTWF0cml4KCk7CisgICAgQWZmaW5lVHJhbnNm
b3JtIG1hdHJpeDsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGZvcih1bnNpZ25l
ZCBpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKLSAgICAgICAgbWF0cml4LT5tdWx0aXBseShn
ZXRJdGVtKGksIGVjKS0+bWF0cml4KCkpOworICAgICAgICBtYXRyaXggPSBnZXRJdGVtKGksIGVj
KS0+bWF0cml4KCkgKiBtYXRyaXg7CiAKICAgICBvYmotPnNldE1hdHJpeChtYXRyaXgpOwogICAg
IHJldHVybiBvYmo7CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtTGlzdC5oCShyZXZp
c2lvbiAxODE3NikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IFNWR1RyYW5zZm9ybUxpc3QoKTsKICAgICAgICAgdmlydHVhbCB+U1ZHVHJhbnNmb3JtTGlzdCgp
OwogCi0gICAgICAgIFJlZlB0cjxTVkdUcmFuc2Zvcm0+IGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21N
YXRyaXgoU1ZHTWF0cml4KikgY29uc3Q7CisgICAgICAgIFJlZlB0cjxTVkdUcmFuc2Zvcm0+IGNy
ZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgoY29uc3QgQWZmaW5lVHJhbnNmb3JtJikgY29uc3Q7
CiAgICAgICAgIFJlZlB0cjxTVkdUcmFuc2Zvcm0+IGNvbnNvbGlkYXRlKCk7CiAKICAgICAgICAg
Ly8gSW50ZXJuYWwgdXNlIG9ubHkKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9y
bWFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybWFi
bGUuY3BwCShyZXZpc2lvbiAxODE3NikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9y
bWFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAKICNpbmNsdWRlICJS
ZWd1bGFyRXhwcmVzc2lvbi5oIgogI2luY2x1ZGUgIlNWR0hlbHBlci5oIgotI2luY2x1ZGUgIlNW
R01hdHJpeC5oIgorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIlNWR05h
bWVzLmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1RyYW5z
Zm9ybUxpc3QuaCIKQEAgLTQxLDE4ICs0MSwxNiBAQCBTVkdUcmFuc2Zvcm1hYmxlOjp+U1ZHVHJh
bnNmb3JtYWJsZSgpCiB7CiB9CiAKLVNWR01hdHJpeCogU1ZHVHJhbnNmb3JtYWJsZTo6Z2V0Q1RN
KGNvbnN0IFNWR0VsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CitBZmZpbmVUcmFuc2Zvcm0gU1ZHVHJh
bnNmb3JtYWJsZTo6Z2V0Q1RNKGNvbnN0IFNWR0VsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7Ci0g
ICAgU1ZHTWF0cml4KiBjdG0gPSBTVkdMb2NhdGFibGU6OmdldENUTShlbGVtZW50KTsKLSAgICBj
dG0tPm11bHRpcGx5KGxvY2FsTWF0cml4KCkpOwotICAgIHJldHVybiBjdG07CisgICAgQWZmaW5l
VHJhbnNmb3JtIGN0bSA9IFNWR0xvY2F0YWJsZTo6Z2V0Q1RNKGVsZW1lbnQpOworICAgIHJldHVy
biBsb2NhbE1hdHJpeCgpICogY3RtOwogfQogCi1TVkdNYXRyaXgqIFNWR1RyYW5zZm9ybWFibGU6
OmdldFNjcmVlbkNUTShjb25zdCBTVkdFbGVtZW50KiBlbGVtZW50KSBjb25zdAorQWZmaW5lVHJh
bnNmb3JtIFNWR1RyYW5zZm9ybWFibGU6OmdldFNjcmVlbkNUTShjb25zdCBTVkdFbGVtZW50KiBl
bGVtZW50KSBjb25zdAogewotICAgIFNWR01hdHJpeCogY3RtID0gU1ZHTG9jYXRhYmxlOjpnZXRT
Y3JlZW5DVE0oZWxlbWVudCk7Ci0gICAgY3RtLT5tdWx0aXBseShsb2NhbE1hdHJpeCgpKTsKLSAg
ICByZXR1cm4gY3RtOworICAgIEFmZmluZVRyYW5zZm9ybSBjdG0gPSBTVkdMb2NhdGFibGU6Omdl
dFNjcmVlbkNUTShlbGVtZW50KTsKKyAgICByZXR1cm4gbG9jYWxNYXRyaXgoKSAqIGN0bTsKIH0K
IAogYm9vbCBTVkdUcmFuc2Zvcm1hYmxlOjpwYXJzZVRyYW5zZm9ybUF0dHJpYnV0ZShTVkdUcmFu
c2Zvcm1MaXN0KiBsaXN0LCBjb25zdCBBdG9taWNTdHJpbmcmIHRyYW5zZm9ybSkKQEAgLTExMiwx
MiArMTEwLDEyIEBAIGJvb2wgU1ZHVHJhbnNmb3JtYWJsZTo6cGFyc2VUcmFuc2Zvcm1BdHQKICAg
ICAgICAgZWxzZSBpZiAoc3VidHJhbnNmb3JtWzBdID09ICJza2V3eSIgJiYgbnBhcmFtcyA9PSAx
KQogICAgICAgICAgICAgdC0+c2V0U2tld1kocGFyYW1zWzBdLnRvRG91YmxlKCkpOwogICAgICAg
ICBlbHNlIGlmIChzdWJ0cmFuc2Zvcm1bMF0gPT0gIm1hdHJpeCIgJiYgbnBhcmFtcyA9PSA2KSB7
Ci0gICAgICAgICAgICBTVkdNYXRyaXgqIHJldCA9IG5ldyBTVkdNYXRyaXgocGFyYW1zWzBdLnRv
RG91YmxlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFy
YW1zWzFdLnRvRG91YmxlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGFyYW1zWzJdLnRvRG91YmxlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGFyYW1zWzNdLnRvRG91YmxlKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzRdLnRvRG91YmxlKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzVdLnRvRG91YmxlKCkpOwor
ICAgICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHJldChwYXJhbXNbMF0udG9Eb3VibGUoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzFdLnRvRG91YmxlKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1syXS50b0RvdWJsZSgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbM10udG9Eb3VibGUoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzRdLnRvRG91YmxlKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1s1XS50b0RvdWJsZSgpKTsKICAgICAgICAgICAg
IHQtPnNldE1hdHJpeChyZXQpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZGVsZXRl
IHQ7CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5oCShyZXZpc2lvbiAxODE3
NikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybWFibGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMjksNyArMjksNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogICAgIGNsYXNz
IEF0b21pY1N0cmluZzsKLSAgICBjbGFzcyBTVkdNYXRyaXg7CisgICAgY2xhc3MgQWZmaW5lVHJh
bnNmb3JtOwogICAgIGNsYXNzIFNWR1RyYW5zZm9ybUxpc3Q7CiAKICAgICBjbGFzcyBTVkdUcmFu
c2Zvcm1hYmxlIDogdmlydHVhbCBwdWJsaWMgU1ZHTG9jYXRhYmxlIHsKQEAgLTM4LDEzICszOCwx
MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgflNWR1RyYW5zZm9ybWFi
bGUoKTsKIAogICAgICAgICAvLyAnU1ZHVHJhbnNmb3JtYWJsZScgZnVuY3Rpb25zCi0gICAgICAg
IHZpcnR1YWwgU1ZHTWF0cml4KiBsb2NhbE1hdHJpeCgpIGNvbnN0ID0gMDsKKyAgICAgICAgdmly
dHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxNYXRyaXgoKSBjb25zdCA9IDA7CiAKICAgICAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUxvY2FsVHJhbnNmb3JtKFNWR1RyYW5zZm9ybUxpc3QqKSA9IDA7
CiAKICAgICAgICAgc3RhdGljIGJvb2wgcGFyc2VUcmFuc2Zvcm1BdHRyaWJ1dGUoU1ZHVHJhbnNm
b3JtTGlzdCosIGNvbnN0IEF0b21pY1N0cmluZyYgdHJhbnNmb3JtKTsKLSAgICAgICAgU1ZHTWF0
cml4KiBnZXRDVE0oY29uc3QgU1ZHRWxlbWVudCopIGNvbnN0OwotICAgICAgICBTVkdNYXRyaXgq
IGdldFNjcmVlbkNUTShjb25zdCBTVkdFbGVtZW50KikgY29uc3Q7CisgICAgICAgIEFmZmluZVRy
YW5zZm9ybSBnZXRDVE0oY29uc3QgU1ZHRWxlbWVudCopIGNvbnN0OworICAgICAgICBBZmZpbmVU
cmFuc2Zvcm0gZ2V0U2NyZWVuQ1RNKGNvbnN0IFNWR0VsZW1lbnQqKSBjb25zdDsKICAgICB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0FmZmluZVRyYW5zZm9ybS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9BZmZpbmVUcmFuc2Zvcm0uY3BwCShyZXZpc2lvbiAxODE3NikKKysrIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQWZmaW5lVHJhbnNmb3JtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjks
MTEgKzI5LDU1IEBACiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5o
IgogCisjaW5jbHVkZSA8bWF0aC5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NvbnN0IGRv
dWJsZSBkZWcycmFkID0gMC4wMTc0NTMyOTI1MTk5NDMyOTU3Njk7IC8vIHBpLzE4MAorCiBib29s
IEFmZmluZVRyYW5zZm9ybTo6aXNJbnZlcnRpYmxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gZGV0
KCkgIT0gMC4wOwogfQogCitBZmZpbmVUcmFuc2Zvcm0mIEFmZmluZVRyYW5zZm9ybTo6bXVsdGlw
bHkoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBvdGhlcikKK3sKKyAgICByZXR1cm4gKCp0aGlzKSAq
PSBvdGhlcjsKK30KKworQWZmaW5lVHJhbnNmb3JtJiBBZmZpbmVUcmFuc2Zvcm06OnNjYWxlKGRv
dWJsZSBzKQoreworICAgIHJldHVybiBzY2FsZShzLCBzKTsKK30KKworQWZmaW5lVHJhbnNmb3Jt
JiBBZmZpbmVUcmFuc2Zvcm06OnNjYWxlTm9uVW5pZm9ybShkb3VibGUgc3gsIGRvdWJsZSBzeSkK
K3sKKyAgICByZXR1cm4gc2NhbGUoc3gsIHN5KTsKK30KKworQWZmaW5lVHJhbnNmb3JtJiBBZmZp
bmVUcmFuc2Zvcm06OnJvdGF0ZUZyb21WZWN0b3IoZG91YmxlIHgsIGRvdWJsZSB5KQoreworICAg
IHJldHVybiByb3RhdGUoYXRhbjIoeSwgeCkgLyBkZWcycmFkKTsKK30KKworQWZmaW5lVHJhbnNm
b3JtJiBBZmZpbmVUcmFuc2Zvcm06OmZsaXBYKCkKK3sKKyAgICByZXR1cm4gc2NhbGUoLTEuMGYs
IDEuMGYpOworfQorCitBZmZpbmVUcmFuc2Zvcm0mIEFmZmluZVRyYW5zZm9ybTo6ZmxpcFkoKQor
eworICAgIHJldHVybiBzY2FsZSgxLjBmLCAtMS4wZik7Cit9CisKK0FmZmluZVRyYW5zZm9ybSYg
QWZmaW5lVHJhbnNmb3JtOjpza2V3WChkb3VibGUgYW5nbGUpCit7CisgICAgcmV0dXJuIHNoZWFy
KHRhbihhbmdsZSAqIGRlZzJyYWQpLCAwLjBmKTsKK30KKworQWZmaW5lVHJhbnNmb3JtJiBBZmZp
bmVUcmFuc2Zvcm06OnNrZXdZKGRvdWJsZSBhbmdsZSkKK3sKKyAgICByZXR1cm4gc2hlYXIoMC4w
ZiwgdGFuKGFuZ2xlICogZGVnMnJhZCkpOworfQorCiB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0FmZmluZVRyYW5zZm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQWZmaW5lVHJhbnNmb3JtLmgJKHJldmlzaW9uIDE4MTc2KQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9BZmZpbmVUcmFuc2Zvcm0uaAkod29ya2luZyBjb3B5KQpAQCAt
MzYsMTMgKzM2LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIEludFJl
Y3Q7Ci0gICAgY2xhc3MgRmxvYXRSZWN0OworY2xhc3MgSW50UmVjdDsKK2NsYXNzIEZsb2F0UmVj
dDsKIAogY2xhc3MgQWZmaW5lVHJhbnNmb3JtIHsKIHB1YmxpYzoKICAgICBBZmZpbmVUcmFuc2Zv
cm0oKTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0oZG91YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUgYywg
ZG91YmxlIGQsIGRvdWJsZSB0eCwgZG91YmxlIHR5KTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0oZG91
YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUgYywgZG91YmxlIGQsIGRvdWJsZSBlLCBkb3VibGUgZik7
CiAjaWYgUExBVEZPUk0oQ0cpCiAgICAgQWZmaW5lVHJhbnNmb3JtKENHQWZmaW5lVHJhbnNmb3Jt
IHRyYW5zZm9ybSk7CiAjZWxpZiBQTEFURk9STShRVCkKQEAgLTUxLDMwICs1MSw0OSBAQCBwdWJs
aWM6CiAgICAgQWZmaW5lVHJhbnNmb3JtKGNvbnN0IGNhaXJvX21hdHJpeF90ICZtYXRyaXgpOwog
I2VuZGlmCiAKLSAgICB2b2lkIHNldE1hdHJpeChkb3VibGUgYSwgZG91YmxlIGIsIGRvdWJsZSBj
LCBkb3VibGUgZCwgZG91YmxlIHR4LCBkb3VibGUgdHkpOworICAgIHZvaWQgc2V0TWF0cml4KGRv
dWJsZSBhLCBkb3VibGUgYiwgZG91YmxlIGMsIGRvdWJsZSBkLCBkb3VibGUgZSwgZG91YmxlIGYp
OwogICAgIHZvaWQgbWFwKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlICp4MiwgZG91YmxlICp5
MikgY29uc3Q7CiAgICAgSW50UmVjdCBtYXBSZWN0KGNvbnN0IEludFJlY3QmKSBjb25zdDsKICAg
ICBGbG9hdFJlY3QgbWFwUmVjdChjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKICAgICAKICAgICBi
b29sIGlzSWRlbnRpdHkoKSBjb25zdDsKICAgICAKLSAgICBkb3VibGUgbTExKCkgY29uc3Q7Ci0g
ICAgZG91YmxlIG0xMigpIGNvbnN0OwotICAgIGRvdWJsZSBtMjEoKSBjb25zdDsKLSAgICBkb3Vi
bGUgbTIyKCkgY29uc3Q7Ci0gICAgZG91YmxlIGR4KCkgY29uc3Q7Ci0gICAgZG91YmxlIGR5KCkg
Y29uc3Q7CisgICAgZG91YmxlIGEoKSBjb25zdDsKKyAgICB2b2lkIHNldEEoZG91YmxlIGEpOwor
CisgICAgZG91YmxlIGIoKSBjb25zdDsKKyAgICB2b2lkIHNldEIoZG91YmxlIGIpOworCisgICAg
ZG91YmxlIGMoKSBjb25zdDsKKyAgICB2b2lkIHNldEMoZG91YmxlIGMpOworCisgICAgZG91Ymxl
IGQoKSBjb25zdDsKKyAgICB2b2lkIHNldEQoZG91YmxlIGQpOworCisgICAgZG91YmxlIGUoKSBj
b25zdDsKKyAgICB2b2lkIHNldEUoZG91YmxlIGUpOworCisgICAgZG91YmxlIGYoKSBjb25zdDsK
KyAgICB2b2lkIHNldEYoZG91YmxlIGYpOwogCiAgICAgdm9pZCByZXNldCgpOwotICAgIAotICAg
IEFmZmluZVRyYW5zZm9ybSAmc2NhbGUoZG91YmxlIHN4LCBkb3VibGUgc3kpOwotICAgIEFmZmlu
ZVRyYW5zZm9ybSAmcm90YXRlKGRvdWJsZSBkKTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gJnRyYW5z
bGF0ZShkb3VibGUgdHgsIGRvdWJsZSB0eSk7Ci0gICAgQWZmaW5lVHJhbnNmb3JtICZzaGVhcihk
b3VibGUgc3gsIGRvdWJsZSBzeSk7Ci0gICAgCisKKyAgICBBZmZpbmVUcmFuc2Zvcm0mIG11bHRp
cGx5KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOworICAgIEFmZmluZVRyYW5zZm9ybSYgc2NhbGUo
ZG91YmxlKTsgCisgICAgQWZmaW5lVHJhbnNmb3JtJiBzY2FsZShkb3VibGUgc3gsIGRvdWJsZSBz
eSk7IAorICAgIEFmZmluZVRyYW5zZm9ybSYgc2NhbGVOb25Vbmlmb3JtKGRvdWJsZSBzeCwgZG91
YmxlIHN5KTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0mIHJvdGF0ZShkb3VibGUgZCk7CisgICAgQWZm
aW5lVHJhbnNmb3JtJiByb3RhdGVGcm9tVmVjdG9yKGRvdWJsZSB4LCBkb3VibGUgeSk7CisgICAg
QWZmaW5lVHJhbnNmb3JtJiB0cmFuc2xhdGUoZG91YmxlIHR4LCBkb3VibGUgdHkpOworICAgIEFm
ZmluZVRyYW5zZm9ybSYgc2hlYXIoZG91YmxlIHN4LCBkb3VibGUgc3kpOworICAgIEFmZmluZVRy
YW5zZm9ybSYgZmxpcFgoKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0mIGZsaXBZKCk7CisgICAgQWZm
aW5lVHJhbnNmb3JtJiBza2V3WChkb3VibGUgYW5nbGUpOworICAgIEFmZmluZVRyYW5zZm9ybSYg
c2tld1koZG91YmxlIGFuZ2xlKTsKKyAKICAgICBkb3VibGUgZGV0KCkgY29uc3Q7CiAgICAgYm9v
bCBpc0ludmVydGlibGUoKSBjb25zdDsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gaW52ZXJ0KCkgY29u
c3Q7CisgICAgQWZmaW5lVHJhbnNmb3JtIGludmVyc2UoKSBjb25zdDsKIAogI2lmIFBMQVRGT1JN
KENHKQogICAgIG9wZXJhdG9yIENHQWZmaW5lVHJhbnNmb3JtKCkgY29uc3Q7CkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0FmZmluZVRyYW5zZm9ybUNhaXJvLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0FmZmluZVRyYW5zZm9y
bUNhaXJvLmNwcAkocmV2aXNpb24gMTgxNzYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0FmZmluZVRyYW5zZm9ybUNhaXJvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDM2
ICsxMzMsNjYgQEAgYm9vbCBBZmZpbmVUcmFuc2Zvcm06OmlzSWRlbnRpdHkoKSBjb25zdAogICAg
ICAgICAgJiYgKG1fdHJhbnNmb3JtLngwID09IDApICYmIChtX3RyYW5zZm9ybS55MCA9PSAwKSk7
CiB9CiAKLWRvdWJsZSBBZmZpbmVUcmFuc2Zvcm06Om0xMSgpIGNvbnN0Citkb3VibGUgQWZmaW5l
VHJhbnNmb3JtOjphKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90cmFuc2Zvcm0ueHg7CiB9CiAK
LWRvdWJsZSBBZmZpbmVUcmFuc2Zvcm06Om0xMigpIGNvbnN0Cit2b2lkIEFmZmluZVRyYW5zZm9y
bTo6c2V0QShkb3VibGUgYSkKK3sKKyAgICBtX3RyYW5zZm9ybS54eCA9IGE7Cit9CisKK2RvdWJs
ZSBBZmZpbmVUcmFuc2Zvcm06OmIoKSBjb25zdAogewogICAgIHJldHVybiBtX3RyYW5zZm9ybS54
eTsKIH0KIAotZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6bTIxKCkgY29uc3QKK3ZvaWQgQWZmaW5l
VHJhbnNmb3JtOjpzZXRCKGRvdWJsZSBiKQoreworICAgIG1fdHJhbnNmb3JtLnh5ID0gYjsKK30K
KworZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6YygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHJh
bnNmb3JtLnl4OwogfQogCi1kb3VibGUgQWZmaW5lVHJhbnNmb3JtOjptMjIoKSBjb25zdAordm9p
ZCBBZmZpbmVUcmFuc2Zvcm06OnNldEMoZG91YmxlIGMpCit7CisgICAgbV90cmFuc2Zvcm0ueXgg
PSBjOworfQorCitkb3VibGUgQWZmaW5lVHJhbnNmb3JtOjpkKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV90cmFuc2Zvcm0ueXk7CiB9CiAKLWRvdWJsZSBBZmZpbmVUcmFuc2Zvcm06OmR4KCkgY29u
c3QKK3ZvaWQgQWZmaW5lVHJhbnNmb3JtOjpzZXREKGRvdWJsZSBkKQoreworICAgIG1fdHJhbnNm
b3JtLnl5ID0gZDsKK30KKworZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6ZSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fdHJhbnNmb3JtLngwOwogfQogCi1kb3VibGUgQWZmaW5lVHJhbnNmb3JtOjpk
eSgpIGNvbnN0Cit2b2lkIEFmZmluZVRyYW5zZm9ybTo6c2V0RShkb3VibGUgZSkKK3sKKyAgICBt
X3RyYW5zZm9ybS54MCA9IGU7Cit9CisKK2RvdWJsZSBBZmZpbmVUcmFuc2Zvcm06OmYoKSBjb25z
dAogewogICAgIHJldHVybiBtX3RyYW5zZm9ybS55MDsKIH0KIAordm9pZCBBZmZpbmVUcmFuc2Zv
cm06OnNldEYoZG91YmxlIGYpCit7CisgICAgbV90cmFuc2Zvcm0ueTAgPSBmOworfQorCiB2b2lk
IEFmZmluZVRyYW5zZm9ybTo6cmVzZXQoKQogewogICAgIGNhaXJvX21hdHJpeF9pbml0X2lkZW50
aXR5KCZtX3RyYW5zZm9ybSk7CkBAIC0yMDMsNyArMjMzLDcgQEAgZG91YmxlIEFmZmluZVRyYW5z
Zm9ybTo6ZGV0KCkgY29uc3QKICAgICByZXR1cm4gbV90cmFuc2Zvcm0ueHggKiBtX3RyYW5zZm9y
bS55eSAtIG1fdHJhbnNmb3JtLnh5ICogbV90cmFuc2Zvcm0ueXg7CiB9CiAKLUFmZmluZVRyYW5z
Zm9ybSBBZmZpbmVUcmFuc2Zvcm06OmludmVydCgpIGNvbnN0CitBZmZpbmVUcmFuc2Zvcm0gQWZm
aW5lVHJhbnNmb3JtOjppbnZlcnNlKCkgY29uc3QKIHsKICAgICBpZiAoIWlzSW52ZXJ0aWJsZSgp
KSByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQWZmaW5lVHJhbnNmb3JtQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvQWZmaW5lVHJhbnNmb3JtQ0cuY3BwCShyZXZpc2lvbiAxODE3NikK
KysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQWZmaW5lVHJhbnNmb3JtQ0cuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03NywzNiArNzcsNjYgQEAgYm9vbCBBZmZpbmVUcmFuc2Zvcm06Omlz
SWRlbnRpdHkoKSBjb25zdAogICAgIHJldHVybiBDR0FmZmluZVRyYW5zZm9ybUlzSWRlbnRpdHko
bV90cmFuc2Zvcm0pOwogfQogCi1kb3VibGUgQWZmaW5lVHJhbnNmb3JtOjptMTEoKSBjb25zdAor
ZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHJhbnNm
b3JtLmE7CiB9CiAKLWRvdWJsZSBBZmZpbmVUcmFuc2Zvcm06Om0xMigpIGNvbnN0Cit2b2lkIEFm
ZmluZVRyYW5zZm9ybTo6c2V0QShkb3VibGUgYSkKK3sKKyAgICBtX3RyYW5zZm9ybS5hID0gYTsK
K30KKworZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6YigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
dHJhbnNmb3JtLmI7CiB9CiAKLWRvdWJsZSBBZmZpbmVUcmFuc2Zvcm06Om0yMSgpIGNvbnN0Cit2
b2lkIEFmZmluZVRyYW5zZm9ybTo6c2V0Qihkb3VibGUgYikKK3sKKyAgICBtX3RyYW5zZm9ybS5i
ID0gYjsKK30KKworZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6YygpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fdHJhbnNmb3JtLmM7CiB9CiAKLWRvdWJsZSBBZmZpbmVUcmFuc2Zvcm06Om0yMigpIGNv
bnN0Cit2b2lkIEFmZmluZVRyYW5zZm9ybTo6c2V0Qyhkb3VibGUgYykKK3sKKyAgICBtX3RyYW5z
Zm9ybS5jID0gYzsKK30KKworZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6ZCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fdHJhbnNmb3JtLmQ7CiB9CiAKLWRvdWJsZSBBZmZpbmVUcmFuc2Zvcm06OmR4
KCkgY29uc3QKK3ZvaWQgQWZmaW5lVHJhbnNmb3JtOjpzZXREKGRvdWJsZSBkKQoreworICAgIG1f
dHJhbnNmb3JtLmQgPSBkOworfQorCitkb3VibGUgQWZmaW5lVHJhbnNmb3JtOjplKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV90cmFuc2Zvcm0udHg7CiB9CiAKLWRvdWJsZSBBZmZpbmVUcmFuc2Zv
cm06OmR5KCkgY29uc3QKK3ZvaWQgQWZmaW5lVHJhbnNmb3JtOjpzZXRFKGRvdWJsZSBlKQorewor
ICAgIG1fdHJhbnNmb3JtLnR4ID0gZTsKK30KKworZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6Zigp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHJhbnNmb3JtLnR5OwogfQogCit2b2lkIEFmZmluZVRy
YW5zZm9ybTo6c2V0Rihkb3VibGUgZikKK3sKKyAgICBtX3RyYW5zZm9ybS50eSA9IGY7Cit9CisK
IHZvaWQgQWZmaW5lVHJhbnNmb3JtOjpyZXNldCgpCiB7CiAgICAgbV90cmFuc2Zvcm0gPSBDR0Fm
ZmluZVRyYW5zZm9ybUlkZW50aXR5OwpAQCAtMTQyLDcgKzE3Miw3IEBAIGRvdWJsZSBBZmZpbmVU
cmFuc2Zvcm06OmRldCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdHJhbnNmb3JtLmEgKiBtX3RyYW5z
Zm9ybS5kIC0gbV90cmFuc2Zvcm0uYiAqIG1fdHJhbnNmb3JtLmM7CiB9CiAKLUFmZmluZVRyYW5z
Zm9ybSBBZmZpbmVUcmFuc2Zvcm06OmludmVydCgpIGNvbnN0CitBZmZpbmVUcmFuc2Zvcm0gQWZm
aW5lVHJhbnNmb3JtOjppbnZlcnNlKCkgY29uc3QKIHsKICAgICBpZiAoaXNJbnZlcnRpYmxlKCkp
CiAgICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oQ0dBZmZpbmVUcmFuc2Zvcm1JbnZlcnQo
bV90cmFuc2Zvcm0pKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvQWZmaW5l
VHJhbnNmb3JtUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvQWZmaW5lVHJhbnNmb3JtUXQuY3BwCShyZXZpc2lvbiAxODE3NikKKysrIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvQWZmaW5lVHJhbnNmb3JtUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03MSwzNiArNzEsNjYgQEAgYm9vbCBBZmZpbmVUcmFuc2Zvcm06OmlzSWRlbnRpdHkoKSBjb25z
dAogICAgIHJldHVybiBtX3RyYW5zZm9ybS5pc0lkZW50aXR5KCk7CiB9CiAKLWRvdWJsZSBBZmZp
bmVUcmFuc2Zvcm06Om0xMSgpIGNvbnN0Citkb3VibGUgQWZmaW5lVHJhbnNmb3JtOjphKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV90cmFuc2Zvcm0ubTExKCk7CiB9CiAKLWRvdWJsZSBBZmZpbmVU
cmFuc2Zvcm06Om0xMigpIGNvbnN0Cit2b2lkIEFmZmluZVRyYW5zZm9ybTo6c2V0QShkb3VibGUg
YSkKK3sKKyAgICBtX3RyYW5zZm9ybS5zZXRNYXRyaXgoYSwgYigpLCBjKCksIGQoKSwgZSgpLCBm
KCkpOworfQorCitkb3VibGUgQWZmaW5lVHJhbnNmb3JtOjpiKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV90cmFuc2Zvcm0ubTEyKCk7CiB9CiAKLWRvdWJsZSBBZmZpbmVUcmFuc2Zvcm06Om0yMSgp
IGNvbnN0Cit2b2lkIEFmZmluZVRyYW5zZm9ybTo6c2V0Qihkb3VibGUgYikKK3sKKyAgICBtX3Ry
YW5zZm9ybS5zZXRNYXRyaXgoYSgpLCBiLCBjKCksIGQoKSwgZSgpLCBmKCkpOworfQorCitkb3Vi
bGUgQWZmaW5lVHJhbnNmb3JtOjpjKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90cmFuc2Zvcm0u
bTIxKCk7CiB9CiAKLWRvdWJsZSBBZmZpbmVUcmFuc2Zvcm06Om0yMigpIGNvbnN0Cit2b2lkIEFm
ZmluZVRyYW5zZm9ybTo6c2V0Qyhkb3VibGUgYykKK3sKKyAgICBtX3RyYW5zZm9ybS5zZXRNYXRy
aXgoYSgpLCBiKCksIGMsIGQoKSwgZSgpLCBmKCkpOworfQorCitkb3VibGUgQWZmaW5lVHJhbnNm
b3JtOjpkKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90cmFuc2Zvcm0ubTIyKCk7CiB9CiAKLWRv
dWJsZSBBZmZpbmVUcmFuc2Zvcm06OmR4KCkgY29uc3QKK3ZvaWQgQWZmaW5lVHJhbnNmb3JtOjpz
ZXREKGRvdWJsZSBkKQoreworICAgIG1fdHJhbnNmb3JtLnNldE1hdHJpeChhKCksIGIoKSwgYygp
LCBkLCBlKCksIGYoKSk7Cit9CisKK2RvdWJsZSBBZmZpbmVUcmFuc2Zvcm06OmUoKSBjb25zdAog
ewogICAgIHJldHVybiBtX3RyYW5zZm9ybS5keCgpOwogfQogCi1kb3VibGUgQWZmaW5lVHJhbnNm
b3JtOjpkeSgpIGNvbnN0Cit2b2lkIEFmZmluZVRyYW5zZm9ybTo6c2V0RShkb3VibGUgZSkKK3sK
KyAgICBtX3RyYW5zZm9ybS5zZXRNYXRyaXgoYSgpLCBiKCksIGMoKSwgZCgpLCBlLCBmKCkpOwor
fQorCitkb3VibGUgQWZmaW5lVHJhbnNmb3JtOjpmKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90
cmFuc2Zvcm0uZHkoKTsKIH0KIAordm9pZCBBZmZpbmVUcmFuc2Zvcm06OnNldEYoZG91YmxlIGYp
Cit7CisgICAgbV90cmFuc2Zvcm0uc2V0TWF0cml4KGEoKSwgYigpLCBjKCksIGQoKSwgZSgpLCBm
KTsKK30KKwogdm9pZCBBZmZpbmVUcmFuc2Zvcm06OnJlc2V0KCkKIHsKICAgICBtX3RyYW5zZm9y
bS5yZXNldCgpOwpAQCAtMTM1LDcgKzE2NSw3IEBAIGRvdWJsZSBBZmZpbmVUcmFuc2Zvcm06OmRl
dCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdHJhbnNmb3JtLmRldCgpOwogfQogCi1BZmZpbmVUcmFu
c2Zvcm0gQWZmaW5lVHJhbnNmb3JtOjppbnZlcnQoKSBjb25zdAorQWZmaW5lVHJhbnNmb3JtIEFm
ZmluZVRyYW5zZm9ybTo6aW52ZXJzZSgpIGNvbnN0CiB7CiAgICAgaWYoIWlzSW52ZXJ0aWJsZSgp
KQogICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7CkluZGV4OiBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmNwcAkocmV2aXNpb24gMTgxNzYpCisrKyBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAs
NyArNjAsNyBAQCB2b2lkIFJlbmRlckZvcmVpZ25PYmplY3Q6OnBhaW50KFBhaW50SW5mCiAgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0LT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKG9wYWNpdHkpOwog
CiAgICAgUGFpbnRJbmZvIHBpKHBhaW50SW5mbyk7Ci0gICAgcGkucmVjdCA9IGFic29sdXRlVHJh
bnNmb3JtKCkuaW52ZXJ0KCkubWFwUmVjdChwYWludEluZm8ucmVjdCk7CisgICAgcGkucmVjdCA9
IGFic29sdXRlVHJhbnNmb3JtKCkuaW52ZXJzZSgpLm1hcFJlY3QocGFpbnRJbmZvLnJlY3QpOwog
ICAgIFJlbmRlckJsb2NrOjpwYWludChwaSwgMCwgMCk7CiAKICAgICBpZiAob3BhY2l0eSA8IDEu
MGYpCkBAIC0xMDcsNyArMTA3LDcgQEAgYm9vbCBSZW5kZXJGb3JlaWduT2JqZWN0Ojpub2RlQXRQ
b2ludChjbwogICAgIEFmZmluZVRyYW5zZm9ybSB0b3RhbFRyYW5zZm9ybSA9IGFic29sdXRlVHJh
bnNmb3JtKCk7CiAgICAgdG90YWxUcmFuc2Zvcm0gKj0gdHJhbnNsYXRpb25Gb3JBdHRyaWJ1dGVz
KCk7CiAgICAgZG91YmxlIGxvY2FsWCwgbG9jYWxZOwotICAgIHRvdGFsVHJhbnNmb3JtLmludmVy
dCgpLm1hcCh4LCB5LCAmbG9jYWxYLCAmbG9jYWxZKTsKKyAgICB0b3RhbFRyYW5zZm9ybS5pbnZl
cnNlKCkubWFwKHgsIHksICZsb2NhbFgsICZsb2NhbFkpOwogICAgIHJldHVybiBSZW5kZXJCbG9j
azo6bm9kZUF0UG9pbnQocmVxdWVzdCwgcmVzdWx0LCBzdGF0aWNfY2FzdDxpbnQ+KGxvY2FsWCks
IHN0YXRpY19jYXN0PGludD4obG9jYWxZKSwgdHgsIHR5LCBoaXRUZXN0QWN0aW9uKTsKIH0KIApJ
bmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUGF0aC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUGF0aC5jcHAJKHJldmlzaW9uIDE4MTc2KQorKysgV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUGF0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcg
QEAgRmxvYXRQb2ludCBSZW5kZXJQYXRoOjptYXBBYnNvbHV0ZVBvaW50VAogICAgIC8vIGFic29s
dXRlIHRyYW5zZm9ybT8gCiAgICAgZG91YmxlIGxvY2FsWDsKICAgICBkb3VibGUgbG9jYWxZOwot
ICAgIGFic29sdXRlVHJhbnNmb3JtKCkuaW52ZXJ0KCkubWFwKHBvaW50LngoKSwgcG9pbnQueSgp
LCAmbG9jYWxYLCAmbG9jYWxZKTsKKyAgICBhYnNvbHV0ZVRyYW5zZm9ybSgpLmludmVyc2UoKS5t
YXAocG9pbnQueCgpLCBwb2ludC55KCksICZsb2NhbFgsICZsb2NhbFkpOwogICAgIHJldHVybiBG
bG9hdFBvaW50KGxvY2FsWCwgbG9jYWxZKTsKIH0KIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU1ZHSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNWR0ltYWdlLmNwcAkocmV2aXNpb24gMTgxNzYpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTVkdJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFJl
bmRlclNWR0ltYWdlOjpwYWludChQYWludEluZm8mIHBhCiAgICAgfQogCiAgICAgUGFpbnRJbmZv
IHBpKHBhaW50SW5mbyk7Ci0gICAgcGkucmVjdCA9IGFic29sdXRlVHJhbnNmb3JtKCkuaW52ZXJ0
KCkubWFwUmVjdChwaS5yZWN0KTsKKyAgICBwaS5yZWN0ID0gYWJzb2x1dGVUcmFuc2Zvcm0oKS5p
bnZlcnNlKCkubWFwUmVjdChwaS5yZWN0KTsKIAogICAgIGludCB4ID0gMCwgeSA9IDA7CiAgICAg
aWYgKHNob3VsZFBhaW50KHBpLCB4LCB5KSkgewpAQCAtMTg4LDcgKzE4OCw3IEBAIGJvb2wgUmVu
ZGVyU1ZHSW1hZ2U6Om5vZGVBdFBvaW50KGNvbnN0IEgKICAgICBBZmZpbmVUcmFuc2Zvcm0gdG90
YWxUcmFuc2Zvcm0gPSBhYnNvbHV0ZVRyYW5zZm9ybSgpOwogICAgIHRvdGFsVHJhbnNmb3JtICo9
IHRyYW5zbGF0aW9uRm9yQXR0cmlidXRlcygpOwogICAgIGRvdWJsZSBsb2NhbFgsIGxvY2FsWTsK
LSAgICB0b3RhbFRyYW5zZm9ybS5pbnZlcnQoKS5tYXAoX3ggKyBfdHgsIF95ICsgX3R5LCAmbG9j
YWxYLCAmbG9jYWxZKTsKKyAgICB0b3RhbFRyYW5zZm9ybS5pbnZlcnNlKCkubWFwKF94ICsgX3R4
LCBfeSArIF90eSwgJmxvY2FsWCwgJmxvY2FsWSk7CiAgICAgcmV0dXJuIFJlbmRlckltYWdlOjpu
b2RlQXRQb2ludChyZXF1ZXN0LCByZXN1bHQsIChpbnQpbG9jYWxYLCAoaW50KWxvY2FsWSwgMCwg
MCwgaGl0VGVzdEFjdGlvbik7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNW
R1RleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1RleHQu
Y3BwCShyZXZpc2lvbiAxODE3NikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1RleHQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQgUmVuZGVyU1ZHVGV4dDo6
Y29tcHV0ZUFic29sdXRlUmVwYWkKICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gbG9j
YWxUcmFuc2Zvcm0oKTsKICAgICByID0gdHJhbnNmb3JtLm1hcFJlY3Qocik7CiAgICAgUmVuZGVy
Q29udGFpbmVyOjpjb21wdXRlQWJzb2x1dGVSZXBhaW50UmVjdChyLCBmKTsKLSAgICByID0gdHJh
bnNmb3JtLmludmVydCgpLm1hcFJlY3Qocik7CisgICAgciA9IHRyYW5zZm9ybS5pbnZlcnNlKCku
bWFwUmVjdChyKTsKIH0KIAogYm9vbCBSZW5kZXJTVkdUZXh0OjpyZXF1aXJlc0xheWVyKCkKQEAg
LTEwMCw3ICsxMDAsNyBAQCBib29sIFJlbmRlclNWR1RleHQ6Om5vZGVBdFBvaW50KGNvbnN0IEhp
CiB7CiAgICAgQWZmaW5lVHJhbnNmb3JtIHRvdGFsVHJhbnNmb3JtID0gYWJzb2x1dGVUcmFuc2Zv
cm0oKTsKICAgICBkb3VibGUgbG9jYWxYLCBsb2NhbFk7Ci0gICAgdG90YWxUcmFuc2Zvcm0uaW52
ZXJ0KCkubWFwKF94LCBfeSwgJmxvY2FsWCwgJmxvY2FsWSk7CisgICAgdG90YWxUcmFuc2Zvcm0u
aW52ZXJzZSgpLm1hcChfeCwgX3ksICZsb2NhbFgsICZsb2NhbFkpOwogICAgIHJldHVybiBSZW5k
ZXJCbG9jazo6bm9kZUF0UG9pbnQocmVxdWVzdCwgcmVzdWx0LCAoaW50KWxvY2FsWCwgKGludCls
b2NhbFksIF90eCwgX3R5LCBoaXRUZXN0QWN0aW9uKTsKIH0KIApAQCAtMTE3LDcgKzExNyw3IEBA
IHZvaWQgUmVuZGVyU1ZHVGV4dDo6YWJzb2x1dGVSZWN0cyhWZWN0b3IKIHZvaWQgUmVuZGVyU1ZH
VGV4dDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQogeyAgIAog
ICAgIFJlbmRlck9iamVjdDo6UGFpbnRJbmZvIHBpKHBhaW50SW5mbyk7Ci0gICAgcGkucmVjdCA9
IChhYnNvbHV0ZVRyYW5zZm9ybSgpKS5pbnZlcnQoKS5tYXBSZWN0KHBpLnJlY3QpOworICAgIHBp
LnJlY3QgPSAoYWJzb2x1dGVUcmFuc2Zvcm0oKSkuaW52ZXJzZSgpLm1hcFJlY3QocGkucmVjdCk7
CiAgICAgUmVuZGVyQmxvY2s6OnBhaW50KHBpLCB0eCwgdHkpOwogfQogCkluZGV4OiBXZWJDb3Jl
L3JlbmRlcmluZy9TVkdJbmxpbmVGbG93Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9TVkdJbmxpbmVGbG93Qm94LmNwcAkocmV2aXNpb24gMTgxNzYpCisrKyBXZWJDb3Jl
L3JlbmRlcmluZy9TVkdJbmxpbmVGbG93Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNyAr
ODAsNyBAQCB2b2lkIHBhaW50U1ZHSW5saW5lRmxvdyhJbmxpbmVGbG93Qm94KiBmCiAgICAgUmVu
ZGVyT2JqZWN0OjpQYWludEluZm8gcGkocGFpbnRJbmZvKTsKICAgICAKICAgICBpZiAoIWZsb3ct
PmlzUm9vdElubGluZUJveCgpKQotICAgICAgICBwaS5yZWN0ID0gKG9iamVjdC0+bG9jYWxUcmFu
c2Zvcm0oKSkuaW52ZXJ0KCkubWFwUmVjdChwaS5yZWN0KTsKKyAgICAgICAgcGkucmVjdCA9IChv
YmplY3QtPmxvY2FsVHJhbnNmb3JtKCkpLmludmVyc2UoKS5tYXBSZWN0KHBpLnJlY3QpOwogCiAg
ICAgZmxvYXQgb3BhY2l0eSA9IG9iamVjdC0+c3R5bGUoKS0+b3BhY2l0eSgpOwogICAgIGlmIChv
cGFjaXR5IDwgMS4wZikgewpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVyVHJlZUFz
VGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVyVHJlZUFz
VGV4dC5jcHAJKHJldmlzaW9uIDE4MTc2KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVy
VHJlZUFzVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NywxMSArMTQ3LDExIEBAIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGMKIHsKICAgICBpZiAobS5pc0lkZW50
aXR5KCkpCiAgICAgICAgIHRzIDw8ICJpZGVudGl0eSI7Ci0gICAgZWxzZSAKLSAgICB7Ci0gICAg
ICAgIHRzIDw8ICJ7bT0oKCIgPDwgbS5tMTEoKSA8PCAiLCIgPDwgbS5tMTIoKSA8PCAiKSgiIDw8
IG0ubTIxKCkgPDwgIiwiIDw8IG0ubTIyKCkgPDwgIikpIjsKLSAgICAgICAgdHMgPDwgIiB0PSgi
IDw8IG0uZHgoKSA8PCAiLCIgPDwgbS5keSgpIDw8ICIpfSI7CisgICAgZWxzZSB7CisgICAgICAg
IHRzIDw8ICJ7bT0oKCIgPDwgbS5hKCkgPDwgIiwiIDw8IG0uYigpIDw8ICIpKCIgPDwgbS5jKCkg
PDwgIiwiIDw8IG0uZCgpIDw8ICIpKSI7CisgICAgICAgIHRzIDw8ICIgdD0oIiA8PCBtLmUoKSA8
PCAiLCIgPDwgbS5mKCkgPDwgIil9IjsKICAgICB9CisKICAgICByZXR1cm4gdHM7CiB9CiAK
</data>
<flag name="review"
          id="4290"
          type_id="1"
          status="+"
          setter="rwlbuis"
    />
          </attachment>
      

    </bug>

</bugzilla>