<?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>23689</bug_id>
          
          <creation_ts>2009-02-02 12:21:06 -0800</creation_ts>
          <short_desc>Add support for 3D to TransformationMatrix and WebKitCSSMatrix</short_desc>
          <delta_ts>2009-02-09 21:22:20 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>6868</dependson>
          <blocked>23359</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Marrin">cmarrin</reporter>
          <assigned_to name="Chris Marrin">cmarrin</assigned_to>
          <cc>dino</cc>
    
    <cc>gilles</cc>
    
    <cc>ml</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>107997</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2009-02-02 12:21:06 -0800</bug_when>
    <thetext>The current CSS Transform proposal specifies 3D functions in WebKitCSSMatrix. In talking to Darin, he sees no problem having this 3D support in WebKit separately from support of 3D transforms in CSS.

Here is a link to the 2D version (which is currently in TOT):
 
    http://webkit.org/specs/CSSVisualEffects/CSSTransforms.html#cssmatrix-interface

and here is a link to the 3D version:

    http://webkit.org/specs/CSSVisualEffects/CSSTransforms3D.html#cssmatrix-interface

Attached is a composite IDL encompassing the functionality of both. I believe we will replace the two in the current specs with this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107998</commentid>
    <comment_count>1</comment_count>
      <attachid>27253</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2009-02-02 12:22:12 -0800</bug_when>
    <thetext>Created attachment 27253
IDL of composite 2D/3D CSSMatrix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108643</commentid>
    <comment_count>2</comment_count>
      <attachid>27401</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2009-02-06 09:51:23 -0800</bug_when>
    <thetext>Created attachment 27401
Patch

        Added 3D functions to WebKitCSSMatrix. This depends on the 3D functions
        added to TransformationMatrix in https://bugs.webkit.org/show_bug.cgi?id=6868</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108995</commentid>
    <comment_count>3</comment_count>
      <attachid>27401</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-02-09 10:59:41 -0800</bug_when>
    <thetext>Comment on attachment 27401
Patch

&gt; Index: WebCore/ChangeLog
&gt; ===================================================================

&gt; +        * css/WebKitCSSMatrix.cpp:
&gt; +        (WebCore::WebKitCSSMatrix::translate):
&gt; +        (WebCore::WebKitCSSMatrix::scale):
&gt; +        (WebCore::WebKitCSSMatrix::rotate):
&gt; +        (WebCore::WebKitCSSMatrix::rotateAxisAngle):
&gt; +        (WebCore::WebKitCSSMatrix::toString):
&gt; +        * css/WebKitCSSMatrix.h:
&gt; +        (WebCore::WebKitCSSMatrix::a):
&gt; +        (WebCore::WebKitCSSMatrix::b):
&gt; +        (WebCore::WebKitCSSMatrix::c):
&gt; +        (WebCore::WebKitCSSMatrix::d):
&gt; +        (WebCore::WebKitCSSMatrix::e):
...

It&apos;s OK to remove useless lines from the changes files/functions list when they don&apos;t add
any useful info.

&gt; Index: WebCore/css/WebKitCSSMatrix.cpp
&gt; ===================================================================

&gt; +PassRefPtr&lt;WebKitCSSMatrix&gt; WebKitCSSMatrix::translate(double x, double y, double z)
&gt;  {
&gt; +    // Passing a NaN (or undefined in JavaScript) will use default values
&gt; +    // This allows the 3D form to used for 2D operations

This comment should be in the header, and maybe the idl?

&gt;      if (isnan(x))
&gt;          x = 0; 

Does isnan() work on all platforms?

&gt; +    if (isnan(z))
&gt; +        z = 0;
&gt; +    return WebKitCSSMatrix::create(m_matrix.translate3d(x, y, z));

This seems wrong; it will change |this|.

&gt; +    // Passing a NaN (or undefined in JavaScript) will use default values
&gt; +    // This allows the 3D form to used for 2D operations
&gt; +    // In the case of scale, passing scaleX or scaleZ as NaN uses 1, but
&gt; +    // scaleY of NaN makes it the same as scaleX

Ditto.



&gt; +    // Passing a NaN (or undefined in JavaScript) will use default values
&gt; +    // This allows the 3D form to used for 2D operations
&gt; +    // In the case of rotate, if rotY and rotZ are NaN, it rotates about Z.
&gt; +    // Otherwise use a rotation value of 0.

Ditto.

&gt;  String WebKitCSSMatrix::toString()
&gt;  {
&gt; -    return String::format(&quot;matrix(%f, %f, %f, %f, %f, %f)&quot;,
&gt; -                            m_matrix.a(), m_matrix.b(), m_matrix.c(), m_matrix.d(), m_matrix.e(), m_matrix.f());
&gt; +    if (m_matrix.isAffine())
&gt; +        return String::format(&quot;matrix(%f, %f, %f, %f, %f, %f)&quot;,
&gt; +                                m_matrix.a(), m_matrix.b(), m_matrix.c(), m_matrix.d(), m_matrix.e(), m_matrix.f());
&gt; +    else
&gt; +        return String::format(&quot;matrix3d(%f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f)&quot;,
&gt; +                                m_matrix.m11(), m_matrix.m12(), m_matrix.m13(), m_matrix.m14(), 
&gt; +                                m_matrix.m21(), m_matrix.m22(), m_matrix.m23(), m_matrix.m24(), 
&gt; +                                m_matrix.m31(), m_matrix.m32(), m_matrix.m33(), m_matrix.m34(), 
&gt; +                                m_matrix.m41(), m_matrix.m42(), m_matrix.m43(), m_matrix.m44());
&gt;  }

Please add a FIXME comment pointing to  https://bugs.webkit.org/show_bug.cgi?id=20674


&gt; Index: WebCore/css/WebKitCSSMatrix.h
&gt; ===================================================================

&gt;      void setMatrixValue(const String&amp; string, ExceptionCode&amp;);
&gt;      
&gt;      // this = this * secondMatrix
&gt;      PassRefPtr&lt;WebKitCSSMatrix&gt; multiply(WebKitCSSMatrix* secondMatrix);
&gt;      

&gt;      PassRefPtr&lt;WebKitCSSMatrix&gt; inverse(ExceptionCode&amp;);
&gt; -    PassRefPtr&lt;WebKitCSSMatrix&gt; translate(float x, float y);
&gt; -    PassRefPtr&lt;WebKitCSSMatrix&gt; scale(float scaleX, float scaleY);
&gt; -    PassRefPtr&lt;WebKitCSSMatrix&gt; rotate(float rot);
&gt; +    PassRefPtr&lt;WebKitCSSMatrix&gt; translate(double x, double y, double z);
&gt; +    PassRefPtr&lt;WebKitCSSMatrix&gt; scale(double scaleX, double scaleY, double scaleZ);
&gt; +    PassRefPtr&lt;WebKitCSSMatrix&gt; rotate(double rotX, double rotY, double rotZ);
&gt; +    PassRefPtr&lt;WebKitCSSMatrix&gt; rotateAxisAngle(double x, double y, double z, double angle);

I&apos;d like to more comments here (in particular, being very clear about the order of operations,
on |this| being modified, and on what the return value points to.

&gt; Index: WebCore/css/WebKitCSSMatrix.idl
&gt; ===================================================================

&gt; +        attribute double a;
...
&gt; +        attribute double m11;

Needs a comment explaining why both a-f and m11-m44 are exposed, and what 
a-f contain when the matrix has 3d in it.


&gt; +        void setMatrixValue(in DOMString string) raises (DOMException);
&gt;          WebKitCSSMatrix multiply(in WebKitCSSMatrix secondMatrix);
&gt;          WebKitCSSMatrix inverse() raises (DOMException);
&gt; -        WebKitCSSMatrix translate(in float x, in float y);
&gt; -        WebKitCSSMatrix scale(in float scaleX, in float scaleY);
&gt; -        WebKitCSSMatrix rotate(in float rot);
&gt; +        WebKitCSSMatrix translate(in double x, in double y, in double z);
&gt; +        WebKitCSSMatrix scale(in double scaleX, in double scaleY, in double scaleZ);
&gt; +        WebKitCSSMatrix rotate(in double rotX, in double rotY, in double rotZ);
&gt; +        WebKitCSSMatrix rotateAxisAngle(in double x, in double y, in double z, in double angle);
&gt;          
&gt;          [DontEnum] DOMString toString();

These need copious comments for the documentation folks.
Should use [Immutable].
Should make the order of operations very clear.

Before making this wholesale float -&gt; double conversion, we need to find out if it&apos;s OK.

&gt; Index: LayoutTests/ChangeLog
&gt; ===================================================================

&gt; +        Since the CSS parser does not yet handle any of the 3D
&gt; +        functions for -webkit-transform, tests for these features
&gt; +        are currently commented out.

Don&apos;t talk about future features. Just say that these are tests for
3D functionality of CSSMatrix.

&gt; Index: LayoutTests/transforms/3d/cssmatrix-3d-interface.xhtml
&gt; ===================================================================

We should also test
* the immutability of CSSMatrix
* order of operations
* round-tripping through a string (as far as we can).

r- for now, as I think we have a bit of research to do before this can land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108998</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-02-09 11:14:10 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Does isnan() work on all platforms?

I believe it does as long as you include &lt;wtf/MathExtras.h&gt;, not just &lt;math.h&gt;.

Also, no else after return.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109069</commentid>
    <comment_count>5</comment_count>
      <attachid>27509</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2009-02-09 17:56:13 -0800</bug_when>
    <thetext>Created attachment 27509
Replacement patch

Replacement patch addressing all issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109071</commentid>
    <comment_count>6</comment_count>
      <attachid>27510</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2009-02-09 17:58:02 -0800</bug_when>
    <thetext>Created attachment 27510
Replacement patch addressing one more issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109075</commentid>
    <comment_count>7</comment_count>
      <attachid>27510</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-02-09 18:05:31 -0800</bug_when>
    <thetext>Comment on attachment 27510
Replacement patch addressing one more issue

&gt; Index: WebCore/css/WebKitCSSMatrix.cpp
&gt; ===================================================================

&gt; +PassRefPtr&lt;WebKitCSSMatrix&gt; WebKitCSSMatrix::multiply(WebKitCSSMatrix* secondMatrix) const
&gt;  {
&gt;      TransformationMatrix tmp(m_matrix);
&gt;      tmp.multiply(secondMatrix-&gt;m_matrix);

We should probably null-check secondMatrix here.

r=me with that fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109088</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-02-09 21:22:20 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	LayoutTests/ChangeLog
	M	LayoutTests/transforms/2d/cssmatrix-interface-expected.txt
	M	LayoutTests/transforms/2d/cssmatrix-interface.xhtml
	M	WebCore/ChangeLog
	M	WebCore/css/WebKitCSSMatrix.cpp
	M	WebCore/css/WebKitCSSMatrix.h
	M	WebCore/css/WebKitCSSMatrix.idl
Committed r40807
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>27253</attachid>
            <date>2009-02-02 12:22:12 -0800</date>
            <delta_ts>2009-02-02 12:22:12 -0800</delta_ts>
            <desc>IDL of composite 2D/3D CSSMatrix</desc>
            <filename>WebKitCSSMatrix.idl</filename>
            <type>text/plain</type>
            <size>2632</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">LyoKICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
ICoKICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwogKiBhcmUgbWV0OgogKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCiAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
ICoKICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCiAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgogKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgogKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAogKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CiAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAogKi8KCm1vZHVsZSBjc3MgewoKICAgIC8vIEludHJvZHVjZWQgaW4g
RE9NIExldmVsID86CiAgICBpbnRlcmZhY2UgV2ViS2l0Q1NTTWF0cml4IHsKCiAgICAgICAgYXR0
cmlidXRlIGZsb2F0IGE7CiAgICAgICAgYXR0cmlidXRlIGZsb2F0IGI7CiAgICAgICAgYXR0cmli
dXRlIGZsb2F0IGM7CiAgICAgICAgYXR0cmlidXRlIGZsb2F0IGQ7CiAgICAgICAgYXR0cmlidXRl
IGZsb2F0IGU7CiAgICAgICAgYXR0cmlidXRlIGZsb2F0IGY7CgogICAgICAgIGF0dHJpYnV0ZSBm
bG9hdCBtMTE7CiAgICAgICAgYXR0cmlidXRlIGZsb2F0IG0xMjsKICAgICAgICBhdHRyaWJ1dGUg
ZmxvYXQgbTEzOwogICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBtMTQ7CiAgICAgICAgYXR0cmlidXRl
IGZsb2F0IG0yMTsKICAgICAgICBhdHRyaWJ1dGUgZmxvYXQgbTIyOwogICAgICAgIGF0dHJpYnV0
ZSBmbG9hdCBtMjM7CiAgICAgICAgYXR0cmlidXRlIGZsb2F0IG0yNDsKICAgICAgICBhdHRyaWJ1
dGUgZmxvYXQgbTMxOwogICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBtMzI7CiAgICAgICAgYXR0cmli
dXRlIGZsb2F0IG0zMzsKICAgICAgICBhdHRyaWJ1dGUgZmxvYXQgbTM0OwogICAgICAgIGF0dHJp
YnV0ZSBmbG9hdCBtNDE7CiAgICAgICAgYXR0cmlidXRlIGZsb2F0IG00MjsKICAgICAgICBhdHRy
aWJ1dGUgZmxvYXQgbTQzOwogICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBtNDQ7CgogICAgICAgIHZv
aWQgICAgICAgICAgICBzZXRNYXRyaXhWYWx1ZShpbiBET01TdHJpbmcgc3RyaW5nKSByYWlzZXMg
KERPTUV4Y2VwdGlvbik7CiAgICAgICAgV2ViS2l0Q1NTTWF0cml4IG11bHRpcGx5KGluIFdlYktp
dENTU01hdHJpeCBzZWNvbmRNYXRyaXgpOwogICAgICAgIFdlYktpdENTU01hdHJpeCBpbnZlcnNl
KCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgIFdlYktpdENTU01hdHJpeCB0cmFuc2xh
dGUoaW4gZmxvYXQgeCwgaW4gZmxvYXQgeSwgaW4gZmxvYXQgeik7CiAgICAgICAgV2ViS2l0Q1NT
TWF0cml4IHNjYWxlKGluIGZsb2F0IHNjYWxlWCwgaW4gZmxvYXQgc2NhbGVZLCBpbiBmbG9hdCBz
Y2FsZVopOwogICAgICAgIFdlYktpdENTU01hdHJpeCByb3RhdGUoaW4gZmxvYXQgcm90WCwgaW4g
ZmxvYXQgcm90WSwgaW4gZmxvYXQgcm90Wik7CiAgICAgICAgV2ViS2l0Q1NTTWF0cml4IHJvdGF0
ZUF4aXNBbmdsZShpbiBmbG9hdCB4LCBpbiBmbG9hdCB5LCBpbiBmbG9hdCB6LCBpbiBmbG9hdCBh
bmdsZSk7CiAgICAgICAgCiAgICAgICAgW0RvbnRFbnVtXSBET01TdHJpbmcgdG9TdHJpbmcoKTsK
ICAgIH07Cgp9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27401</attachid>
            <date>2009-02-06 09:51:23 -0800</date>
            <delta_ts>2009-02-09 17:56:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>23689.patch</filename>
            <type>text/plain</type>
            <size>28378</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MDcyMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjcgQEAKKzIwMDktMDItMDYgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY4OQorCisgICAgICAgIEFk
ZGVkIDNEIGZ1bmN0aW9ucyB0byBXZWJLaXRDU1NNYXRyaXguIFRoaXMgZGVwZW5kcyBvbiB0aGUg
M0QgZnVuY3Rpb25zCisgICAgICAgIGFkZGVkIHRvIFRyYW5zZm9ybWF0aW9uTWF0cml4IGluIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODY4CisKKyAgICAgICAgVGVz
dDogdHJhbnNmb3Jtcy8zZC9jc3NtYXRyaXgtM2QtaW50ZXJmYWNlLnhodG1sCisKKyAgICAgICAg
KiBjc3MvV2ViS2l0Q1NTTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU01h
dHJpeDo6dHJhbnNsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU01hdHJpeDo6c2Nh
bGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4Ojpyb3RhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4Ojpyb3RhdGVBeGlzQW5nbGUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4Ojp0b1N0cmluZyk6CisgICAgICAgICogY3NzL1dlYktp
dENTU01hdHJpeC5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4OjphKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdENTU01hdHJpeDo6Yik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJLaXRDU1NNYXRyaXg6OmMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4Ojpk
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU01hdHJpeDo6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJLaXRDU1NNYXRyaXg6OmYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0
cml4OjpzZXRBKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU01hdHJpeDo6c2V0Qik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NNYXRyaXg6OnNldEMpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViS2l0Q1NTTWF0cml4OjpzZXREKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU01h
dHJpeDo6c2V0RSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NNYXRyaXg6OnNldEYpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4OjptMTEpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViS2l0Q1NTTWF0cml4OjptMTIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0
cml4OjptMTMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4OjptMTQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4OjptMjEpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViS2l0Q1NTTWF0cml4OjptMjIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4
OjptMjMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4OjptMjQpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4OjptMzEpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
S2l0Q1NTTWF0cml4OjptMzIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4Ojpt
MzMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4OjptMzQpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4OjptNDEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0
Q1NTTWF0cml4OjptNDIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4OjptNDMp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4OjptNDQpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViS2l0Q1NTTWF0cml4OjpzZXRNMTEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0
Q1NTTWF0cml4OjpzZXRNMTIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4Ojpz
ZXRNMTMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4OjpzZXRNMTQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4OjpzZXRNMjEpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViS2l0Q1NTTWF0cml4OjpzZXRNMjIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NT
TWF0cml4OjpzZXRNMjMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4OjpzZXRN
MjQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4OjpzZXRNMzEpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4OjpzZXRNMzIpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViS2l0Q1NTTWF0cml4OjpzZXRNMzMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0
cml4OjpzZXRNMzQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4OjpzZXRNNDEp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4OjpzZXRNNDIpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4OjpzZXRNNDMpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
S2l0Q1NTTWF0cml4OjpzZXRNNDQpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NNYXRyaXguaWRs
OgorCiAyMDA5LTAyLTA2ICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCkluZGV4OiBXZWJDb3JlL2Nzcy9XZWJLaXRD
U1NNYXRyaXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5j
cHAJKHJldmlzaW9uIDQwNjk4KQorKysgV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTEwLDM1ICsxMTAsODIgQEAgUGFzc1JlZlB0cjxXZWJLaXRDU1NN
YXRyaXg+IFdlYktpdENTU01hdAogICAgIHJldHVybiBXZWJLaXRDU1NNYXRyaXg6OmNyZWF0ZSht
X21hdHJpeC5pbnZlcnNlKCkpOwogfQogCi1QYXNzUmVmUHRyPFdlYktpdENTU01hdHJpeD4gV2Vi
S2l0Q1NTTWF0cml4Ojp0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSkKK1Bhc3NSZWZQdHI8V2Vi
S2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6OnRyYW5zbGF0ZShkb3VibGUgeCwgZG91Ymxl
IHksIGRvdWJsZSB6KQogeworICAgIC8vIFBhc3NpbmcgYSBOYU4gKG9yIHVuZGVmaW5lZCBpbiBK
YXZhU2NyaXB0KSB3aWxsIHVzZSBkZWZhdWx0IHZhbHVlcworICAgIC8vIFRoaXMgYWxsb3dzIHRo
ZSAzRCBmb3JtIHRvIHVzZWQgZm9yIDJEIG9wZXJhdGlvbnMKICAgICBpZiAoaXNuYW4oeCkpCiAg
ICAgICAgIHggPSAwOyAKICAgICBpZiAoaXNuYW4oeSkpCiAgICAgICAgIHkgPSAwOyAKLSAgICBy
ZXR1cm4gV2ViS2l0Q1NTTWF0cml4OjpjcmVhdGUobV9tYXRyaXgudHJhbnNsYXRlKHgsIHkpKTsK
KyAgICBpZiAoaXNuYW4oeikpCisgICAgICAgIHogPSAwOworICAgIHJldHVybiBXZWJLaXRDU1NN
YXRyaXg6OmNyZWF0ZShtX21hdHJpeC50cmFuc2xhdGUzZCh4LCB5LCB6KSk7CiB9CiAKLVBhc3NS
ZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6OnNjYWxlKGZsb2F0IHNjYWxl
WCwgZmxvYXQgc2NhbGVZKQorUGFzc1JlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01h
dHJpeDo6c2NhbGUoZG91YmxlIHNjYWxlWCwgZG91YmxlIHNjYWxlWSwgZG91YmxlIHNjYWxlWikK
IHsKKyAgICAvLyBQYXNzaW5nIGEgTmFOIChvciB1bmRlZmluZWQgaW4gSmF2YVNjcmlwdCkgd2ls
bCB1c2UgZGVmYXVsdCB2YWx1ZXMKKyAgICAvLyBUaGlzIGFsbG93cyB0aGUgM0QgZm9ybSB0byB1
c2VkIGZvciAyRCBvcGVyYXRpb25zCisgICAgLy8gSW4gdGhlIGNhc2Ugb2Ygc2NhbGUsIHBhc3Np
bmcgc2NhbGVYIG9yIHNjYWxlWiBhcyBOYU4gdXNlcyAxLCBidXQKKyAgICAvLyBzY2FsZVkgb2Yg
TmFOIG1ha2VzIGl0IHRoZSBzYW1lIGFzIHNjYWxlWAogICAgIGlmIChpc25hbihzY2FsZVgpKQog
ICAgICAgICBzY2FsZVggPSAxOyAKICAgICBpZiAoaXNuYW4oc2NhbGVZKSkKICAgICAgICAgc2Nh
bGVZID0gc2NhbGVYOyAKLSAgICByZXR1cm4gV2ViS2l0Q1NTTWF0cml4OjpjcmVhdGUobV9tYXRy
aXguc2NhbGUoc2NhbGVYLHNjYWxlWSkpOworICAgIGlmIChpc25hbihzY2FsZVopKQorICAgICAg
ICBzY2FsZVogPSAxOyAKKyAgICByZXR1cm4gV2ViS2l0Q1NTTWF0cml4OjpjcmVhdGUobV9tYXRy
aXguc2NhbGUzZChzY2FsZVgsIHNjYWxlWSwgc2NhbGVaKSk7CiB9CiAKLVBhc3NSZWZQdHI8V2Vi
S2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6OnJvdGF0ZShmbG9hdCByb3QpCitQYXNzUmVm
UHRyPFdlYktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4Ojpyb3RhdGUoZG91YmxlIHJvdFgs
IGRvdWJsZSByb3RZLCBkb3VibGUgcm90WikKIHsKLSAgICBpZiAoaXNuYW4ocm90KSkKLSAgICAg
ICAgcm90ID0gMDsKLSAgICByZXR1cm4gV2ViS2l0Q1NTTWF0cml4OjpjcmVhdGUobV9tYXRyaXgu
cm90YXRlKHJvdCkpOworICAgIC8vIFBhc3NpbmcgYSBOYU4gKG9yIHVuZGVmaW5lZCBpbiBKYXZh
U2NyaXB0KSB3aWxsIHVzZSBkZWZhdWx0IHZhbHVlcworICAgIC8vIFRoaXMgYWxsb3dzIHRoZSAz
RCBmb3JtIHRvIHVzZWQgZm9yIDJEIG9wZXJhdGlvbnMKKyAgICAvLyBJbiB0aGUgY2FzZSBvZiBy
b3RhdGUsIGlmIHJvdFkgYW5kIHJvdFogYXJlIE5hTiwgaXQgcm90YXRlcyBhYm91dCBaLgorICAg
IC8vIE90aGVyd2lzZSB1c2UgYSByb3RhdGlvbiB2YWx1ZSBvZiAwLgorICAgIGlmIChpc25hbihy
b3RYKSkKKyAgICAgICAgcm90WCA9IDA7IAorICAgICAgICAKKyAgICBpZiAoaXNuYW4ocm90WSkg
JiYgaXNuYW4ocm90WikpIHsKKyAgICAgICAgcm90WiA9IHJvdFg7CisgICAgICAgIHJvdFggPSAw
OworICAgICAgICByb3RZID0gMDsKKyAgICB9CisKKyAgICBpZiAoaXNuYW4ocm90WSkpCisgICAg
ICAgIHJvdFkgPSAwOyAKKyAgICBpZiAoaXNuYW4ocm90WikpCisgICAgICAgIHJvdFogPSAwOyAK
KyAgICByZXR1cm4gV2ViS2l0Q1NTTWF0cml4OjpjcmVhdGUobV9tYXRyaXgucm90YXRlM2Qocm90
WCwgcm90WSwgcm90WikpOworfQorCitQYXNzUmVmUHRyPFdlYktpdENTU01hdHJpeD4gV2ViS2l0
Q1NTTWF0cml4Ojpyb3RhdGVBeGlzQW5nbGUoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgeiwg
ZG91YmxlIGFuZ2xlKQoreworICAgIGlmIChpc25hbih4KSkKKyAgICAgICAgeCA9IDA7CisgICAg
aWYgKGlzbmFuKHkpKQorICAgICAgICB5ID0gMDsKKyAgICBpZiAoaXNuYW4oeikpCisgICAgICAg
IHogPSAwOworICAgIGlmIChpc25hbihhbmdsZSkpCisgICAgICAgIGFuZ2xlID0gMDsKKyAgICBp
ZiAoeCA9PSAwICYmIHkgPT0gMCAmJiB6ID09IDApCisgICAgICAgIHogPSAxOworICAgIHJldHVy
biBXZWJLaXRDU1NNYXRyaXg6OmNyZWF0ZShtX21hdHJpeC5yb3RhdGUzZCh4LCB5LCB6LCBhbmds
ZSkpOwogfQogCiBTdHJpbmcgV2ViS2l0Q1NTTWF0cml4Ojp0b1N0cmluZygpCiB7Ci0gICAgcmV0
dXJuIFN0cmluZzo6Zm9ybWF0KCJtYXRyaXgoJWYsICVmLCAlZiwgJWYsICVmLCAlZikiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fbWF0cml4LmEoKSwgbV9tYXRyaXguYigpLCBtX21h
dHJpeC5jKCksIG1fbWF0cml4LmQoKSwgbV9tYXRyaXguZSgpLCBtX21hdHJpeC5mKCkpOworICAg
IGlmIChtX21hdHJpeC5pc0FmZmluZSgpKQorICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQo
Im1hdHJpeCglZiwgJWYsICVmLCAlZiwgJWYsICVmKSIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fbWF0cml4LmEoKSwgbV9tYXRyaXguYigpLCBtX21hdHJpeC5jKCksIG1fbWF0
cml4LmQoKSwgbV9tYXRyaXguZSgpLCBtX21hdHJpeC5mKCkpOworICAgIGVsc2UKKyAgICAgICAg
cmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJtYXRyaXgzZCglZiwgJWYsICVmLCAlZiwgJWYsICVmLCAl
ZiwgJWYsICVmLCAlZiwgJWYsICVmLCAlZiwgJWYsICVmLCAlZikiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX21hdHJpeC5tMTEoKSwgbV9tYXRyaXgubTEyKCksIG1fbWF0cml4
Lm0xMygpLCBtX21hdHJpeC5tMTQoKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fbWF0cml4Lm0yMSgpLCBtX21hdHJpeC5tMjIoKSwgbV9tYXRyaXgubTIzKCksIG1fbWF0cml4
Lm0yNCgpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9tYXRyaXgubTMxKCks
IG1fbWF0cml4Lm0zMigpLCBtX21hdHJpeC5tMzMoKSwgbV9tYXRyaXgubTM0KCksIAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX21hdHJpeC5tNDEoKSwgbV9tYXRyaXgubTQyKCks
IG1fbWF0cml4Lm00MygpLCBtX21hdHJpeC5tNDQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFdlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5oCShyZXZpc2lvbiA0MDY5OCkKKysrIFdlYkNv
cmUvY3NzL1dlYktpdENTU01hdHJpeC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSwzMCArNTUsNjQg
QEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgfldlYktpdENTU01hdHJpeCgpOwogCi0gICAg
ZmxvYXQgYSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtX21hdHJpeC5hKCkp
OyB9Ci0gICAgZmxvYXQgYigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtX21h
dHJpeC5iKCkpOyB9Ci0gICAgZmxvYXQgYygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGZs
b2F0PihtX21hdHJpeC5jKCkpOyB9Ci0gICAgZmxvYXQgZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PGZsb2F0PihtX21hdHJpeC5kKCkpOyB9Ci0gICAgZmxvYXQgZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtX21hdHJpeC5lKCkpOyB9Ci0gICAgZmxvYXQgZigpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtX21hdHJpeC5mKCkpOyB9Ci0gICAgCi0g
ICAgdm9pZCBzZXRBKGZsb2F0IGYpIHsgbV9tYXRyaXguc2V0QShmKTsgfQotICAgIHZvaWQgc2V0
QihmbG9hdCBmKSB7IG1fbWF0cml4LnNldEIoZik7IH0KLSAgICB2b2lkIHNldEMoZmxvYXQgZikg
eyBtX21hdHJpeC5zZXRDKGYpOyB9Ci0gICAgdm9pZCBzZXREKGZsb2F0IGYpIHsgbV9tYXRyaXgu
c2V0RChmKTsgfQotICAgIHZvaWQgc2V0RShmbG9hdCBmKSB7IG1fbWF0cml4LnNldEUoZik7IH0K
LSAgICB2b2lkIHNldEYoZmxvYXQgZikgeyBtX21hdHJpeC5zZXRGKGYpOyB9CisgICAgZG91Ymxl
IGEoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeC5hKCk7IH0KKyAgICBkb3VibGUgYigpIGNvbnN0
IHsgcmV0dXJuIG1fbWF0cml4LmIoKTsgfQorICAgIGRvdWJsZSBjKCkgY29uc3QgeyByZXR1cm4g
bV9tYXRyaXguYygpOyB9CisgICAgZG91YmxlIGQoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeC5k
KCk7IH0KKyAgICBkb3VibGUgZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4LmUoKTsgfQorICAg
IGRvdWJsZSBmKCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXguZigpOyB9CisgICAgCisgICAgdm9p
ZCBzZXRBKGRvdWJsZSBmKSB7IG1fbWF0cml4LnNldEEoZik7IH0KKyAgICB2b2lkIHNldEIoZG91
YmxlIGYpIHsgbV9tYXRyaXguc2V0QihmKTsgfQorICAgIHZvaWQgc2V0Qyhkb3VibGUgZikgeyBt
X21hdHJpeC5zZXRDKGYpOyB9CisgICAgdm9pZCBzZXREKGRvdWJsZSBmKSB7IG1fbWF0cml4LnNl
dEQoZik7IH0KKyAgICB2b2lkIHNldEUoZG91YmxlIGYpIHsgbV9tYXRyaXguc2V0RShmKTsgfQor
ICAgIHZvaWQgc2V0Rihkb3VibGUgZikgeyBtX21hdHJpeC5zZXRGKGYpOyB9CisgCisgICAgZG91
YmxlIG0xMSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4Lm0xMSgpOyB9CisgICAgZG91YmxlIG0x
MigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4Lm0xMigpOyB9CisgICAgZG91YmxlIG0xMygpIGNv
bnN0IHsgcmV0dXJuIG1fbWF0cml4Lm0xMygpOyB9CisgICAgZG91YmxlIG0xNCgpIGNvbnN0IHsg
cmV0dXJuIG1fbWF0cml4Lm0xNCgpOyB9CisgICAgZG91YmxlIG0yMSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWF0cml4Lm0yMSgpOyB9CisgICAgZG91YmxlIG0yMigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0
cml4Lm0yMigpOyB9CisgICAgZG91YmxlIG0yMygpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4Lm0y
MygpOyB9CisgICAgZG91YmxlIG0yNCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4Lm0yNCgpOyB9
CisgICAgZG91YmxlIG0zMSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4Lm0zMSgpOyB9CisgICAg
ZG91YmxlIG0zMigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4Lm0zMigpOyB9CisgICAgZG91Ymxl
IG0zMygpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4Lm0zMygpOyB9CisgICAgZG91YmxlIG0zNCgp
IGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4Lm0zNCgpOyB9CisgICAgZG91YmxlIG00MSgpIGNvbnN0
IHsgcmV0dXJuIG1fbWF0cml4Lm00MSgpOyB9CisgICAgZG91YmxlIG00MigpIGNvbnN0IHsgcmV0
dXJuIG1fbWF0cml4Lm00MigpOyB9CisgICAgZG91YmxlIG00MygpIGNvbnN0IHsgcmV0dXJuIG1f
bWF0cml4Lm00MygpOyB9CisgICAgZG91YmxlIG00NCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4
Lm00NCgpOyB9CisgICAgCisgICAgdm9pZCBzZXRNMTEoZG91YmxlIGYpIHsgbV9tYXRyaXguc2V0
TTExKGYpOyB9CisgICAgdm9pZCBzZXRNMTIoZG91YmxlIGYpIHsgbV9tYXRyaXguc2V0TTEyKGYp
OyB9CisgICAgdm9pZCBzZXRNMTMoZG91YmxlIGYpIHsgbV9tYXRyaXguc2V0TTEzKGYpOyB9Cisg
ICAgdm9pZCBzZXRNMTQoZG91YmxlIGYpIHsgbV9tYXRyaXguc2V0TTE0KGYpOyB9CisgICAgdm9p
ZCBzZXRNMjEoZG91YmxlIGYpIHsgbV9tYXRyaXguc2V0TTIxKGYpOyB9CisgICAgdm9pZCBzZXRN
MjIoZG91YmxlIGYpIHsgbV9tYXRyaXguc2V0TTIyKGYpOyB9CisgICAgdm9pZCBzZXRNMjMoZG91
YmxlIGYpIHsgbV9tYXRyaXguc2V0TTIzKGYpOyB9CisgICAgdm9pZCBzZXRNMjQoZG91YmxlIGYp
IHsgbV9tYXRyaXguc2V0TTI0KGYpOyB9CisgICAgdm9pZCBzZXRNMzEoZG91YmxlIGYpIHsgbV9t
YXRyaXguc2V0TTMxKGYpOyB9CisgICAgdm9pZCBzZXRNMzIoZG91YmxlIGYpIHsgbV9tYXRyaXgu
c2V0TTMyKGYpOyB9CisgICAgdm9pZCBzZXRNMzMoZG91YmxlIGYpIHsgbV9tYXRyaXguc2V0TTMz
KGYpOyB9CisgICAgdm9pZCBzZXRNMzQoZG91YmxlIGYpIHsgbV9tYXRyaXguc2V0TTM0KGYpOyB9
CisgICAgdm9pZCBzZXRNNDEoZG91YmxlIGYpIHsgbV9tYXRyaXguc2V0TTQxKGYpOyB9CisgICAg
dm9pZCBzZXRNNDIoZG91YmxlIGYpIHsgbV9tYXRyaXguc2V0TTQyKGYpOyB9CisgICAgdm9pZCBz
ZXRNNDMoZG91YmxlIGYpIHsgbV9tYXRyaXguc2V0TTQzKGYpOyB9CisgICAgdm9pZCBzZXRNNDQo
ZG91YmxlIGYpIHsgbV9tYXRyaXguc2V0TTQ0KGYpOyB9CiAgCiAgICAgdm9pZCBzZXRNYXRyaXhW
YWx1ZShjb25zdCBTdHJpbmcmIHN0cmluZywgRXhjZXB0aW9uQ29kZSYpOwogICAgIAogICAgIC8v
IHRoaXMgPSB0aGlzICogc2Vjb25kTWF0cml4CiAgICAgUGFzc1JlZlB0cjxXZWJLaXRDU1NNYXRy
aXg+IG11bHRpcGx5KFdlYktpdENTU01hdHJpeCogc2Vjb25kTWF0cml4KTsKICAgICAKLSAgICAv
LyBGSVhNRTogd2UgcmVhbGx5IHNob3VsZCBoYXZlIGFuIGV4Y2VwdGlvbiBoZXJlLCBmb3Igd2hl
biBtYXRyaXggaXMgbm90IGludmVydGlibGUKICAgICBQYXNzUmVmUHRyPFdlYktpdENTU01hdHJp
eD4gaW52ZXJzZShFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxXZWJLaXRDU1NNYXRy
aXg+IHRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5KTsKLSAgICBQYXNzUmVmUHRyPFdlYktpdENT
U01hdHJpeD4gc2NhbGUoZmxvYXQgc2NhbGVYLCBmbG9hdCBzY2FsZVkpOwotICAgIFBhc3NSZWZQ
dHI8V2ViS2l0Q1NTTWF0cml4PiByb3RhdGUoZmxvYXQgcm90KTsKKyAgICBQYXNzUmVmUHRyPFdl
YktpdENTU01hdHJpeD4gdHJhbnNsYXRlKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHopOwor
ICAgIFBhc3NSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBzY2FsZShkb3VibGUgc2NhbGVYLCBkb3Vi
bGUgc2NhbGVZLCBkb3VibGUgc2NhbGVaKTsKKyAgICBQYXNzUmVmUHRyPFdlYktpdENTU01hdHJp
eD4gcm90YXRlKGRvdWJsZSByb3RYLCBkb3VibGUgcm90WSwgZG91YmxlIHJvdFopOworICAgIFBh
c3NSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiByb3RhdGVBeGlzQW5nbGUoZG91YmxlIHgsIGRvdWJs
ZSB5LCBkb3VibGUgeiwgZG91YmxlIGFuZ2xlKTsKICAgICAKICAgICBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtKCkgeyByZXR1cm4gbV9tYXRyaXg7IH0KICAgICAKSW5kZXg6
IFdlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9j
c3MvV2ViS2l0Q1NTTWF0cml4LmlkbAkocmV2aXNpb24gNDA2OTgpCisrKyBXZWJDb3JlL2Nzcy9X
ZWJLaXRDU1NNYXRyaXguaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxOSArMjgsMzcgQEAgbW9k
dWxlIGNzcyB7CiAgICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgPzoKICAgICBpbnRlcmZh
Y2UgV2ViS2l0Q1NTTWF0cml4IHsKIAotICAgICAgICBhdHRyaWJ1dGUgZmxvYXQgYTsKLSAgICAg
ICAgYXR0cmlidXRlIGZsb2F0IGI7Ci0gICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBjOwotICAgICAg
ICBhdHRyaWJ1dGUgZmxvYXQgZDsKLSAgICAgICAgYXR0cmlidXRlIGZsb2F0IGU7Ci0gICAgICAg
IGF0dHJpYnV0ZSBmbG9hdCBmOworICAgICAgICBhdHRyaWJ1dGUgZG91YmxlIGE7CisgICAgICAg
IGF0dHJpYnV0ZSBkb3VibGUgYjsKKyAgICAgICAgYXR0cmlidXRlIGRvdWJsZSBjOworICAgICAg
ICBhdHRyaWJ1dGUgZG91YmxlIGQ7CisgICAgICAgIGF0dHJpYnV0ZSBkb3VibGUgZTsKKyAgICAg
ICAgYXR0cmlidXRlIGRvdWJsZSBmOwogCi0gICAgICAgIHZvaWQgICAgICAgICAgICBzZXRNYXRy
aXhWYWx1ZShpbiBET01TdHJpbmcgc3RyaW5nKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAg
ICAgIGF0dHJpYnV0ZSBkb3VibGUgbTExOworICAgICAgICBhdHRyaWJ1dGUgZG91YmxlIG0xMjsK
KyAgICAgICAgYXR0cmlidXRlIGRvdWJsZSBtMTM7CisgICAgICAgIGF0dHJpYnV0ZSBkb3VibGUg
bTE0OworICAgICAgICBhdHRyaWJ1dGUgZG91YmxlIG0yMTsKKyAgICAgICAgYXR0cmlidXRlIGRv
dWJsZSBtMjI7CisgICAgICAgIGF0dHJpYnV0ZSBkb3VibGUgbTIzOworICAgICAgICBhdHRyaWJ1
dGUgZG91YmxlIG0yNDsKKyAgICAgICAgYXR0cmlidXRlIGRvdWJsZSBtMzE7CisgICAgICAgIGF0
dHJpYnV0ZSBkb3VibGUgbTMyOworICAgICAgICBhdHRyaWJ1dGUgZG91YmxlIG0zMzsKKyAgICAg
ICAgYXR0cmlidXRlIGRvdWJsZSBtMzQ7CisgICAgICAgIGF0dHJpYnV0ZSBkb3VibGUgbTQxOwor
ICAgICAgICBhdHRyaWJ1dGUgZG91YmxlIG00MjsKKyAgICAgICAgYXR0cmlidXRlIGRvdWJsZSBt
NDM7CisgICAgICAgIGF0dHJpYnV0ZSBkb3VibGUgbTQ0OworCisgICAgICAgIHZvaWQgc2V0TWF0
cml4VmFsdWUoaW4gRE9NU3RyaW5nIHN0cmluZykgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAg
ICAgICBXZWJLaXRDU1NNYXRyaXggbXVsdGlwbHkoaW4gV2ViS2l0Q1NTTWF0cml4IHNlY29uZE1h
dHJpeCk7CiAgICAgICAgIFdlYktpdENTU01hdHJpeCBpbnZlcnNlKCkgcmFpc2VzIChET01FeGNl
cHRpb24pOwotICAgICAgICBXZWJLaXRDU1NNYXRyaXggdHJhbnNsYXRlKGluIGZsb2F0IHgsIGlu
IGZsb2F0IHkpOwotICAgICAgICBXZWJLaXRDU1NNYXRyaXggc2NhbGUoaW4gZmxvYXQgc2NhbGVY
LCBpbiBmbG9hdCBzY2FsZVkpOwotICAgICAgICBXZWJLaXRDU1NNYXRyaXggcm90YXRlKGluIGZs
b2F0IHJvdCk7CisgICAgICAgIFdlYktpdENTU01hdHJpeCB0cmFuc2xhdGUoaW4gZG91YmxlIHgs
IGluIGRvdWJsZSB5LCBpbiBkb3VibGUgeik7CisgICAgICAgIFdlYktpdENTU01hdHJpeCBzY2Fs
ZShpbiBkb3VibGUgc2NhbGVYLCBpbiBkb3VibGUgc2NhbGVZLCBpbiBkb3VibGUgc2NhbGVaKTsK
KyAgICAgICAgV2ViS2l0Q1NTTWF0cml4IHJvdGF0ZShpbiBkb3VibGUgcm90WCwgaW4gZG91Ymxl
IHJvdFksIGluIGRvdWJsZSByb3RaKTsKKyAgICAgICAgV2ViS2l0Q1NTTWF0cml4IHJvdGF0ZUF4
aXNBbmdsZShpbiBkb3VibGUgeCwgaW4gZG91YmxlIHksIGluIGRvdWJsZSB6LCBpbiBkb3VibGUg
YW5nbGUpOwogICAgICAgICAKICAgICAgICAgW0RvbnRFbnVtXSBET01TdHJpbmcgdG9TdHJpbmco
KTsKICAgICB9OwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDA3MjEpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAwOS0wMi0wNiAgQ2hyaXMg
TWFycmluICA8Y21hcnJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNjg5CisKKyAgICAgICAgU2luY2UgdGhlIENTUyBwYXJzZXIgZG9lcyBub3QgeWV0IGhh
bmRsZSBhbnkgb2YgdGhlIDNECisgICAgICAgIGZ1bmN0aW9ucyBmb3IgLXdlYmtpdC10cmFuc2Zv
cm0sIHRlc3RzIGZvciB0aGVzZSBmZWF0dXJlcworICAgICAgICBhcmUgY3VycmVudGx5IGNvbW1l
bnRlZCBvdXQuCisKKyAgICAgICAgKiB0cmFuc2Zvcm1zLzNkOiBBZGRlZC4KKyAgICAgICAgKiB0
cmFuc2Zvcm1zLzNkL2Nzc21hdHJpeC0zZC1pbnRlcmZhY2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiB0cmFuc2Zvcm1zLzNkL2Nzc21hdHJpeC0zZC1pbnRlcmZhY2UueGh0bWw6IEFk
ZGVkLgorCiAyMDA5LTAyLTA1ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAd2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IExheW91dFRlc3RzL3Ry
YW5zZm9ybXMvM2QvY3NzbWF0cml4LTNkLWludGVyZmFjZS1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvdHJhbnNmb3Jtcy8zZC9jc3NtYXRyaXgtM2QtaW50ZXJmYWNlLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3RyYW5zZm9ybXMvM2QvY3Nz
bWF0cml4LTNkLWludGVyZmFjZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTgyIEBACitUaGlzIHRlc3QgZXhlcmNpc2VzIHRoZSBDU1NNYXRyaXggM0QgaW50ZXJmYWNlCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitDU1NNYXRyaXggY29uc3RydWN0b3JzCitQ
QVNTIGRlZmF1bHQgY29uc3RydWN0b3IKK1BBU1Mgb2JqZWN0IGNvbnN0cnVjdG9yCitQQVNTIHN0
cmluZyBjb25zdHJ1Y3RvcgorCitUZXN0IGJhZCBpbnB1dCB0byBzdHJpbmcgY29uc3RydWN0b3IK
K1BBU1MgbmV3IFdlYktpdENTU01hdHJpeCgiYmFuYW5hIikgdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyLgorCitUZXN0IGF0dHJpYnV0ZXMgb24gZGVm
YXVsdCBtYXRyaXgKK1BBU1MgbS5tMTEgaXMgMQorUEFTUyBtLm0xMiBpcyAwCitQQVNTIG0ubTEz
IGlzIDAKK1BBU1MgbS5tMTQgaXMgMAorUEFTUyBtLm0yMSBpcyAwCitQQVNTIG0ubTIyIGlzIDEK
K1BBU1MgbS5tMjMgaXMgMAorUEFTUyBtLm0yNCBpcyAwCitQQVNTIG0ubTMxIGlzIDAKK1BBU1Mg
bS5tMzIgaXMgMAorUEFTUyBtLm0zMyBpcyAxCitQQVNTIG0ubTM0IGlzIDAKK1BBU1MgbS5tNDEg
aXMgMAorUEFTUyBtLm00MiBpcyAwCitQQVNTIG0ubTQzIGlzIDAKK1BBU1MgbS5tNDQgaXMgMQor
CitUZXN0IGF0dHJpYnV0ZXMgb24gY3VzdG9tIG1hdHJpeAorUEFTUyBtLm0xMSBpcyAxMQorUEFT
UyBtLm0xMiBpcyAxMgorUEFTUyBtLm0yMSBpcyAyMQorUEFTUyBtLm0yMiBpcyAyMgorUEFTUyBt
Lm00MSBpcyA0MQorUEFTUyBtLm00MiBpcyA0MgorCitUZXN0IHNldE1hdHJpeFZhbHVlIC0gc2V0
IHRvIG1hdHJpeCgpCitQQVNTIG0ubTExIGlzIDExCitQQVNTIG0ubTEyIGlzIDEyCitQQVNTIG0u
bTIxIGlzIDIxCitQQVNTIG0ubTIyIGlzIDIyCitQQVNTIG0ubTQxIGlzIDQxCitQQVNTIG0ubTQy
IGlzIDQyCisKK1Rlc3Qgc2V0TWF0cml4VmFsdWUgLSBzZXQgdG8gdHJhbnNsYXRlKDEwcHgsIDIw
cHgsIDMwcHgpIHNjYWxlKDIsIDMsIDQpCitQQVNTIG0ubTExIGlzIDIKK1BBU1MgbS5tMTIgaXMg
MAorUEFTUyBtLm0xMyBpcyAwCitQQVNTIG0ubTE0IGlzIDAKK1BBU1MgbS5tMjEgaXMgMAorUEFT
UyBtLm0yMiBpcyAzCitQQVNTIG0ubTIzIGlzIDAKK1BBU1MgbS5tMjQgaXMgMAorUEFTUyBtLm0z
MSBpcyAwCitQQVNTIG0ubTMyIGlzIDAKK1BBU1MgbS5tMzMgaXMgMQorUEFTUyBtLm0zNCBpcyAw
CitQQVNTIG0ubTQxIGlzIDEwCitQQVNTIG0ubTQyIGlzIDIwCitQQVNTIG0ubTQzIGlzIDAKK1BB
U1MgbS5tNDQgaXMgMQorCitUZXN0IHRocm93aW5nIGV4Y2VwdGlvbiBmcm9tIHNldE1hdHJpeFZh
bHVlCitQQVNTIG0uc2V0TWF0cml4VmFsdWUoImJhbmFuYSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJv
cjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KK1BBU1MgbS5zZXRNYXRyaXhWYWx1ZSgi
dHJhbnNsYXRlM2QoMTBlbSwgMjAlLCA0MCkiKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNZTlRB
WF9FUlI6IERPTSBFeGNlcHRpb24gMTIuCitQQVNTIG0uc2V0TWF0cml4VmFsdWUoInRyYW5zbGF0
ZTNkKDEwcHgsIDIwcHgsIDMwcHgpIHNjYWxlM2QoKSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjog
U1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KKworVGVzdCBtdWx0aXBseQorUEFTUyBwYXJz
ZUZsb2F0KG0zLm0xMSkgaXMgMjUKK1BBU1MgcGFyc2VGbG9hdChtMy5tMTIpIGlzIDI4CitQQVNT
IHBhcnNlRmxvYXQobTMubTEzKSBpcyAwCitQQVNTIHBhcnNlRmxvYXQobTMubTE0KSBpcyAwCitQ
QVNTIHBhcnNlRmxvYXQobTMubTIxKSBpcyA1NworUEFTUyBwYXJzZUZsb2F0KG0zLm0yMikgaXMg
NjQKK1BBU1MgcGFyc2VGbG9hdChtMy5tMjMpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMy5tMjQp
IGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMy5tMzEpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMy5t
MzIpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMy5tMzMpIGlzIDEKK1BBU1MgcGFyc2VGbG9hdCht
My5tMzQpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMy5tNDEpIGlzIDEwMAorUEFTUyBwYXJzZUZs
b2F0KG0zLm00MikgaXMgMTEyCitQQVNTIHBhcnNlRmxvYXQobTMubTQzKSBpcyAwCitQQVNTIHBh
cnNlRmxvYXQobTMubTQ0KSBpcyAxCisKK1Rlc3QgaW52ZXJzZQorUEFTUyBwYXJzZUZsb2F0KG0y
Lm0xMSkgaXMgMC41CitQQVNTIHBhcnNlRmxvYXQobTIubTEyKSBpcyAwCitQQVNTIHBhcnNlRmxv
YXQobTIubTEzKSBpcyAwCitQQVNTIHBhcnNlRmxvYXQobTIubTE0KSBpcyAwCitQQVNTIHBhcnNl
RmxvYXQobTIubTIxKSBpcyAwCitQQVNTIHBhcnNlRmxvYXQobTIubTIyKSBpcyAwLjUKK1BBU1Mg
cGFyc2VGbG9hdChtMi5tMjMpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMi5tMjQpIGlzIDAKK1BB
U1MgcGFyc2VGbG9hdChtMi5tMzEpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMi5tMzIpIGlzIDAK
K1BBU1MgcGFyc2VGbG9hdChtMi5tMzQpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMi5tNDEpIGlz
IC01CitQQVNTIHBhcnNlRmxvYXQobTIubTQyKSBpcyAtMTAKKworVGVzdCB0aHJvd2luZyBleGNl
cHRpb24gZnJvbSBpbnZlcnNlCitQQVNTIG0uaW52ZXJzZSgpIHRocmV3IGV4Y2VwdGlvbiBFcnJv
cjogTk9UX1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOS4KKworVGVzdCB0cmFuc2xhdGUK
K1BBU1MgbS5tMTEgaXMgMQorUEFTUyBtLm0xMiBpcyAwCitQQVNTIG0ubTEzIGlzIDAKK1BBU1Mg
bS5tMTQgaXMgMAorUEFTUyBtLm0yMSBpcyAwCitQQVNTIG0ubTIyIGlzIDEKK1BBU1MgbS5tMjMg
aXMgMAorUEFTUyBtLm0yNCBpcyAwCitQQVNTIG0ubTMxIGlzIDAKK1BBU1MgbS5tMzIgaXMgMAor
UEFTUyBtLm0zMyBpcyAxCitQQVNTIG0ubTM0IGlzIDAKK1BBU1MgbS5tNDEgaXMgMTAKK1BBU1Mg
bS5tNDIgaXMgMjAKK1BBU1MgbS5tNDMgaXMgMzAKK1BBU1MgbS5tNDQgaXMgMQorCitUZXN0IHNj
YWxlCitQQVNTIG0ubTExIGlzIDEwCitQQVNTIG0ubTEyIGlzIDAKK1BBU1MgbS5tMTMgaXMgMAor
UEFTUyBtLm0xNCBpcyAwCitQQVNTIG0ubTIxIGlzIDAKK1BBU1MgbS5tMjIgaXMgMjAKK1BBU1Mg
bS5tMjMgaXMgMAorUEFTUyBtLm0yNCBpcyAwCitQQVNTIG0ubTMxIGlzIDAKK1BBU1MgbS5tMzIg
aXMgMAorUEFTUyBtLm0zMyBpcyAzMAorUEFTUyBtLm0zNCBpcyAwCitQQVNTIG0ubTQxIGlzIDAK
K1BBU1MgbS5tNDIgaXMgMAorUEFTUyBtLm00MyBpcyAwCitQQVNTIG0ubTQ0IGlzIDEKKworVGVz
dCByb3RhdGUKK1BBU1MgcGFyc2VGbG9hdChtLm0xMS50b1ByZWNpc2lvbig2KSkgaXMgMC44MTM3
OTgKK1BBU1MgcGFyc2VGbG9hdChtLm0xMi50b1ByZWNpc2lvbig2KSkgaXMgMC40Njk4NDYKK1BB
U1MgcGFyc2VGbG9hdChtLm0xMy50b1ByZWNpc2lvbig2KSkgaXMgLTAuMzQyMDIKK1BBU1MgcGFy
c2VGbG9hdChtLm0xNC50b1ByZWNpc2lvbig2KSkgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0ubTIx
LnRvUHJlY2lzaW9uKDYpKSBpcyAtMC40NDA5NworUEFTUyBwYXJzZUZsb2F0KG0ubTIyLnRvUHJl
Y2lzaW9uKDYpKSBpcyAwLjg4MjU2NAorUEFTUyBwYXJzZUZsb2F0KG0ubTIzLnRvUHJlY2lzaW9u
KDYpKSBpcyAwLjE2MzE3NgorUEFTUyBwYXJzZUZsb2F0KG0ubTI0LnRvUHJlY2lzaW9uKDYpKSBp
cyAwCitQQVNTIHBhcnNlRmxvYXQobS5tMzEudG9QcmVjaXNpb24oNikpIGlzIDAuMzc4NTIyCitQ
QVNTIHBhcnNlRmxvYXQobS5tMzIudG9QcmVjaXNpb24oNikpIGlzIDAuMDE4MDI4MworUEFTUyBw
YXJzZUZsb2F0KG0ubTMzLnRvUHJlY2lzaW9uKDYpKSBpcyAwLjkyNTQxNworUEFTUyBwYXJzZUZs
b2F0KG0ubTM0LnRvUHJlY2lzaW9uKDYpKSBpcyAwCitQQVNTIHBhcnNlRmxvYXQobS5tNDEudG9Q
cmVjaXNpb24oNikpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtLm00Mi50b1ByZWNpc2lvbig2KSkg
aXMgMAorUEFTUyBwYXJzZUZsb2F0KG0ubTQzLnRvUHJlY2lzaW9uKDYpKSBpcyAwCitQQVNTIHBh
cnNlRmxvYXQobS5tNDQudG9QcmVjaXNpb24oNikpIGlzIDEKKworVGVzdCByb3RhdGVBeGlzQW5n
bGUKK1BBU1MgcGFyc2VGbG9hdChtLm0xMS50b1ByZWNpc2lvbig2KSkgaXMgMC44MDQ3MzgKK1BB
U1MgcGFyc2VGbG9hdChtLm0xMi50b1ByZWNpc2lvbig2KSkgaXMgMC41MDU4NzkKK1BBU1MgcGFy
c2VGbG9hdChtLm0xMy50b1ByZWNpc2lvbig2KSkgaXMgLTAuMzEwNjE3CitQQVNTIHBhcnNlRmxv
YXQobS5tMTQudG9QcmVjaXNpb24oNikpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtLm0yMS50b1By
ZWNpc2lvbig2KSkgaXMgLTAuMzEwNjE3CitQQVNTIHBhcnNlRmxvYXQobS5tMjIudG9QcmVjaXNp
b24oNikpIGlzIDAuODA0NzM4CitQQVNTIHBhcnNlRmxvYXQobS5tMjMudG9QcmVjaXNpb24oNikp
IGlzIDAuNTA1ODc5CitQQVNTIHBhcnNlRmxvYXQobS5tMjQudG9QcmVjaXNpb24oNikpIGlzIDAK
K1BBU1MgcGFyc2VGbG9hdChtLm0zMS50b1ByZWNpc2lvbig2KSkgaXMgMC41MDU4NzkKK1BBU1Mg
cGFyc2VGbG9hdChtLm0zMi50b1ByZWNpc2lvbig2KSkgaXMgLTAuMzEwNjE3CitQQVNTIHBhcnNl
RmxvYXQobS5tMzMudG9QcmVjaXNpb24oNikpIGlzIDAuODA0NzM4CitQQVNTIHBhcnNlRmxvYXQo
bS5tMzQudG9QcmVjaXNpb24oNikpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtLm00MS50b1ByZWNp
c2lvbig2KSkgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0ubTQyLnRvUHJlY2lzaW9uKDYpKSBpcyAw
CitQQVNTIHBhcnNlRmxvYXQobS5tNDMudG9QcmVjaXNpb24oNikpIGlzIDAKK1BBU1MgcGFyc2VG
bG9hdChtLm00NC50b1ByZWNpc2lvbig2KSkgaXMgMQorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvdHJhbnNmb3Jt
cy8zZC9jc3NtYXRyaXgtM2QtaW50ZXJmYWNlLnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3RyYW5zZm9ybXMvM2QvY3NzbWF0cml4LTNkLWludGVyZmFjZS54aHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL3RyYW5zZm9ybXMvM2QvY3NzbWF0cml4LTNkLWludGVyZmFjZS54
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyODEgQEAKKzxodG1sIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisKKzwhLS0gVW50aWwgdGhlIFBhcnNlciBzdXBw
b3J0IDNEIGZ1bmN0aW9ucyBmb3IgLXdlYmtpdC10cmFuc2Zvcm0sIHRoZSAzRCBwYXJzaW5nIGlz
IGNvbW1lbnRlZCBvdXQgLS0+CisKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZXhlcmNpc2VzIHRo
ZSBDU1NNYXRyaXggM0QgaW50ZXJmYWNlIik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJDU1NNYXRy
aXggY29uc3RydWN0b3JzIik7CisKK3ZhciBtID0gbnVsbDsKK20gPSBuZXcgV2ViS2l0Q1NTTWF0
cml4KCk7CitpZiAobSkKKyAgdGVzdFBhc3NlZCgiZGVmYXVsdCBjb25zdHJ1Y3RvciIpOworZWxz
ZQorICB0ZXN0RmFpbGVkKCJkZWZhdWx0IGNvbnN0cnVjdG9yIik7CisKK3ZhciBtMiA9IG5ldyBX
ZWJLaXRDU1NNYXRyaXgobSk7CitpZiAobTIpCisgIHRlc3RQYXNzZWQoIm9iamVjdCBjb25zdHJ1
Y3RvciIpOworZWxzZQorICB0ZXN0RmFpbGVkKCJvYmplY3QgY29uc3RydWN0b3IiKTsKKworPCEt
LSBtID0gbmV3IFdlYktpdENTU01hdHJpeCgibWF0cml4M2QoMSwgMCwgMCwgMSwgMCwgMSwgMCwg
MCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSkiKTsgLS0+CittID0gbmV3IFdlYktpdENTU01hdHJp
eCgibWF0cml4KDEsIDAsIDAsIDEsIDAsIDApIik7CitpZiAobSkKKyAgdGVzdFBhc3NlZCgic3Ry
aW5nIGNvbnN0cnVjdG9yIik7CitlbHNlCisgIHRlc3RGYWlsZWQoInN0cmluZyBjb25zdHJ1Y3Rv
ciIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCBiYWQgaW5wdXQgdG8gc3RyaW5nIGNvbnN0
cnVjdG9yIik7CitzaG91bGRUaHJvdygnbmV3IFdlYktpdENTU01hdHJpeCgiYmFuYW5hIiknKTsK
KworZGVidWcoIiIpOworZGVidWcoIlRlc3QgYXR0cmlidXRlcyBvbiBkZWZhdWx0IG1hdHJpeCIp
OworbSA9IG5ldyBXZWJLaXRDU1NNYXRyaXgoKTsKK3Nob3VsZEJlKCdtLm0xMScsICcxJyk7Citz
aG91bGRCZSgnbS5tMTInLCAnMCcpOworc2hvdWxkQmUoJ20ubTEzJywgJzAnKTsKK3Nob3VsZEJl
KCdtLm0xNCcsICcwJyk7CitzaG91bGRCZSgnbS5tMjEnLCAnMCcpOworc2hvdWxkQmUoJ20ubTIy
JywgJzEnKTsKK3Nob3VsZEJlKCdtLm0yMycsICcwJyk7CitzaG91bGRCZSgnbS5tMjQnLCAnMCcp
Oworc2hvdWxkQmUoJ20ubTMxJywgJzAnKTsKK3Nob3VsZEJlKCdtLm0zMicsICcwJyk7CitzaG91
bGRCZSgnbS5tMzMnLCAnMScpOworc2hvdWxkQmUoJ20ubTM0JywgJzAnKTsKK3Nob3VsZEJlKCdt
Lm00MScsICcwJyk7CitzaG91bGRCZSgnbS5tNDInLCAnMCcpOworc2hvdWxkQmUoJ20ubTQzJywg
JzAnKTsKK3Nob3VsZEJlKCdtLm00NCcsICcxJyk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0
IGF0dHJpYnV0ZXMgb24gY3VzdG9tIG1hdHJpeCIpOworPCEtLSBtID0gbmV3IFdlYktpdENTU01h
dHJpeCgibWF0cml4M2QoMTEsIDEyLCAxMywgMTQsIDIxLCAyMiwgMjMsIDI0LCAzMSwgMzIsIDMz
LCAzNCwgNDEsIDQyLCA0MywgNDQpIik7IC0tPgorbSA9IG5ldyBXZWJLaXRDU1NNYXRyaXgoIm1h
dHJpeCgxMSwgMTIsIDIxLCAyMiwgNDEsIDQyKSIpOworc2hvdWxkQmUoJ20ubTExJywgJzExJyk7
CitzaG91bGRCZSgnbS5tMTInLCAnMTInKTsKKzwhLS0gc2hvdWxkQmUoJ20ubTEzJywgJzEzJyk7
IC0tPgorPCEtLSBzaG91bGRCZSgnbS5tMTQnLCAnMTQnKTsgLS0+CitzaG91bGRCZSgnbS5tMjEn
LCAnMjEnKTsKK3Nob3VsZEJlKCdtLm0yMicsICcyMicpOworPCEtLSBzaG91bGRCZSgnbS5tMjMn
LCAnMjMnKTsgLS0+Cis8IS0tIHNob3VsZEJlKCdtLm0yNCcsICcyNCcpOyAtLT4KKzwhLS0gc2hv
dWxkQmUoJ20ubTMxJywgJzMxJyk7IC0tPgorPCEtLSBzaG91bGRCZSgnbS5tMzInLCAnMzInKTsg
LS0+Cis8IS0tIHNob3VsZEJlKCdtLm0zMycsICczMycpOyAtLT4KKzwhLS0gc2hvdWxkQmUoJ20u
bTM0JywgJzM0Jyk7IC0tPgorc2hvdWxkQmUoJ20ubTQxJywgJzQxJyk7CitzaG91bGRCZSgnbS5t
NDInLCAnNDInKTsKKzwhLS0gc2hvdWxkQmUoJ20ubTQzJywgJzQzJyk7IC0tPgorPCEtLSBzaG91
bGRCZSgnbS5tNDQnLCAnNDQnKTsgLS0+CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IHNldE1h
dHJpeFZhbHVlIC0gc2V0IHRvIG1hdHJpeCgpIik7CittID0gbmV3IFdlYktpdENTU01hdHJpeCgp
OworPCEtLSBtLnNldE1hdHJpeFZhbHVlKCJtYXRyaXgzZCgxMSwgMTIsIDEzLCAxNCwgMjEsIDIy
LCAyMywgMjQsIDMxLCAzMiwgMzMsIDM0LCA0MSwgNDIsIDQzLCA0NCkiKTsgLS0+CittLnNldE1h
dHJpeFZhbHVlKCJtYXRyaXgoMTEsIDEyLCAyMSwgMjIsIDQxLCA0MikiKTsKK3Nob3VsZEJlKCdt
Lm0xMScsICcxMScpOworc2hvdWxkQmUoJ20ubTEyJywgJzEyJyk7Cis8IS0tIHNob3VsZEJlKCdt
Lm0xMycsICcxMycpOyAtLT4KKzwhLS0gc2hvdWxkQmUoJ20ubTE0JywgJzE0Jyk7IC0tPgorc2hv
dWxkQmUoJ20ubTIxJywgJzIxJyk7CitzaG91bGRCZSgnbS5tMjInLCAnMjInKTsKKzwhLS0gc2hv
dWxkQmUoJ20ubTIzJywgJzIzJyk7IC0tPgorPCEtLSBzaG91bGRCZSgnbS5tMjQnLCAnMjQnKTsg
LS0+Cis8IS0tIHNob3VsZEJlKCdtLm0zMScsICczMScpOyAtLT4KKzwhLS0gc2hvdWxkQmUoJ20u
bTMyJywgJzMyJyk7IC0tPgorPCEtLSBzaG91bGRCZSgnbS5tMzMnLCAnMzMnKTsgLS0+Cis8IS0t
IHNob3VsZEJlKCdtLm0zNCcsICczNCcpOyAtLT4KK3Nob3VsZEJlKCdtLm00MScsICc0MScpOwor
c2hvdWxkQmUoJ20ubTQyJywgJzQyJyk7Cis8IS0tIHNob3VsZEJlKCdtLm00MycsICc0MycpOyAt
LT4KKzwhLS0gc2hvdWxkQmUoJ20ubTQ0JywgJzQ0Jyk7IC0tPgorCitkZWJ1ZygiIik7CitkZWJ1
ZygiVGVzdCBzZXRNYXRyaXhWYWx1ZSAtIHNldCB0byB0cmFuc2xhdGUoMTBweCwgMjBweCwgMzBw
eCkgc2NhbGUoMiwgMywgNCkiKTsKK20gPSBuZXcgV2ViS2l0Q1NTTWF0cml4KCk7Cis8IS0tIG0u
c2V0TWF0cml4VmFsdWUoInRyYW5zbGF0ZTNkKDEwcHgsIDIwcHgsIDMwcHgpIHNjYWxlM2QoMiwg
MywgNCkiKTsgLS0+CittLnNldE1hdHJpeFZhbHVlKCJ0cmFuc2xhdGUoMTBweCwgMjBweCkgc2Nh
bGUoMiwgMykiKTsKK3Nob3VsZEJlKCdtLm0xMScsICcyJyk7CitzaG91bGRCZSgnbS5tMTInLCAn
MCcpOworc2hvdWxkQmUoJ20ubTEzJywgJzAnKTsKK3Nob3VsZEJlKCdtLm0xNCcsICcwJyk7Citz
aG91bGRCZSgnbS5tMjEnLCAnMCcpOworc2hvdWxkQmUoJ20ubTIyJywgJzMnKTsKK3Nob3VsZEJl
KCdtLm0yMycsICcwJyk7CitzaG91bGRCZSgnbS5tMjQnLCAnMCcpOworc2hvdWxkQmUoJ20ubTMx
JywgJzAnKTsKK3Nob3VsZEJlKCdtLm0zMicsICcwJyk7CitzaG91bGRCZSgnbS5tMzMnLCAnMScp
Oworc2hvdWxkQmUoJ20ubTM0JywgJzAnKTsKK3Nob3VsZEJlKCdtLm00MScsICcxMCcpOworc2hv
dWxkQmUoJ20ubTQyJywgJzIwJyk7CitzaG91bGRCZSgnbS5tNDMnLCAnMCcpOworc2hvdWxkQmUo
J20ubTQ0JywgJzEnKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3QgdGhyb3dpbmcgZXhjZXB0
aW9uIGZyb20gc2V0TWF0cml4VmFsdWUiKTsKK3Nob3VsZFRocm93KCdtLnNldE1hdHJpeFZhbHVl
KCJiYW5hbmEiKScpOworc2hvdWxkVGhyb3coJ20uc2V0TWF0cml4VmFsdWUoInRyYW5zbGF0ZTNk
KDEwZW0sIDIwJSwgNDApIiknKTsKK3Nob3VsZFRocm93KCdtLnNldE1hdHJpeFZhbHVlKCJ0cmFu
c2xhdGUzZCgxMHB4LCAyMHB4LCAzMHB4KSBzY2FsZTNkKCkiKScpOworCitkZWJ1ZygiIik7Citk
ZWJ1ZygiVGVzdCBtdWx0aXBseSIpOworPCEtLSBtID0gIG5ldyBXZWJLaXRDU1NNYXRyaXgoIm1h
dHJpeDNkKCAxLCAgMiwgIDMsICA0LCAgNSwgIDYsICA3LCAgOCwgIDksIDEwLCAxMSwgMTIsIDEz
LCAxNCwgMTUsIDE2KSIpOworbTIgPSBuZXcgV2ViS2l0Q1NTTWF0cml4KCJtYXRyaXgzZCgxNywg
MTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLCAz
MikiKTsgLS0+CittID0gbmV3IFdlYktpdENTU01hdHJpeCgibWF0cml4KDEsIDIsIDMsIDQsIDUs
IDYpIik7CittMiA9IG5ldyBXZWJLaXRDU1NNYXRyaXgoIm1hdHJpeCg3LCA4LCA5LCAxMCwgMTEs
IDEyKSIpOwordmFyIG0zID0gbS5tdWx0aXBseShtMik7CitzaG91bGRCZSgncGFyc2VGbG9hdCht
My5tMTEpJywgJzI1Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMy5tMTIpJywgJzI4Jyk7Citz
aG91bGRCZSgncGFyc2VGbG9hdChtMy5tMTMpJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0
KG0zLm0xNCknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTMubTIxKScsICc1NycpOwor
c2hvdWxkQmUoJ3BhcnNlRmxvYXQobTMubTIyKScsICc2NCcpOworc2hvdWxkQmUoJ3BhcnNlRmxv
YXQobTMubTIzKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMy5tMjQpJywgJzAnKTsK
K3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0zLm0zMSknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxv
YXQobTMubTMyKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMy5tMzMpJywgJzEnKTsK
K3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0zLm0zNCknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxv
YXQobTMubTQxKScsICcxMDAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0zLm00MiknLCAnMTEy
Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMy5tNDMpJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJz
ZUZsb2F0KG0zLm00NCknLCAnMScpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCBpbnZlcnNl
Iik7Cis8IS0tIG0gPSBuZXcgV2ViS2l0Q1NTTWF0cml4KCJtYXRyaXgzZCgyLCAwLCAwLCAwLCAw
LCAyLCAwLCAwLCAwLCAwLCAyLCAwLCAxMCwgMjAsIDMwLCAxKSIpOyAtLT4KK20gPSBuZXcgV2Vi
S2l0Q1NTTWF0cml4KCJtYXRyaXgoMiwgMCwgMCwgMiwgMTAsIDIwKSIpOworbTIgPSBtLmludmVy
c2UoKTsKKworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIubTExKScsICcwLjUnKTsKK3Nob3VsZEJl
KCdwYXJzZUZsb2F0KG0yLm0xMiknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIubTEz
KScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5tMTQpJywgJzAnKTsKK3Nob3VsZEJl
KCdwYXJzZUZsb2F0KG0yLm0yMSknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIubTIy
KScsICcwLjUnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLm0yMyknLCAnMCcpOworc2hvdWxk
QmUoJ3BhcnNlRmxvYXQobTIubTI0KScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5t
MzEpJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLm0zMiknLCAnMCcpOworPCEtLSBz
aG91bGRCZSgncGFyc2VGbG9hdChtMi5tMzMpJywgJzAuNScpOyAtLT4KK3Nob3VsZEJlKCdwYXJz
ZUZsb2F0KG0yLm0zNCknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIubTQxKScsICct
NScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIubTQyKScsICctMTAnKTsKKzwhLS0gc2hvdWxk
QmUoJ3BhcnNlRmxvYXQobTIubTQzKScsICctMTUnKTsgLS0+Cis8IS0tIHNob3VsZEJlKCdwYXJz
ZUZsb2F0KG0yLm00NCknLCAnMCcpOyAtLT4KKworZGVidWcoIiIpOworZGVidWcoIlRlc3QgdGhy
b3dpbmcgZXhjZXB0aW9uIGZyb20gaW52ZXJzZSIpOworPCEtLSBtID0gbmV3IFdlYktpdENTU01h
dHJpeCgibWF0cml4M2QoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCkiKTsgLy8gbm90IGludmVydGlibGUgLS0+CittID0gbmV3IFdlYktpdENTU01hdHJpeCgi
bWF0cml4KDAsIDAsIDAsIDAsIDAsIDApIik7IC8vIG5vdCBpbnZlcnRpYmxlCitzaG91bGRUaHJv
dygnbS5pbnZlcnNlKCknKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3QgdHJhbnNsYXRlIik7
CittID0gbmV3IFdlYktpdENTU01hdHJpeCgpOworbSA9IG0udHJhbnNsYXRlKDEwLCAyMCwgMzAp
Oworc2hvdWxkQmUoJ20ubTExJywgJzEnKTsKK3Nob3VsZEJlKCdtLm0xMicsICcwJyk7CitzaG91
bGRCZSgnbS5tMTMnLCAnMCcpOworc2hvdWxkQmUoJ20ubTE0JywgJzAnKTsKK3Nob3VsZEJlKCdt
Lm0yMScsICcwJyk7CitzaG91bGRCZSgnbS5tMjInLCAnMScpOworc2hvdWxkQmUoJ20ubTIzJywg
JzAnKTsKK3Nob3VsZEJlKCdtLm0yNCcsICcwJyk7CitzaG91bGRCZSgnbS5tMzEnLCAnMCcpOwor
c2hvdWxkQmUoJ20ubTMyJywgJzAnKTsKK3Nob3VsZEJlKCdtLm0zMycsICcxJyk7CitzaG91bGRC
ZSgnbS5tMzQnLCAnMCcpOworc2hvdWxkQmUoJ20ubTQxJywgJzEwJyk7CitzaG91bGRCZSgnbS5t
NDInLCAnMjAnKTsKK3Nob3VsZEJlKCdtLm00MycsICczMCcpOworc2hvdWxkQmUoJ20ubTQ0Jywg
JzEnKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3Qgc2NhbGUiKTsKK20gPSBuZXcgV2ViS2l0
Q1NTTWF0cml4KCk7CittID0gbS5zY2FsZSgxMCwgMjAsIDMwKTsKK3Nob3VsZEJlKCdtLm0xMScs
ICcxMCcpOworc2hvdWxkQmUoJ20ubTEyJywgJzAnKTsKK3Nob3VsZEJlKCdtLm0xMycsICcwJyk7
CitzaG91bGRCZSgnbS5tMTQnLCAnMCcpOworc2hvdWxkQmUoJ20ubTIxJywgJzAnKTsKK3Nob3Vs
ZEJlKCdtLm0yMicsICcyMCcpOworc2hvdWxkQmUoJ20ubTIzJywgJzAnKTsKK3Nob3VsZEJlKCdt
Lm0yNCcsICcwJyk7CitzaG91bGRCZSgnbS5tMzEnLCAnMCcpOworc2hvdWxkQmUoJ20ubTMyJywg
JzAnKTsKK3Nob3VsZEJlKCdtLm0zMycsICczMCcpOworc2hvdWxkQmUoJ20ubTM0JywgJzAnKTsK
K3Nob3VsZEJlKCdtLm00MScsICcwJyk7CitzaG91bGRCZSgnbS5tNDInLCAnMCcpOworc2hvdWxk
QmUoJ20ubTQzJywgJzAnKTsKK3Nob3VsZEJlKCdtLm00NCcsICcxJyk7CisKK2RlYnVnKCIiKTsK
K2RlYnVnKCJUZXN0IHJvdGF0ZSIpOworbSA9IG5ldyBXZWJLaXRDU1NNYXRyaXgoKTsKK20gPSBt
LnJvdGF0ZSgxMCwgMjAsIDMwKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTExLnRvUHJlY2lz
aW9uKDYpKScsICcwLjgxMzc5OCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tMTIudG9QcmVj
aXNpb24oNikpJywgJzAuNDY5ODQ2Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm0xMy50b1By
ZWNpc2lvbig2KSknLCAnLTAuMzQyMDInKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTE0LnRv
UHJlY2lzaW9uKDYpKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm0yMS50b1ByZWNp
c2lvbig2KSknLCAnLTAuNDQwOTcnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTIyLnRvUHJl
Y2lzaW9uKDYpKScsICcwLjg4MjU2NCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tMjMudG9Q
cmVjaXNpb24oNikpJywgJzAuMTYzMTc2Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm0yNC50
b1ByZWNpc2lvbig2KSknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tMzEudG9QcmVj
aXNpb24oNikpJywgJzAuMzc4NTIyJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm0zMi50b1By
ZWNpc2lvbig2KSknLCAnMC4wMTgwMjgzJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm0zMy50
b1ByZWNpc2lvbig2KSknLCAnMC45MjU0MTcnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTM0
LnRvUHJlY2lzaW9uKDYpKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm00MS50b1By
ZWNpc2lvbig2KSknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tNDIudG9QcmVjaXNp
b24oNikpJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTQzLnRvUHJlY2lzaW9uKDYp
KScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm00NC50b1ByZWNpc2lvbig2KSknLCAn
MScpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCByb3RhdGVBeGlzQW5nbGUiKTsKK20gPSBu
ZXcgV2ViS2l0Q1NTTWF0cml4KCk7CittID0gbS5yb3RhdGVBeGlzQW5nbGUoMC43MDcsIDAuNzA3
LCAwLjcwNywgNDUpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tMTEudG9QcmVjaXNpb24oNikp
JywgJzAuODA0NzM4Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm0xMi50b1ByZWNpc2lvbig2
KSknLCAnMC41MDU4NzknKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTEzLnRvUHJlY2lzaW9u
KDYpKScsICctMC4zMTA2MTcnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTE0LnRvUHJlY2lz
aW9uKDYpKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm0yMS50b1ByZWNpc2lvbig2
KSknLCAnLTAuMzEwNjE3Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm0yMi50b1ByZWNpc2lv
big2KSknLCAnMC44MDQ3MzgnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTIzLnRvUHJlY2lz
aW9uKDYpKScsICcwLjUwNTg3OScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tMjQudG9QcmVj
aXNpb24oNikpJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTMxLnRvUHJlY2lzaW9u
KDYpKScsICcwLjUwNTg3OScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tMzIudG9QcmVjaXNp
b24oNikpJywgJy0wLjMxMDYxNycpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tMzMudG9QcmVj
aXNpb24oNikpJywgJzAuODA0NzM4Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm0zNC50b1By
ZWNpc2lvbig2KSknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tNDEudG9QcmVjaXNp
b24oNikpJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTQyLnRvUHJlY2lzaW9uKDYp
KScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm00My50b1ByZWNpc2lvbig2KSknLCAn
MCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tNDQudG9QcmVjaXNpb24oNikpJywgJzEnKTsK
KworZGVidWcoIiIpOworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKworPHNjcmlwdD4KKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="13242"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27509</attachid>
            <date>2009-02-09 17:56:13 -0800</date>
            <delta_ts>2009-02-09 17:58:02 -0800</delta_ts>
            <desc>Replacement patch</desc>
            <filename>23689.patch</filename>
            <type>text/plain</type>
            <size>38163</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MDc5NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMDktMDItMDkgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY4OQorCisgICAgICAgIEFk
ZGVkIDNEIGZ1bmN0aW9ucyB0byBXZWJLaXRDU1NNYXRyaXguIFRoaXMgZGVwZW5kcyBvbiB0aGUg
M0QgZnVuY3Rpb25zCisgICAgICAgIGFkZGVkIHRvIFRyYW5zZm9ybWF0aW9uTWF0cml4IGluIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODY4CisKKyAgICAgICAgVGVz
dDogdHJhbnNmb3Jtcy8zZC9jc3NtYXRyaXgtM2QtaW50ZXJmYWNlLnhodG1sCisKKyAgICAgICAg
KiBjc3MvV2ViS2l0Q1NTTWF0cml4LmNwcDoKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTTWF0cml4
Lmg6CisgICAgICAgICogY3NzL1dlYktpdENTU01hdHJpeC5pZGw6CisKIDIwMDktMDItMDYgIERh
cmluIEZpc2hlciAgPGRhcmluQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBF
cmljIFNlaWRlbC4KSW5kZXg6IFdlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcAkocmV2aXNpb24gNDA3OTcp
CisrKyBXZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw2ICszMyw4IEBACiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJXZWJLaXRD
U1NNYXRyaXguaCIKIAorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogV2ViS2l0Q1NTTWF0cml4OjpXZWJLaXRDU1NNYXRyaXgoKQpAQCAtOTMsMTQg
Kzk1LDE0IEBAIHZvaWQgV2ViS2l0Q1NTTWF0cml4OjpzZXRNYXRyaXhWYWx1ZShjb24KIH0KIAog
Ly8gVGhpcyBpcyBhIG11bHRSaWdodCAodGhpcyA9IHRoaXMgKiBzZWNvbmRNYXRyaXgpCi1QYXNz
UmVmUHRyPFdlYktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4OjptdWx0aXBseShXZWJLaXRD
U1NNYXRyaXgqIHNlY29uZE1hdHJpeCkKK1Bhc3NSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJL
aXRDU1NNYXRyaXg6Om11bHRpcGx5KFdlYktpdENTU01hdHJpeCogc2Vjb25kTWF0cml4KSBjb25z
dAogewogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRtcChtX21hdHJpeCk7CiAgICAgdG1wLm11
bHRpcGx5KHNlY29uZE1hdHJpeC0+bV9tYXRyaXgpOwogICAgIHJldHVybiBXZWJLaXRDU1NNYXRy
aXg6OmNyZWF0ZSh0bXApOwogfQogCi1QYXNzUmVmUHRyPFdlYktpdENTU01hdHJpeD4gV2ViS2l0
Q1NTTWF0cml4OjppbnZlcnNlKEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxXZWJLaXRD
U1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6aW52ZXJzZShFeGNlcHRpb25Db2RlJiBlYykgY29u
c3QKIHsKICAgICBpZiAoIW1fbWF0cml4LmlzSW52ZXJ0aWJsZSgpKSB7CiAgICAgICAgIGVjID0g
Tk9UX1NVUFBPUlRFRF9FUlI7CkBAIC0xMTAsMzUgKzExMiw3MyBAQCBQYXNzUmVmUHRyPFdlYktp
dENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0CiAgICAgcmV0dXJuIFdlYktpdENTU01hdHJpeDo6Y3Jl
YXRlKG1fbWF0cml4LmludmVyc2UoKSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViS2l0Q1NTTWF0cml4
PiBXZWJLaXRDU1NNYXRyaXg6OnRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5KQorUGFzc1JlZlB0
cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6dHJhbnNsYXRlKGRvdWJsZSB4LCBk
b3VibGUgeSwgZG91YmxlIHopIGNvbnN0CiB7CiAgICAgaWYgKGlzbmFuKHgpKQogICAgICAgICB4
ID0gMDsgCiAgICAgaWYgKGlzbmFuKHkpKQogICAgICAgICB5ID0gMDsgCi0gICAgcmV0dXJuIFdl
YktpdENTU01hdHJpeDo6Y3JlYXRlKG1fbWF0cml4LnRyYW5zbGF0ZSh4LCB5KSk7CisgICAgaWYg
KGlzbmFuKHopKQorICAgICAgICB6ID0gMDsKKyAgICByZXR1cm4gV2ViS2l0Q1NTTWF0cml4Ojpj
cmVhdGUoVHJhbnNmb3JtYXRpb25NYXRyaXgobV9tYXRyaXgpLnRyYW5zbGF0ZTNkKHgsIHksIHop
KTsKIH0KIAotUGFzc1JlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6c2Nh
bGUoZmxvYXQgc2NhbGVYLCBmbG9hdCBzY2FsZVkpCitQYXNzUmVmUHRyPFdlYktpdENTU01hdHJp
eD4gV2ViS2l0Q1NTTWF0cml4OjpzY2FsZShkb3VibGUgc2NhbGVYLCBkb3VibGUgc2NhbGVZLCBk
b3VibGUgc2NhbGVaKSBjb25zdAogewotICAgIGlmIChpc25hbihzY2FsZVgpKQotICAgICAgICBz
Y2FsZVggPSAxOyAKLSAgICBpZiAoaXNuYW4oc2NhbGVZKSkKLSAgICAgICAgc2NhbGVZID0gc2Nh
bGVYOyAKLSAgICByZXR1cm4gV2ViS2l0Q1NTTWF0cml4OjpjcmVhdGUobV9tYXRyaXguc2NhbGVO
b25Vbmlmb3JtKHNjYWxlWCxzY2FsZVkpKTsKKyAgICAgaWYgKGlzbmFuKHNjYWxlWCkpCisgICAg
ICAgICBzY2FsZVggPSAxOyAKKyAgICAgaWYgKGlzbmFuKHNjYWxlWSkpCisgICAgICAgICBzY2Fs
ZVkgPSBzY2FsZVg7IAorICAgIGlmIChpc25hbihzY2FsZVopKQorICAgICAgICBzY2FsZVogPSAx
OyAKKyAgICByZXR1cm4gV2ViS2l0Q1NTTWF0cml4OjpjcmVhdGUoVHJhbnNmb3JtYXRpb25NYXRy
aXgobV9tYXRyaXgpLnNjYWxlM2Qoc2NhbGVYLCBzY2FsZVksIHNjYWxlWikpOwogfQogCi1QYXNz
UmVmUHRyPFdlYktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4Ojpyb3RhdGUoZmxvYXQgcm90
KQorUGFzc1JlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6cm90YXRlKGRv
dWJsZSByb3RYLCBkb3VibGUgcm90WSwgZG91YmxlIHJvdFopIGNvbnN0CiB7Ci0gICAgaWYgKGlz
bmFuKHJvdCkpCi0gICAgICAgIHJvdCA9IDA7Ci0gICAgcmV0dXJuIFdlYktpdENTU01hdHJpeDo6
Y3JlYXRlKG1fbWF0cml4LnJvdGF0ZShyb3QpKTsKKyAgICBpZiAoaXNuYW4ocm90WCkpCisgICAg
ICAgIHJvdFggPSAwOyAKKyAgICAgICAgCisgICAgaWYgKGlzbmFuKHJvdFkpICYmIGlzbmFuKHJv
dFopKSB7CisgICAgICAgIHJvdFogPSByb3RYOworICAgICAgICByb3RYID0gMDsKKyAgICAgICAg
cm90WSA9IDA7CisgICAgfQorCisgICAgaWYgKGlzbmFuKHJvdFkpKQorICAgICAgICByb3RZID0g
MDsgCisgICAgaWYgKGlzbmFuKHJvdFopKQorICAgICAgICByb3RaID0gMDsgCisgICAgcmV0dXJu
IFdlYktpdENTU01hdHJpeDo6Y3JlYXRlKFRyYW5zZm9ybWF0aW9uTWF0cml4KG1fbWF0cml4KS5y
b3RhdGUzZChyb3RYLCByb3RZLCByb3RaKSk7CiB9CiAKLVN0cmluZyBXZWJLaXRDU1NNYXRyaXg6
OnRvU3RyaW5nKCkKK1Bhc3NSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6
OnJvdGF0ZUF4aXNBbmdsZShkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB6LCBkb3VibGUgYW5n
bGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJtYXRyaXgoJWYsICVmLCAl
ZiwgJWYsICVmLCAlZikiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbWF0cml4LmEo
KSwgbV9tYXRyaXguYigpLCBtX21hdHJpeC5jKCksIG1fbWF0cml4LmQoKSwgbV9tYXRyaXguZSgp
LCBtX21hdHJpeC5mKCkpOworICAgIGlmIChpc25hbih4KSkKKyAgICAgICAgeCA9IDA7CisgICAg
aWYgKGlzbmFuKHkpKQorICAgICAgICB5ID0gMDsKKyAgICBpZiAoaXNuYW4oeikpCisgICAgICAg
IHogPSAwOworICAgIGlmIChpc25hbihhbmdsZSkpCisgICAgICAgIGFuZ2xlID0gMDsKKyAgICBp
ZiAoeCA9PSAwICYmIHkgPT0gMCAmJiB6ID09IDApCisgICAgICAgIHogPSAxOworICAgIHJldHVy
biBXZWJLaXRDU1NNYXRyaXg6OmNyZWF0ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeChtX21hdHJpeCku
cm90YXRlM2QoeCwgeSwgeiwgYW5nbGUpKTsKIH0KIAorU3RyaW5nIFdlYktpdENTU01hdHJpeDo6
dG9TdHJpbmcoKQoreworICAgIC8vIEZJWE1FIC0gTmVlZCB0byBlbnN1cmUgdmFsaWQgQ1NTIGZs
b2F0aW5nIHBvaW50IHZhbHVlcyAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNjc0KQorICAgIGlmIChtX21hdHJpeC5pc0FmZmluZSgpKQorICAgICAgICByZXR1cm4g
U3RyaW5nOjpmb3JtYXQoIm1hdHJpeCglZiwgJWYsICVmLCAlZiwgJWYsICVmKSIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fbWF0cml4LmEoKSwgbV9tYXRyaXguYigpLCBtX21h
dHJpeC5jKCksIG1fbWF0cml4LmQoKSwgbV9tYXRyaXguZSgpLCBtX21hdHJpeC5mKCkpOworICAg
IGVsc2UKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJtYXRyaXgzZCglZiwgJWYsICVm
LCAlZiwgJWYsICVmLCAlZiwgJWYsICVmLCAlZiwgJWYsICVmLCAlZiwgJWYsICVmLCAlZikiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX21hdHJpeC5tMTEoKSwgbV9tYXRyaXgu
bTEyKCksIG1fbWF0cml4Lm0xMygpLCBtX21hdHJpeC5tMTQoKSwgCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fbWF0cml4Lm0yMSgpLCBtX21hdHJpeC5tMjIoKSwgbV9tYXRyaXgu
bTIzKCksIG1fbWF0cml4Lm0yNCgpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9tYXRyaXgubTMxKCksIG1fbWF0cml4Lm0zMigpLCBtX21hdHJpeC5tMzMoKSwgbV9tYXRyaXgu
bTM0KCksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX21hdHJpeC5tNDEoKSwg
bV9tYXRyaXgubTQyKCksIG1fbWF0cml4Lm00MygpLCBtX21hdHJpeC5tNDQoKSk7Cit9CisgCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXgu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguaAkocmV2aXNpb24g
NDA3OTcpCisrKyBXZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguaAkod29ya2luZyBjb3B5KQpA
QCAtNTUsMzAgKzU1LDkwIEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIH5XZWJLaXRDU1NN
YXRyaXgoKTsKIAotICAgIGZsb2F0IGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxmbG9h
dD4obV9tYXRyaXguYSgpKTsgfQotICAgIGZsb2F0IGIoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxmbG9hdD4obV9tYXRyaXguYigpKTsgfQotICAgIGZsb2F0IGMoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxmbG9hdD4obV9tYXRyaXguYygpKTsgfQotICAgIGZsb2F0IGQoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obV9tYXRyaXguZCgpKTsgfQotICAgIGZsb2F0
IGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obV9tYXRyaXguZSgpKTsgfQot
ICAgIGZsb2F0IGYoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obV9tYXRyaXgu
ZigpKTsgfQotICAgIAotICAgIHZvaWQgc2V0QShmbG9hdCBmKSB7IG1fbWF0cml4LnNldEEoZik7
IH0KLSAgICB2b2lkIHNldEIoZmxvYXQgZikgeyBtX21hdHJpeC5zZXRCKGYpOyB9Ci0gICAgdm9p
ZCBzZXRDKGZsb2F0IGYpIHsgbV9tYXRyaXguc2V0QyhmKTsgfQotICAgIHZvaWQgc2V0RChmbG9h
dCBmKSB7IG1fbWF0cml4LnNldEQoZik7IH0KLSAgICB2b2lkIHNldEUoZmxvYXQgZikgeyBtX21h
dHJpeC5zZXRFKGYpOyB9Ci0gICAgdm9pZCBzZXRGKGZsb2F0IGYpIHsgbV9tYXRyaXguc2V0Rihm
KTsgfQorICAgIGRvdWJsZSBhKCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXguYSgpOyB9CisgICAg
ZG91YmxlIGIoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeC5iKCk7IH0KKyAgICBkb3VibGUgYygp
IGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4LmMoKTsgfQorICAgIGRvdWJsZSBkKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXRyaXguZCgpOyB9CisgICAgZG91YmxlIGUoKSBjb25zdCB7IHJldHVybiBtX21h
dHJpeC5lKCk7IH0KKyAgICBkb3VibGUgZigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4LmYoKTsg
fQorICAgIAorICAgIHZvaWQgc2V0QShkb3VibGUgZikgeyBtX21hdHJpeC5zZXRBKGYpOyB9Cisg
ICAgdm9pZCBzZXRCKGRvdWJsZSBmKSB7IG1fbWF0cml4LnNldEIoZik7IH0KKyAgICB2b2lkIHNl
dEMoZG91YmxlIGYpIHsgbV9tYXRyaXguc2V0QyhmKTsgfQorICAgIHZvaWQgc2V0RChkb3VibGUg
ZikgeyBtX21hdHJpeC5zZXREKGYpOyB9CisgICAgdm9pZCBzZXRFKGRvdWJsZSBmKSB7IG1fbWF0
cml4LnNldEUoZik7IH0KKyAgICB2b2lkIHNldEYoZG91YmxlIGYpIHsgbV9tYXRyaXguc2V0Rihm
KTsgfQorIAorICAgIGRvdWJsZSBtMTEoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeC5tMTEoKTsg
fQorICAgIGRvdWJsZSBtMTIoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeC5tMTIoKTsgfQorICAg
IGRvdWJsZSBtMTMoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeC5tMTMoKTsgfQorICAgIGRvdWJs
ZSBtMTQoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeC5tMTQoKTsgfQorICAgIGRvdWJsZSBtMjEo
KSBjb25zdCB7IHJldHVybiBtX21hdHJpeC5tMjEoKTsgfQorICAgIGRvdWJsZSBtMjIoKSBjb25z
dCB7IHJldHVybiBtX21hdHJpeC5tMjIoKTsgfQorICAgIGRvdWJsZSBtMjMoKSBjb25zdCB7IHJl
dHVybiBtX21hdHJpeC5tMjMoKTsgfQorICAgIGRvdWJsZSBtMjQoKSBjb25zdCB7IHJldHVybiBt
X21hdHJpeC5tMjQoKTsgfQorICAgIGRvdWJsZSBtMzEoKSBjb25zdCB7IHJldHVybiBtX21hdHJp
eC5tMzEoKTsgfQorICAgIGRvdWJsZSBtMzIoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeC5tMzIo
KTsgfQorICAgIGRvdWJsZSBtMzMoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeC5tMzMoKTsgfQor
ICAgIGRvdWJsZSBtMzQoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeC5tMzQoKTsgfQorICAgIGRv
dWJsZSBtNDEoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeC5tNDEoKTsgfQorICAgIGRvdWJsZSBt
NDIoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeC5tNDIoKTsgfQorICAgIGRvdWJsZSBtNDMoKSBj
b25zdCB7IHJldHVybiBtX21hdHJpeC5tNDMoKTsgfQorICAgIGRvdWJsZSBtNDQoKSBjb25zdCB7
IHJldHVybiBtX21hdHJpeC5tNDQoKTsgfQorICAgIAorICAgIHZvaWQgc2V0TTExKGRvdWJsZSBm
KSB7IG1fbWF0cml4LnNldE0xMShmKTsgfQorICAgIHZvaWQgc2V0TTEyKGRvdWJsZSBmKSB7IG1f
bWF0cml4LnNldE0xMihmKTsgfQorICAgIHZvaWQgc2V0TTEzKGRvdWJsZSBmKSB7IG1fbWF0cml4
LnNldE0xMyhmKTsgfQorICAgIHZvaWQgc2V0TTE0KGRvdWJsZSBmKSB7IG1fbWF0cml4LnNldE0x
NChmKTsgfQorICAgIHZvaWQgc2V0TTIxKGRvdWJsZSBmKSB7IG1fbWF0cml4LnNldE0yMShmKTsg
fQorICAgIHZvaWQgc2V0TTIyKGRvdWJsZSBmKSB7IG1fbWF0cml4LnNldE0yMihmKTsgfQorICAg
IHZvaWQgc2V0TTIzKGRvdWJsZSBmKSB7IG1fbWF0cml4LnNldE0yMyhmKTsgfQorICAgIHZvaWQg
c2V0TTI0KGRvdWJsZSBmKSB7IG1fbWF0cml4LnNldE0yNChmKTsgfQorICAgIHZvaWQgc2V0TTMx
KGRvdWJsZSBmKSB7IG1fbWF0cml4LnNldE0zMShmKTsgfQorICAgIHZvaWQgc2V0TTMyKGRvdWJs
ZSBmKSB7IG1fbWF0cml4LnNldE0zMihmKTsgfQorICAgIHZvaWQgc2V0TTMzKGRvdWJsZSBmKSB7
IG1fbWF0cml4LnNldE0zMyhmKTsgfQorICAgIHZvaWQgc2V0TTM0KGRvdWJsZSBmKSB7IG1fbWF0
cml4LnNldE0zNChmKTsgfQorICAgIHZvaWQgc2V0TTQxKGRvdWJsZSBmKSB7IG1fbWF0cml4LnNl
dE00MShmKTsgfQorICAgIHZvaWQgc2V0TTQyKGRvdWJsZSBmKSB7IG1fbWF0cml4LnNldE00Mihm
KTsgfQorICAgIHZvaWQgc2V0TTQzKGRvdWJsZSBmKSB7IG1fbWF0cml4LnNldE00MyhmKTsgfQor
ICAgIHZvaWQgc2V0TTQ0KGRvdWJsZSBmKSB7IG1fbWF0cml4LnNldE00NChmKTsgfQogIAogICAg
IHZvaWQgc2V0TWF0cml4VmFsdWUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICAKLSAgICAvLyB0aGlzID0gdGhpcyAqIHNlY29uZE1hdHJpeAotICAgIFBhc3NSZWZQ
dHI8V2ViS2l0Q1NTTWF0cml4PiBtdWx0aXBseShXZWJLaXRDU1NNYXRyaXgqIHNlY29uZE1hdHJp
eCk7CisgICAgLy8gVGhlIGZvbGxvd2luZyBtYXRoIGZ1bmN0aW9uIHJldHVybiBhIG5ldyBtYXRy
aXggd2l0aCB0aGUgCisgICAgLy8gc3BlY2lmaWVkIG9wZXJhdGlvbiBhcHBsaWVkLiBUaGUgdGhp
cyB2YWx1ZSBpcyBub3QgbW9kaWZpZWQuCisgICAgCisgICAgLy8gTXVsdGlwbHkgdGhpcyBtYXRy
aXggYnkgc2Vjb25kTWF0cml4LCBvbiB0aGUgcmlnaHQgKHJlc3VsdCA9IHRoaXMgKiBzZWNvbmRN
YXRyaXgpCisgICAgUGFzc1JlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IG11bHRpcGx5KFdlYktpdENT
U01hdHJpeCogc2Vjb25kTWF0cml4KSBjb25zdDsKICAgICAKLSAgICAvLyBGSVhNRTogd2UgcmVh
bGx5IHNob3VsZCBoYXZlIGFuIGV4Y2VwdGlvbiBoZXJlLCBmb3Igd2hlbiBtYXRyaXggaXMgbm90
IGludmVydGlibGUKLSAgICBQYXNzUmVmUHRyPFdlYktpdENTU01hdHJpeD4gaW52ZXJzZShFeGNl
cHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IHRyYW5zbGF0ZShm
bG9hdCB4LCBmbG9hdCB5KTsKLSAgICBQYXNzUmVmUHRyPFdlYktpdENTU01hdHJpeD4gc2NhbGUo
ZmxvYXQgc2NhbGVYLCBmbG9hdCBzY2FsZVkpOwotICAgIFBhc3NSZWZQdHI8V2ViS2l0Q1NTTWF0
cml4PiByb3RhdGUoZmxvYXQgcm90KTsKKyAgICAvLyBSZXR1cm4gdGhlIGludmVyc2Ugb2YgdGhp
cyBtYXRyaXguIFRocm93IGFuIGV4Y2VwdGlvbiBpZiB0aGUgbWF0cml4IGlzIG5vdCBpbnZlcnRp
YmxlCisgICAgUGFzc1JlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IGludmVyc2UoRXhjZXB0aW9uQ29k
ZSYpIGNvbnN0OworICAgIAorICAgIC8vIFJldHVybiB0aGlzIG1hdHJpeCB0cmFuc2xhdGVkIGJ5
IHRoZSBwYXNzZWQgdmFsdWVzLgorICAgIC8vIFBhc3NpbmcgYSBOYU4gd2lsbCB1c2UgYSB2YWx1
ZSBvZiAwLiBUaGlzIGFsbG93cyB0aGUgM0QgZm9ybSB0byB1c2VkIGZvciAyRCBvcGVyYXRpb25z
CisgICAgLy8gT3BlcmF0aW9uIGlzIHBlcmZvcm1lZCBhcyB0aG91Z2ggdGhlIHRoaXMgbWF0cml4
IGlzIG11bHRpcGxpZWQgYnkgYSBtYXRyaXggd2l0aAorICAgIC8vIHRoZSB0cmFuc2xhdGlvbiB2
YWx1ZXMgb24gdGhlIGxlZnQgKHJlc3VsdCA9IHRyYW5zbGF0aW9uKHgseSx6KSAqIHRoaXMpCisg
ICAgUGFzc1JlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IHRyYW5zbGF0ZShkb3VibGUgeCwgZG91Ymxl
IHksIGRvdWJsZSB6KSBjb25zdDsKKyAgICAKKyAgICAvLyBSZXR1cm5zIHRoaXMgbWF0cml4IHNj
YWxlZCBieSB0aGUgcGFzc2VkIHZhbHVlcy4KKyAgICAvLyBQYXNzaW5nIHNjYWxlWCBvciBzY2Fs
ZVogYXMgTmFOIHVzZXMgYSB2YWx1ZSBvZiAxLCBidXQgcGFzc2luZyBzY2FsZVkgb2YgTmFOIAor
ICAgIC8vIG1ha2VzIGl0IHRoZSBzYW1lIGFzIHNjYWxlWC4gVGhpcyBhbGxvd3MgdGhlIDNEIGZv
cm0gdG8gdXNlZCBmb3IgMkQgb3BlcmF0aW9ucworICAgIC8vIE9wZXJhdGlvbiBpcyBwZXJmb3Jt
ZWQgYXMgdGhvdWdoIHRoZSB0aGlzIG1hdHJpeCBpcyBtdWx0aXBsaWVkIGJ5IGEgbWF0cml4IHdp
dGgKKyAgICAvLyB0aGUgc2NhbGUgdmFsdWVzIG9uIHRoZSBsZWZ0IChyZXN1bHQgPSBzY2FsZSh4
LHkseikgKiB0aGlzKQorICAgIFBhc3NSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBzY2FsZShkb3Vi
bGUgc2NhbGVYLCBkb3VibGUgc2NhbGVZLCBkb3VibGUgc2NhbGVaKSBjb25zdDsKKworICAgIC8v
IFJldHVybnMgdGhpcyBtYXRyaXggcm90YXRlZCBieSB0aGUgcGFzc2VkIHZhbHVlcy4KKyAgICAv
LyBJZiByb3RZIGFuZCByb3RaIGFyZSBOYU4sIHJvdGF0ZSBhYm91dCBaIChyb3RYPTAsIHJvdGF0
ZVk9MCwgcm90YXRlWj1yb3RYKS4KKyAgICAvLyBPdGhlcndpc2UgdXNlIGEgcm90YXRpb24gdmFs
dWUgb2YgMCBmb3IgYW55IHBhc3NlZCBOYU4uICAgIAorICAgIC8vIE9wZXJhdGlvbiBpcyBwZXJm
b3JtZWQgYXMgdGhvdWdoIHRoZSB0aGlzIG1hdHJpeCBpcyBtdWx0aXBsaWVkIGJ5IGEgbWF0cml4
IHdpdGgKKyAgICAvLyB0aGUgcm90YXRpb24gdmFsdWVzIG9uIHRoZSBsZWZ0IChyZXN1bHQgPSBy
b3RhdGlvbih4LHkseikgKiB0aGlzKQorICAgIFBhc3NSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBy
b3RhdGUoZG91YmxlIHJvdFgsIGRvdWJsZSByb3RZLCBkb3VibGUgcm90WikgY29uc3Q7CisgICAg
CisgICAgLy8gUmV0dXJucyB0aGlzIG1hdHJpeCByb3RhdGVkIGFib3V0IHRoZSBwYXNzZWQgYXhp
cyBieSB0aGUgcGFzc2VkIGFuZ2xlLgorICAgIC8vIFBhc3NpbmcgYSBOYU4gd2lsbCB1c2UgYSB2
YWx1ZSBvZiAwLiBJZiB0aGUgYXhpcyBpcyAoMCwwLDApIHVzZSBhIHZhbHVlCisgICAgLy8gT3Bl
cmF0aW9uIGlzIHBlcmZvcm1lZCBhcyB0aG91Z2ggdGhlIHRoaXMgbWF0cml4IGlzIG11bHRpcGxp
ZWQgYnkgYSBtYXRyaXggd2l0aAorICAgIC8vIHRoZSByb3RhdGlvbiB2YWx1ZXMgb24gdGhlIGxl
ZnQgKHJlc3VsdCA9IHJvdGF0aW9uKHgseSx6LGFuZ2xlKSAqIHRoaXMpCisgICAgUGFzc1JlZlB0
cjxXZWJLaXRDU1NNYXRyaXg+IHJvdGF0ZUF4aXNBbmdsZShkb3VibGUgeCwgZG91YmxlIHksIGRv
dWJsZSB6LCBkb3VibGUgYW5nbGUpIGNvbnN0OwogICAgIAogICAgIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0cmFuc2Zvcm0oKSB7IHJldHVybiBtX21hdHJpeDsgfQogICAgIApJbmRleDog
V2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nz
cy9XZWJLaXRDU1NNYXRyaXguaWRsCShyZXZpc2lvbiA0MDc5NykKKysrIFdlYkNvcmUvY3NzL1dl
YktpdENTU01hdHJpeC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDE5ICsyOCw1NyBAQCBtb2R1
bGUgY3NzIHsKICAgICAvLyBJbnRyb2R1Y2VkIGluIERPTSBMZXZlbCA/OgogICAgIGludGVyZmFj
ZSBXZWJLaXRDU1NNYXRyaXggewogCi0gICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBhOwotICAgICAg
ICBhdHRyaWJ1dGUgZmxvYXQgYjsKLSAgICAgICAgYXR0cmlidXRlIGZsb2F0IGM7Ci0gICAgICAg
IGF0dHJpYnV0ZSBmbG9hdCBkOwotICAgICAgICBhdHRyaWJ1dGUgZmxvYXQgZTsKLSAgICAgICAg
YXR0cmlidXRlIGZsb2F0IGY7CisgICAgICAgIC8vIFRoZXNlIGF0dHJpYnV0ZXMgYXJlIHNpbXBs
ZSBhbGlhc2VzIGZvciBjZXJ0YWluIGVsZW1lbnRzIG9mIHRoZSA0eDQgbWF0cml4CisgICAgICAg
IGF0dHJpYnV0ZSBkb3VibGUgYTsgLy8gYWxpYXMgZm9yIG0xMQorICAgICAgICBhdHRyaWJ1dGUg
ZG91YmxlIGI7IC8vIGFsaWFzIGZvciBtMTIKKyAgICAgICAgYXR0cmlidXRlIGRvdWJsZSBjOyAv
LyBhbGlhcyBmb3IgbTIxCisgICAgICAgIGF0dHJpYnV0ZSBkb3VibGUgZDsgLy8gYWxpYXMgZm9y
IG0yMgorICAgICAgICBhdHRyaWJ1dGUgZG91YmxlIGU7IC8vIGFsaWFzIGZvciBtNDEKKyAgICAg
ICAgYXR0cmlidXRlIGRvdWJsZSBmOyAvLyBhbGlhcyBmb3IgbTQyCiAKLSAgICAgICAgdm9pZCAg
ICAgICAgICAgIHNldE1hdHJpeFZhbHVlKGluIERPTVN0cmluZyBzdHJpbmcpIHJhaXNlcyAoRE9N
RXhjZXB0aW9uKTsKLSAgICAgICAgV2ViS2l0Q1NTTWF0cml4IG11bHRpcGx5KGluIFdlYktpdENT
U01hdHJpeCBzZWNvbmRNYXRyaXgpOwotICAgICAgICBXZWJLaXRDU1NNYXRyaXggaW52ZXJzZSgp
IHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKLSAgICAgICAgV2ViS2l0Q1NTTWF0cml4IHRyYW5zbGF0
ZShpbiBmbG9hdCB4LCBpbiBmbG9hdCB5KTsKLSAgICAgICAgV2ViS2l0Q1NTTWF0cml4IHNjYWxl
KGluIGZsb2F0IHNjYWxlWCwgaW4gZmxvYXQgc2NhbGVZKTsKLSAgICAgICAgV2ViS2l0Q1NTTWF0
cml4IHJvdGF0ZShpbiBmbG9hdCByb3QpOworICAgICAgICBhdHRyaWJ1dGUgZG91YmxlIG0xMTsK
KyAgICAgICAgYXR0cmlidXRlIGRvdWJsZSBtMTI7CisgICAgICAgIGF0dHJpYnV0ZSBkb3VibGUg
bTEzOworICAgICAgICBhdHRyaWJ1dGUgZG91YmxlIG0xNDsKKyAgICAgICAgYXR0cmlidXRlIGRv
dWJsZSBtMjE7CisgICAgICAgIGF0dHJpYnV0ZSBkb3VibGUgbTIyOworICAgICAgICBhdHRyaWJ1
dGUgZG91YmxlIG0yMzsKKyAgICAgICAgYXR0cmlidXRlIGRvdWJsZSBtMjQ7CisgICAgICAgIGF0
dHJpYnV0ZSBkb3VibGUgbTMxOworICAgICAgICBhdHRyaWJ1dGUgZG91YmxlIG0zMjsKKyAgICAg
ICAgYXR0cmlidXRlIGRvdWJsZSBtMzM7CisgICAgICAgIGF0dHJpYnV0ZSBkb3VibGUgbTM0Owor
ICAgICAgICBhdHRyaWJ1dGUgZG91YmxlIG00MTsKKyAgICAgICAgYXR0cmlidXRlIGRvdWJsZSBt
NDI7CisgICAgICAgIGF0dHJpYnV0ZSBkb3VibGUgbTQzOworICAgICAgICBhdHRyaWJ1dGUgZG91
YmxlIG00NDsKKworICAgICAgICB2b2lkIHNldE1hdHJpeFZhbHVlKGluIERPTVN0cmluZyBzdHJp
bmcpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgCisgICAgICAgIC8vIE11bHRpcGx5
IHRoaXMgbWF0cml4IGJ5IHNlY29uZE1hdHJpeCwgb24gdGhlIHJpZ2h0IChyZXN1bHQgPSB0aGlz
ICogc2Vjb25kTWF0cml4KQorICAgICAgICBbSW1tdXRhYmxlXSBXZWJLaXRDU1NNYXRyaXggbXVs
dGlwbHkoaW4gV2ViS2l0Q1NTTWF0cml4IHNlY29uZE1hdHJpeCk7CisgICAgICAgIAorICAgICAg
ICAvLyBSZXR1cm4gdGhlIGludmVyc2Ugb2YgdGhpcyBtYXRyaXguIFRocm93IGFuIGV4Y2VwdGlv
biBpZiB0aGUgbWF0cml4IGlzIG5vdCBpbnZlcnRpYmxlCisgICAgICAgIFtJbW11dGFibGVdIFdl
YktpdENTU01hdHJpeCBpbnZlcnNlKCkgcmFpc2VzIChET01FeGNlcHRpb24pOworICAgICAgICAK
KyAgICAgICAgLy8gUmV0dXJuIHRoaXMgbWF0cml4IHRyYW5zbGF0ZWQgYnkgdGhlIHBhc3NlZCB2
YWx1ZXMuCisgICAgICAgIC8vIFBhc3NpbmcgYSBOYU4gd2lsbCB1c2UgYSB2YWx1ZSBvZiAwLiBU
aGlzIGFsbG93cyB0aGUgM0QgZm9ybSB0byB1c2VkIGZvciAyRCBvcGVyYXRpb25zICAgIAorICAg
ICAgICBbSW1tdXRhYmxlXSBXZWJLaXRDU1NNYXRyaXggdHJhbnNsYXRlKGluIGRvdWJsZSB4LCBp
biBkb3VibGUgeSwgaW4gZG91YmxlIHopOworICAgICAgICAKKyAgICAgICAgLy8gUmV0dXJucyB0
aGlzIG1hdHJpeCBzY2FsZWQgYnkgdGhlIHBhc3NlZCB2YWx1ZXMuCisgICAgICAgIC8vIFBhc3Np
bmcgc2NhbGVYIG9yIHNjYWxlWiBhcyBOYU4gdXNlcyBhIHZhbHVlIG9mIDEsIGJ1dCBwYXNzaW5n
IHNjYWxlWSBvZiBOYU4gCisgICAgICAgIC8vIG1ha2VzIGl0IHRoZSBzYW1lIGFzIHNjYWxlWC4g
VGhpcyBhbGxvd3MgdGhlIDNEIGZvcm0gdG8gdXNlZCBmb3IgMkQgb3BlcmF0aW9ucworICAgICAg
ICBbSW1tdXRhYmxlXSBXZWJLaXRDU1NNYXRyaXggc2NhbGUoaW4gZG91YmxlIHNjYWxlWCwgaW4g
ZG91YmxlIHNjYWxlWSwgaW4gZG91YmxlIHNjYWxlWik7CisgICAgICAgIAorICAgICAgICAvLyBS
ZXR1cm5zIHRoaXMgbWF0cml4IHJvdGF0ZWQgYnkgdGhlIHBhc3NlZCB2YWx1ZXMuCisgICAgICAg
IC8vIElmIHJvdFkgYW5kIHJvdFogYXJlIE5hTiwgcm90YXRlIGFib3V0IFogKHJvdFg9MCwgcm90
YXRlWT0wLCByb3RhdGVaPXJvdFgpLgorICAgICAgICAvLyBPdGhlcndpc2UgdXNlIGEgcm90YXRp
b24gdmFsdWUgb2YgMCBmb3IgYW55IHBhc3NlZCBOYU4uICAgIAorICAgICAgICBbSW1tdXRhYmxl
XSBXZWJLaXRDU1NNYXRyaXggcm90YXRlKGluIGRvdWJsZSByb3RYLCBpbiBkb3VibGUgcm90WSwg
aW4gZG91YmxlIHJvdFopOworICAgICAgICAKKyAgICAgICAgLy8gUmV0dXJucyB0aGlzIG1hdHJp
eCByb3RhdGVkIGFib3V0IHRoZSBwYXNzZWQgYXhpcyBieSB0aGUgcGFzc2VkIGFuZ2xlLgorICAg
ICAgICAvLyBQYXNzaW5nIGEgTmFOIHdpbGwgdXNlIGEgdmFsdWUgb2YgMC4gSWYgdGhlIGF4aXMg
aXMgKDAsMCwwKSB1c2UgYSB2YWx1ZQorICAgICAgICAvLyBvZiAoMCwwLDEpLgorICAgICAgICBb
SW1tdXRhYmxlXSBXZWJLaXRDU1NNYXRyaXggcm90YXRlQXhpc0FuZ2xlKGluIGRvdWJsZSB4LCBp
biBkb3VibGUgeSwgaW4gZG91YmxlIHosIGluIGRvdWJsZSBhbmdsZSk7CiAgICAgICAgIAogICAg
ICAgICBbRG9udEVudW1dIERPTVN0cmluZyB0b1N0cmluZygpOwogICAgIH07CkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA0MDc5NykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE3IEBACisyMDA5LTAyLTA5ICBDaHJpcyBNYXJyaW4gIDxjbWFycmluQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2ODkKKworICAgICAgICBT
aW5jZSB0aGUgQ1NTIHBhcnNlciBkb2VzIG5vdCB5ZXQgaGFuZGxlIGFueSBvZiB0aGUgM0QKKyAg
ICAgICAgZnVuY3Rpb25zIGZvciAtd2Via2l0LXRyYW5zZm9ybSwgdGVzdHMgZm9yIHRoZXNlIGZl
YXR1cmVzCisgICAgICAgIGFyZSBjdXJyZW50bHkgY29tbWVudGVkIG91dC4KKworICAgICAgICAq
IHRyYW5zZm9ybXMvM2Q6IEFkZGVkLgorICAgICAgICAqIHRyYW5zZm9ybXMvM2QvY3NzbWF0cml4
LTNkLWludGVyZmFjZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRyYW5zZm9ybXMv
M2QvY3NzbWF0cml4LTNkLWludGVyZmFjZS54aHRtbDogQWRkZWQuCisKIDIwMDktMDItMDkgIERp
bWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEYXZlIEh5YXR0LgpJbmRleDogTGF5b3V0VGVzdHMvdHJhbnNmb3Jtcy8yZC9jc3NtYXRy
aXgtaW50ZXJmYWNlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy90cmFu
c2Zvcm1zLzJkL2Nzc21hdHJpeC1pbnRlcmZhY2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0MDc5
NykKKysrIExheW91dFRlc3RzL3RyYW5zZm9ybXMvMmQvY3NzbWF0cml4LWludGVyZmFjZS1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTgsNiArOCwxNiBAQCBQQVNTIGRlZmF1bHQgY29u
c3RydWN0b3IKIFBBU1Mgb2JqZWN0IGNvbnN0cnVjdG9yCiBQQVNTIHN0cmluZyBjb25zdHJ1Y3Rv
cgogCitUZXN0IHRvU3RyaW5nCitQQVNTIGFbMF0gaXMgIm1hdHJpeCIKK1BBU1MgcGFyc2VGbG9h
dChhMlswXSkgaXMgMQorUEFTUyBwYXJzZUZsb2F0KGEyWzFdKSBpcyAwCitQQVNTIHBhcnNlRmxv
YXQoYTJbMl0pIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChhMlszXSkgaXMgMQorUEFTUyBwYXJzZUZs
b2F0KGEyWzRdKSBpcyAwCitQQVNTIHBhcnNlRmxvYXQoYTNbMF0pIGlzIDAKK1BBU1MgYTNbMV0g
aXMgIiIKKwogVGVzdCBiYWQgaW5wdXQgdG8gc3RyaW5nIGNvbnN0cnVjdG9yCiBQQVNTIG5ldyBX
ZWJLaXRDU1NNYXRyaXgoImJhbmFuYSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VS
UjogRE9NIEV4Y2VwdGlvbiAxMi4KIApAQCAtNTYsNiArNjYsMTQgQEAgUEFTUyBwYXJzZUZsb2F0
KG0zLmQpIGlzIDY0CiBQQVNTIHBhcnNlRmxvYXQobTMuZSkgaXMgMTAwCiBQQVNTIHBhcnNlRmxv
YXQobTMuZikgaXMgMTEyCiAKK1Rlc3QgaW1tdXRhYmlsaXR5IG9mIG11bHRpcGx5CitQQVNTIHBh
cnNlRmxvYXQobS5hKSBpcyAxCitQQVNTIHBhcnNlRmxvYXQobS5iKSBpcyAyCitQQVNTIHBhcnNl
RmxvYXQobS5jKSBpcyAzCitQQVNTIHBhcnNlRmxvYXQobS5kKSBpcyA0CitQQVNTIHBhcnNlRmxv
YXQobS5lKSBpcyA1CitQQVNTIHBhcnNlRmxvYXQobS5mKSBpcyA2CisKIFRlc3QgaW52ZXJzZQog
UEFTUyBwYXJzZUZsb2F0KG0yLmEpIGlzIDAuNQogUEFTUyBwYXJzZUZsb2F0KG0yLmIpIGlzIDAK
QEAgLTY0LDMzICs4Miw2NSBAQCBQQVNTIHBhcnNlRmxvYXQobTIuZCkgaXMgMC41CiBQQVNTIHBh
cnNlRmxvYXQobTIuZSkgaXMgLTUKIFBBU1MgcGFyc2VGbG9hdChtMi5mKSBpcyAtMTAKIAorVGVz
dCBpbW11dGFiaWxpdHkgb2YgaW52ZXJzZQorUEFTUyBwYXJzZUZsb2F0KG0uYSkgaXMgMgorUEFT
UyBwYXJzZUZsb2F0KG0uYikgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0uYykgaXMgMAorUEFTUyBw
YXJzZUZsb2F0KG0uZCkgaXMgMgorUEFTUyBwYXJzZUZsb2F0KG0uZSkgaXMgMTAKK1BBU1MgcGFy
c2VGbG9hdChtLmYpIGlzIDIwCisKIFRlc3QgdGhyb3dpbmcgZXhjZXB0aW9uIGZyb20gaW52ZXJz
ZQogUEFTUyBtLmludmVyc2UoKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURf
RVJSOiBET00gRXhjZXB0aW9uIDkuCiAKIFRlc3QgdHJhbnNsYXRlCi1QQVNTIG0uYSBpcyAxCi1Q
QVNTIG0uYiBpcyAwCi1QQVNTIG0uYyBpcyAwCi1QQVNTIG0uZCBpcyAxCi1QQVNTIG0uZSBpcyAx
MAotUEFTUyBtLmYgaXMgMjAKK1BBU1MgbTIuYSBpcyAxCitQQVNTIG0yLmIgaXMgMAorUEFTUyBt
Mi5jIGlzIDAKK1BBU1MgbTIuZCBpcyAxCitQQVNTIG0yLmUgaXMgMTAKK1BBU1MgbTIuZiBpcyAy
MAorCitUZXN0IGltbXV0YWJpbGl0eSBvZiB0cmFuc2xhdGUKK1BBU1MgcGFyc2VGbG9hdChtLmEp
IGlzIDEKK1BBU1MgcGFyc2VGbG9hdChtLmIpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtLmMpIGlz
IDAKK1BBU1MgcGFyc2VGbG9hdChtLmQpIGlzIDEKK1BBU1MgcGFyc2VGbG9hdChtLmUpIGlzIDAK
K1BBU1MgcGFyc2VGbG9hdChtLmYpIGlzIDAKIAogVGVzdCBzY2FsZQotUEFTUyBtLmEgaXMgMTAK
LVBBU1MgbS5iIGlzIDAKLVBBU1MgbS5jIGlzIDAKLVBBU1MgbS5kIGlzIDIwCi1QQVNTIG0uZSBp
cyAwCi1QQVNTIG0uZiBpcyAwCitQQVNTIG0yLmEgaXMgMTAKK1BBU1MgbTIuYiBpcyAwCitQQVNT
IG0yLmMgaXMgMAorUEFTUyBtMi5kIGlzIDIwCitQQVNTIG0yLmUgaXMgMAorUEFTUyBtMi5mIGlz
IDAKKworVGVzdCBpbW11dGFiaWxpdHkgb2Ygc2NhbGUKK1BBU1MgcGFyc2VGbG9hdChtLmEpIGlz
IDEKK1BBU1MgcGFyc2VGbG9hdChtLmIpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtLmMpIGlzIDAK
K1BBU1MgcGFyc2VGbG9hdChtLmQpIGlzIDEKK1BBU1MgcGFyc2VGbG9hdChtLmUpIGlzIDAKK1BB
U1MgcGFyc2VGbG9hdChtLmYpIGlzIDAKIAogVGVzdCByb3RhdGUKLVBBU1MgTWF0aC5yb3VuZCht
LmEqMTAwMDAwMCkvMTAwMDAwMCBpcyAwLjk4NDgwOAotUEFTUyBNYXRoLnJvdW5kKG0uYioxMDAw
MDAwKS8xMDAwMDAwIGlzIDAuMTczNjQ4Ci1QQVNTIE1hdGgucm91bmQobS5jKjEwMDAwMDApLzEw
MDAwMDAgaXMgLTAuMTczNjQ4Ci1QQVNTIE1hdGgucm91bmQobS5kKjEwMDAwMDApLzEwMDAwMDAg
aXMgMC45ODQ4MDgKK1BBU1MgcGFyc2VGbG9hdChtMi5hLnRvUHJlY2lzaW9uKDYpKSBpcyAwLjk4
NDgwOAorUEFTUyBwYXJzZUZsb2F0KG0yLmIudG9QcmVjaXNpb24oNikpIGlzIDAuMTczNjQ4CitQ
QVNTIHBhcnNlRmxvYXQobTIuYy50b1ByZWNpc2lvbig2KSkgaXMgLTAuMTczNjQ4CitQQVNTIHBh
cnNlRmxvYXQobTIuZC50b1ByZWNpc2lvbig2KSkgaXMgMC45ODQ4MDgKIFBBU1MgbS5lIGlzIDAK
IFBBU1MgbS5mIGlzIDAKIAorVGVzdCBpbW11dGFiaWxpdHkgb2Ygcm90YXRlCitQQVNTIHBhcnNl
RmxvYXQobS5hKSBpcyAxCitQQVNTIHBhcnNlRmxvYXQobS5iKSBpcyAwCitQQVNTIHBhcnNlRmxv
YXQobS5jKSBpcyAwCitQQVNTIHBhcnNlRmxvYXQobS5kKSBpcyAxCitQQVNTIHBhcnNlRmxvYXQo
bS5lKSBpcyAwCitQQVNTIHBhcnNlRmxvYXQobS5mKSBpcyAwCisKIFBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvdHJhbnNm
b3Jtcy8yZC9jc3NtYXRyaXgtaW50ZXJmYWNlLnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3RyYW5zZm9ybXMvMmQvY3NzbWF0cml4LWludGVyZmFjZS54aHRtbAkocmV2aXNpb24gNDA3
OTcpCisrKyBMYXlvdXRUZXN0cy90cmFuc2Zvcm1zLzJkL2Nzc21hdHJpeC1pbnRlcmZhY2UueGh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDIyIEBAIGVsc2UKICAgdGVzdEZhaWxlZCgi
c3RyaW5nIGNvbnN0cnVjdG9yIik7CiAKIGRlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IHRvU3RyaW5n
Iik7Cit2YXIgbSA9IG5ldyBXZWJLaXRDU1NNYXRyaXgoIm1hdHJpeCgxLCAwLCAwLCAxLCAwLCAw
KSIpOwordmFyIHMgPSBtLnRvU3RyaW5nKCk7Cit2YXIgYSA9IHMuc3BsaXQoJygnKTsKK3Nob3Vs
ZEJlKCdhWzBdJywgJyJtYXRyaXgiJyk7Cit2YXIgYTIgPSBhWzFdLnNwbGl0KCcsJyk7CitzaG91
bGRCZSgncGFyc2VGbG9hdChhMlswXSknLCAnMScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQoYTJb
MV0pJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KGEyWzJdKScsICcwJyk7CitzaG91bGRC
ZSgncGFyc2VGbG9hdChhMlszXSknLCAnMScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQoYTJbNF0p
JywgJzAnKTsKK3ZhciBhMyA9IGEyWzVdLnNwbGl0KCIpIik7CitzaG91bGRCZSgncGFyc2VGbG9h
dChhM1swXSknLCAnMCcpOworc2hvdWxkQmUoJ2EzWzFdJywgJyIiJyk7CisKK2RlYnVnKCIiKTsK
IGRlYnVnKCJUZXN0IGJhZCBpbnB1dCB0byBzdHJpbmcgY29uc3RydWN0b3IiKTsKIHNob3VsZFRo
cm93KCduZXcgV2ViS2l0Q1NTTWF0cml4KCJiYW5hbmEiKScpOwogCkBAIC05OCw2ICsxMTQsMTUg
QEAgc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTMuZSknLCAnMTAwJyk7CiBzaG91bGRCZSgncGFyc2VG
bG9hdChtMy5mKScsICcxMTInKTsKIAogZGVidWcoIiIpOworZGVidWcoIlRlc3QgaW1tdXRhYmls
aXR5IG9mIG11bHRpcGx5Iik7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLmEpJywgJzEnKTsKK3No
b3VsZEJlKCdwYXJzZUZsb2F0KG0uYiknLCAnMicpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5j
KScsICczJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLmQpJywgJzQnKTsKK3Nob3VsZEJlKCdw
YXJzZUZsb2F0KG0uZSknLCAnNScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5mKScsICc2Jyk7
CisKK2RlYnVnKCIiKTsKIGRlYnVnKCJUZXN0IGludmVyc2UiKTsKIG0gPSBuZXcgV2ViS2l0Q1NT
TWF0cml4KCJtYXRyaXgoMiwgMCwgMCwgMiwgMTAsIDIwKSIpOwogbTIgPSBtLmludmVyc2UoKTsK
QEAgLTExMCw2ICsxMzUsMTUgQEAgc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIuZSknLCAnLTUnKTsK
IHNob3VsZEJlKCdwYXJzZUZsb2F0KG0yLmYpJywgJy0xMCcpOwogCiBkZWJ1ZygiIik7CitkZWJ1
ZygiVGVzdCBpbW11dGFiaWxpdHkgb2YgaW52ZXJzZSIpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQo
bS5hKScsICcyJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLmIpJywgJzAnKTsKK3Nob3VsZEJl
KCdwYXJzZUZsb2F0KG0uYyknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5kKScsICcy
Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLmUpJywgJzEwJyk7CitzaG91bGRCZSgncGFyc2VG
bG9hdChtLmYpJywgJzIwJyk7CisKK2RlYnVnKCIiKTsKIGRlYnVnKCJUZXN0IHRocm93aW5nIGV4
Y2VwdGlvbiBmcm9tIGludmVyc2UiKTsKIG0gPSBuZXcgV2ViS2l0Q1NTTWF0cml4KCJtYXRyaXgo
MCwgMCwgMCwgMCwgMCwgMCkiKTsgLy8gbm90IGludmVydGlibGUKIHNob3VsZFRocm93KCdtLmlu
dmVyc2UoKScpOwpAQCAtMTE3LDM3ICsxNTEsNjQgQEAgc2hvdWxkVGhyb3coJ20uaW52ZXJzZSgp
Jyk7CiBkZWJ1ZygiIik7CiBkZWJ1ZygiVGVzdCB0cmFuc2xhdGUiKTsKIG0gPSBuZXcgV2ViS2l0
Q1NTTWF0cml4KCk7Ci1tID0gbS50cmFuc2xhdGUoMTAsIDIwKTsKLXNob3VsZEJlKCdtLmEnLCAn
MScpOwotc2hvdWxkQmUoJ20uYicsICcwJyk7Ci1zaG91bGRCZSgnbS5jJywgJzAnKTsKLXNob3Vs
ZEJlKCdtLmQnLCAnMScpOwotc2hvdWxkQmUoJ20uZScsICcxMCcpOwotc2hvdWxkQmUoJ20uZics
ICcyMCcpOworbTIgPSBtLnRyYW5zbGF0ZSgxMCwgMjApOworc2hvdWxkQmUoJ20yLmEnLCAnMScp
Oworc2hvdWxkQmUoJ20yLmInLCAnMCcpOworc2hvdWxkQmUoJ20yLmMnLCAnMCcpOworc2hvdWxk
QmUoJ20yLmQnLCAnMScpOworc2hvdWxkQmUoJ20yLmUnLCAnMTAnKTsKK3Nob3VsZEJlKCdtMi5m
JywgJzIwJyk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IGltbXV0YWJpbGl0eSBvZiB0cmFu
c2xhdGUiKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0uYSknLCAnMScpOworc2hvdWxkQmUoJ3Bh
cnNlRmxvYXQobS5iKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLmMpJywgJzAnKTsK
K3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0uZCknLCAnMScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQo
bS5lKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLmYpJywgJzAnKTsKIAogZGVidWco
IiIpOwogZGVidWcoIlRlc3Qgc2NhbGUiKTsKIG0gPSBuZXcgV2ViS2l0Q1NTTWF0cml4KCk7Ci1t
ID0gbS5zY2FsZSgxMCwgMjApOwotc2hvdWxkQmUoJ20uYScsICcxMCcpOwotc2hvdWxkQmUoJ20u
YicsICcwJyk7Ci1zaG91bGRCZSgnbS5jJywgJzAnKTsKLXNob3VsZEJlKCdtLmQnLCAnMjAnKTsK
LXNob3VsZEJlKCdtLmUnLCAnMCcpOwotc2hvdWxkQmUoJ20uZicsICcwJyk7CittMiA9IG0uc2Nh
bGUoMTAsIDIwKTsKK3Nob3VsZEJlKCdtMi5hJywgJzEwJyk7CitzaG91bGRCZSgnbTIuYicsICcw
Jyk7CitzaG91bGRCZSgnbTIuYycsICcwJyk7CitzaG91bGRCZSgnbTIuZCcsICcyMCcpOworc2hv
dWxkQmUoJ20yLmUnLCAnMCcpOworc2hvdWxkQmUoJ20yLmYnLCAnMCcpOworCitkZWJ1ZygiIik7
CitkZWJ1ZygiVGVzdCBpbW11dGFiaWxpdHkgb2Ygc2NhbGUiKTsKK3Nob3VsZEJlKCdwYXJzZUZs
b2F0KG0uYSknLCAnMScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5iKScsICcwJyk7CitzaG91
bGRCZSgncGFyc2VGbG9hdChtLmMpJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0uZCkn
LCAnMScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5lKScsICcwJyk7CitzaG91bGRCZSgncGFy
c2VGbG9hdChtLmYpJywgJzAnKTsKIAogZGVidWcoIiIpOwogZGVidWcoIlRlc3Qgcm90YXRlIik7
CiBtID0gbmV3IFdlYktpdENTU01hdHJpeCgpOwotbSA9IG0ucm90YXRlKDEwKTsKLXNob3VsZEJl
KCdNYXRoLnJvdW5kKG0uYSoxMDAwMDAwKS8xMDAwMDAwJywgJzAuOTg0ODA4Jyk7Ci1zaG91bGRC
ZSgnTWF0aC5yb3VuZChtLmIqMTAwMDAwMCkvMTAwMDAwMCcsICcwLjE3MzY0OCcpOwotc2hvdWxk
QmUoJ01hdGgucm91bmQobS5jKjEwMDAwMDApLzEwMDAwMDAnLCAnLTAuMTczNjQ4Jyk7Ci1zaG91
bGRCZSgnTWF0aC5yb3VuZChtLmQqMTAwMDAwMCkvMTAwMDAwMCcsICcwLjk4NDgwOCcpOworbTIg
PSBtLnJvdGF0ZSgxMCk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5hLnRvUHJlY2lzaW9uKDYp
KScsICcwLjk4NDgwOCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIuYi50b1ByZWNpc2lvbig2
KSknLCAnMC4xNzM2NDgnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLmMudG9QcmVjaXNpb24o
NikpJywgJy0wLjE3MzY0OCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIuZC50b1ByZWNpc2lv
big2KSknLCAnMC45ODQ4MDgnKTsKIHNob3VsZEJlKCdtLmUnLCAnMCcpOwogc2hvdWxkQmUoJ20u
ZicsICcwJyk7CiAKIGRlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IGltbXV0YWJpbGl0eSBvZiByb3Rh
dGUiKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0uYSknLCAnMScpOworc2hvdWxkQmUoJ3BhcnNl
RmxvYXQobS5iKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLmMpJywgJzAnKTsKK3No
b3VsZEJlKCdwYXJzZUZsb2F0KG0uZCknLCAnMScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5l
KScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLmYpJywgJzAnKTsKKworZGVidWcoIiIp
Owogc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKIAogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRU
ZXN0cy90cmFuc2Zvcm1zLzNkL2Nzc21hdHJpeC0zZC1pbnRlcmZhY2UtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3RyYW5zZm9ybXMvM2QvY3NzbWF0cml4LTNkLWludGVy
ZmFjZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy90cmFuc2Zvcm1z
LzNkL2Nzc21hdHJpeC0zZC1pbnRlcmZhY2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDE5MiBAQAorVGhpcyB0ZXN0IGV4ZXJjaXNlcyB0aGUgQ1NTTWF0cml4IDNEIGludGVy
ZmFjZQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworQ1NTTWF0cml4IGNvbnN0cnVj
dG9ycworUEFTUyBkZWZhdWx0IGNvbnN0cnVjdG9yCitQQVNTIG9iamVjdCBjb25zdHJ1Y3Rvcgor
UEFTUyBzdHJpbmcgY29uc3RydWN0b3IKKworVGVzdCB0b1N0cmluZworUEFTUyBhWzBdIGlzICJt
YXRyaXgiCitQQVNTIHBhcnNlRmxvYXQoYTJbMF0pIGlzIDEKK1BBU1MgcGFyc2VGbG9hdChhMlsx
XSkgaXMgMAorUEFTUyBwYXJzZUZsb2F0KGEyWzJdKSBpcyAwCitQQVNTIHBhcnNlRmxvYXQoYTJb
M10pIGlzIDEKK1BBU1MgcGFyc2VGbG9hdChhMls0XSkgaXMgMAorUEFTUyBwYXJzZUZsb2F0KGEz
WzBdKSBpcyAwCitQQVNTIGEzWzFdIGlzICIiCisKK1Rlc3QgYmFkIGlucHV0IHRvIHN0cmluZyBj
b25zdHJ1Y3RvcgorUEFTUyBuZXcgV2ViS2l0Q1NTTWF0cml4KCJiYW5hbmEiKSB0aHJldyBleGNl
cHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIuCisKK1Rlc3QgYXR0cmli
dXRlcyBvbiBkZWZhdWx0IG1hdHJpeAorUEFTUyBtLm0xMSBpcyAxCitQQVNTIG0ubTEyIGlzIDAK
K1BBU1MgbS5tMTMgaXMgMAorUEFTUyBtLm0xNCBpcyAwCitQQVNTIG0ubTIxIGlzIDAKK1BBU1Mg
bS5tMjIgaXMgMQorUEFTUyBtLm0yMyBpcyAwCitQQVNTIG0ubTI0IGlzIDAKK1BBU1MgbS5tMzEg
aXMgMAorUEFTUyBtLm0zMiBpcyAwCitQQVNTIG0ubTMzIGlzIDEKK1BBU1MgbS5tMzQgaXMgMAor
UEFTUyBtLm00MSBpcyAwCitQQVNTIG0ubTQyIGlzIDAKK1BBU1MgbS5tNDMgaXMgMAorUEFTUyBt
Lm00NCBpcyAxCisKK1Rlc3QgYXR0cmlidXRlcyBvbiBjdXN0b20gbWF0cml4CitQQVNTIG0ubTEx
IGlzIDExCitQQVNTIG0ubTEyIGlzIDEyCitQQVNTIG0ubTIxIGlzIDIxCitQQVNTIG0ubTIyIGlz
IDIyCitQQVNTIG0ubTQxIGlzIDQxCitQQVNTIG0ubTQyIGlzIDQyCisKK1Rlc3Qgc2V0TWF0cml4
VmFsdWUgLSBzZXQgdG8gbWF0cml4KCkKK1BBU1MgbS5tMTEgaXMgMTEKK1BBU1MgbS5tMTIgaXMg
MTIKK1BBU1MgbS5tMjEgaXMgMjEKK1BBU1MgbS5tMjIgaXMgMjIKK1BBU1MgbS5tNDEgaXMgNDEK
K1BBU1MgbS5tNDIgaXMgNDIKKworVGVzdCBzZXRNYXRyaXhWYWx1ZSAtIHNldCB0byB0cmFuc2xh
dGUoMTBweCwgMjBweCwgMzBweCkgc2NhbGUoMiwgMywgNCkKK1BBU1MgbS5tMTEgaXMgMgorUEFT
UyBtLm0xMiBpcyAwCitQQVNTIG0ubTEzIGlzIDAKK1BBU1MgbS5tMTQgaXMgMAorUEFTUyBtLm0y
MSBpcyAwCitQQVNTIG0ubTIyIGlzIDMKK1BBU1MgbS5tMjMgaXMgMAorUEFTUyBtLm0yNCBpcyAw
CitQQVNTIG0ubTMxIGlzIDAKK1BBU1MgbS5tMzIgaXMgMAorUEFTUyBtLm0zMyBpcyAxCitQQVNT
IG0ubTM0IGlzIDAKK1BBU1MgbS5tNDEgaXMgMTAKK1BBU1MgbS5tNDIgaXMgMjAKK1BBU1MgbS5t
NDMgaXMgMAorUEFTUyBtLm00NCBpcyAxCisKK1Rlc3QgdGhyb3dpbmcgZXhjZXB0aW9uIGZyb20g
c2V0TWF0cml4VmFsdWUKK1BBU1MgbS5zZXRNYXRyaXhWYWx1ZSgiYmFuYW5hIikgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyLgorUEFTUyBtLnNldE1h
dHJpeFZhbHVlKCJ0cmFuc2xhdGUzZCgxMGVtLCAyMCUsIDQwKSIpIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KK1BBU1MgbS5zZXRNYXRyaXhWYWx1
ZSgidHJhbnNsYXRlM2QoMTBweCwgMjBweCwgMzBweCkgc2NhbGUzZCgpIikgdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyLgorCitUZXN0IG11bHRpcGx5
CitQQVNTIHBhcnNlRmxvYXQobTMubTExKSBpcyAyNQorUEFTUyBwYXJzZUZsb2F0KG0zLm0xMikg
aXMgMjgKK1BBU1MgcGFyc2VGbG9hdChtMy5tMTMpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMy5t
MTQpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMy5tMjEpIGlzIDU3CitQQVNTIHBhcnNlRmxvYXQo
bTMubTIyKSBpcyA2NAorUEFTUyBwYXJzZUZsb2F0KG0zLm0yMykgaXMgMAorUEFTUyBwYXJzZUZs
b2F0KG0zLm0yNCkgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0zLm0zMSkgaXMgMAorUEFTUyBwYXJz
ZUZsb2F0KG0zLm0zMikgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0zLm0zMykgaXMgMQorUEFTUyBw
YXJzZUZsb2F0KG0zLm0zNCkgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0zLm00MSkgaXMgMTAwCitQ
QVNTIHBhcnNlRmxvYXQobTMubTQyKSBpcyAxMTIKK1BBU1MgcGFyc2VGbG9hdChtMy5tNDMpIGlz
IDAKK1BBU1MgcGFyc2VGbG9hdChtMy5tNDQpIGlzIDEKKworVGVzdCBpbnZlcnNlCitQQVNTIHBh
cnNlRmxvYXQobTIubTExKSBpcyAwLjUKK1BBU1MgcGFyc2VGbG9hdChtMi5tMTIpIGlzIDAKK1BB
U1MgcGFyc2VGbG9hdChtMi5tMTMpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMi5tMTQpIGlzIDAK
K1BBU1MgcGFyc2VGbG9hdChtMi5tMjEpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMi5tMjIpIGlz
IDAuNQorUEFTUyBwYXJzZUZsb2F0KG0yLm0yMykgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0yLm0y
NCkgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0yLm0zMSkgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0y
Lm0zMikgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0yLm0zNCkgaXMgMAorUEFTUyBwYXJzZUZsb2F0
KG0yLm00MSkgaXMgLTUKK1BBU1MgcGFyc2VGbG9hdChtMi5tNDIpIGlzIC0xMAorCitUZXN0IHRo
cm93aW5nIGV4Y2VwdGlvbiBmcm9tIGludmVyc2UKK1BBU1MgbS5pbnZlcnNlKCkgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5LgorCitUZXN0
IHRyYW5zbGF0ZQorUEFTUyBtLm0xMSBpcyAxCitQQVNTIG0ubTEyIGlzIDAKK1BBU1MgbS5tMTMg
aXMgMAorUEFTUyBtLm0xNCBpcyAwCitQQVNTIG0ubTIxIGlzIDAKK1BBU1MgbS5tMjIgaXMgMQor
UEFTUyBtLm0yMyBpcyAwCitQQVNTIG0ubTI0IGlzIDAKK1BBU1MgbS5tMzEgaXMgMAorUEFTUyBt
Lm0zMiBpcyAwCitQQVNTIG0ubTMzIGlzIDEKK1BBU1MgbS5tMzQgaXMgMAorUEFTUyBtLm00MSBp
cyAxMAorUEFTUyBtLm00MiBpcyAyMAorUEFTUyBtLm00MyBpcyAzMAorUEFTUyBtLm00NCBpcyAx
CisKK1Rlc3Qgc2NhbGUKK1BBU1MgbS5tMTEgaXMgMTAKK1BBU1MgbS5tMTIgaXMgMAorUEFTUyBt
Lm0xMyBpcyAwCitQQVNTIG0ubTE0IGlzIDAKK1BBU1MgbS5tMjEgaXMgMAorUEFTUyBtLm0yMiBp
cyAyMAorUEFTUyBtLm0yMyBpcyAwCitQQVNTIG0ubTI0IGlzIDAKK1BBU1MgbS5tMzEgaXMgMAor
UEFTUyBtLm0zMiBpcyAwCitQQVNTIG0ubTMzIGlzIDMwCitQQVNTIG0ubTM0IGlzIDAKK1BBU1Mg
bS5tNDEgaXMgMAorUEFTUyBtLm00MiBpcyAwCitQQVNTIG0ubTQzIGlzIDAKK1BBU1MgbS5tNDQg
aXMgMQorCitUZXN0IHJvdGF0ZQorUEFTUyBwYXJzZUZsb2F0KG0ubTExLnRvUHJlY2lzaW9uKDYp
KSBpcyAwLjgxMzc5OAorUEFTUyBwYXJzZUZsb2F0KG0ubTEyLnRvUHJlY2lzaW9uKDYpKSBpcyAw
LjQ2OTg0NgorUEFTUyBwYXJzZUZsb2F0KG0ubTEzLnRvUHJlY2lzaW9uKDYpKSBpcyAtMC4zNDIw
MgorUEFTUyBwYXJzZUZsb2F0KG0ubTE0LnRvUHJlY2lzaW9uKDYpKSBpcyAwCitQQVNTIHBhcnNl
RmxvYXQobS5tMjEudG9QcmVjaXNpb24oNikpIGlzIC0wLjQ0MDk3CitQQVNTIHBhcnNlRmxvYXQo
bS5tMjIudG9QcmVjaXNpb24oNikpIGlzIDAuODgyNTY0CitQQVNTIHBhcnNlRmxvYXQobS5tMjMu
dG9QcmVjaXNpb24oNikpIGlzIDAuMTYzMTc2CitQQVNTIHBhcnNlRmxvYXQobS5tMjQudG9QcmVj
aXNpb24oNikpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtLm0zMS50b1ByZWNpc2lvbig2KSkgaXMg
MC4zNzg1MjIKK1BBU1MgcGFyc2VGbG9hdChtLm0zMi50b1ByZWNpc2lvbig2KSkgaXMgMC4wMTgw
MjgzCitQQVNTIHBhcnNlRmxvYXQobS5tMzMudG9QcmVjaXNpb24oNikpIGlzIDAuOTI1NDE3CitQ
QVNTIHBhcnNlRmxvYXQobS5tMzQudG9QcmVjaXNpb24oNikpIGlzIDAKK1BBU1MgcGFyc2VGbG9h
dChtLm00MS50b1ByZWNpc2lvbig2KSkgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0ubTQyLnRvUHJl
Y2lzaW9uKDYpKSBpcyAwCitQQVNTIHBhcnNlRmxvYXQobS5tNDMudG9QcmVjaXNpb24oNikpIGlz
IDAKK1BBU1MgcGFyc2VGbG9hdChtLm00NC50b1ByZWNpc2lvbig2KSkgaXMgMQorCitUZXN0IHJv
dGF0ZUF4aXNBbmdsZQorUEFTUyBwYXJzZUZsb2F0KG0ubTExLnRvUHJlY2lzaW9uKDYpKSBpcyAw
LjgwNDczOAorUEFTUyBwYXJzZUZsb2F0KG0ubTEyLnRvUHJlY2lzaW9uKDYpKSBpcyAwLjUwNTg3
OQorUEFTUyBwYXJzZUZsb2F0KG0ubTEzLnRvUHJlY2lzaW9uKDYpKSBpcyAtMC4zMTA2MTcKK1BB
U1MgcGFyc2VGbG9hdChtLm0xNC50b1ByZWNpc2lvbig2KSkgaXMgMAorUEFTUyBwYXJzZUZsb2F0
KG0ubTIxLnRvUHJlY2lzaW9uKDYpKSBpcyAtMC4zMTA2MTcKK1BBU1MgcGFyc2VGbG9hdChtLm0y
Mi50b1ByZWNpc2lvbig2KSkgaXMgMC44MDQ3MzgKK1BBU1MgcGFyc2VGbG9hdChtLm0yMy50b1By
ZWNpc2lvbig2KSkgaXMgMC41MDU4NzkKK1BBU1MgcGFyc2VGbG9hdChtLm0yNC50b1ByZWNpc2lv
big2KSkgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0ubTMxLnRvUHJlY2lzaW9uKDYpKSBpcyAwLjUw
NTg3OQorUEFTUyBwYXJzZUZsb2F0KG0ubTMyLnRvUHJlY2lzaW9uKDYpKSBpcyAtMC4zMTA2MTcK
K1BBU1MgcGFyc2VGbG9hdChtLm0zMy50b1ByZWNpc2lvbig2KSkgaXMgMC44MDQ3MzgKK1BBU1Mg
cGFyc2VGbG9hdChtLm0zNC50b1ByZWNpc2lvbig2KSkgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0u
bTQxLnRvUHJlY2lzaW9uKDYpKSBpcyAwCitQQVNTIHBhcnNlRmxvYXQobS5tNDIudG9QcmVjaXNp
b24oNikpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtLm00My50b1ByZWNpc2lvbig2KSkgaXMgMAor
UEFTUyBwYXJzZUZsb2F0KG0ubTQ0LnRvUHJlY2lzaW9uKDYpKSBpcyAxCisKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0
cy90cmFuc2Zvcm1zLzNkL2Nzc21hdHJpeC0zZC1pbnRlcmZhY2UueGh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvdHJhbnNmb3Jtcy8zZC9jc3NtYXRyaXgtM2QtaW50ZXJmYWNlLnhodG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvdHJhbnNmb3Jtcy8zZC9jc3NtYXRyaXgtM2Qt
aW50ZXJmYWNlLnhodG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI5OSBAQAorPGh0bWwgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKworLy8gRklYTUUgLSBVbnRp
bCB0aGUgUGFyc2VyIHN1cHBvcnQgM0QgZnVuY3Rpb25zIGZvciAtd2Via2l0LXRyYW5zZm9ybSwg
dGhlIDNEIHBhcnNpbmcgaXMgY29tbWVudGVkIG91dC4KKy8vICAgICAgICAgQWxzbywgdGVzdHMg
Zm9yIGltbXV0YWJpbGl0eSBhcmUgb21pdHRlZCB1bnRpbCAzRCBwYXJzaW5nIGlzIGNvbXBsZXRl
ZAorCitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGV4ZXJjaXNlcyB0aGUgQ1NTTWF0cml4IDNEIGlu
dGVyZmFjZSIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiQ1NTTWF0cml4IGNvbnN0cnVjdG9ycyIp
OworCit2YXIgbSA9IG51bGw7CittID0gbmV3IFdlYktpdENTU01hdHJpeCgpOworaWYgKG0pCisg
IHRlc3RQYXNzZWQoImRlZmF1bHQgY29uc3RydWN0b3IiKTsKK2Vsc2UKKyAgdGVzdEZhaWxlZCgi
ZGVmYXVsdCBjb25zdHJ1Y3RvciIpOworCit2YXIgbTIgPSBuZXcgV2ViS2l0Q1NTTWF0cml4KG0p
OworaWYgKG0yKQorICB0ZXN0UGFzc2VkKCJvYmplY3QgY29uc3RydWN0b3IiKTsKK2Vsc2UKKyAg
dGVzdEZhaWxlZCgib2JqZWN0IGNvbnN0cnVjdG9yIik7CisKKy8vIG0gPSBuZXcgV2ViS2l0Q1NT
TWF0cml4KCJtYXRyaXgzZCgxLCAwLCAwLCAxLCAwLCAxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAw
LCAwLCAxKSIpOworbSA9IG5ldyBXZWJLaXRDU1NNYXRyaXgoIm1hdHJpeCgxLCAwLCAwLCAxLCAw
LCAwKSIpOworaWYgKG0pCisgIHRlc3RQYXNzZWQoInN0cmluZyBjb25zdHJ1Y3RvciIpOworZWxz
ZQorICB0ZXN0RmFpbGVkKCJzdHJpbmcgY29uc3RydWN0b3IiKTsKKworLy8gRklYTUUgLSBmb3Ig
bm93IHRoaXMgaXMgc2ltcGx5IGEgdGVzdCBvZiBtYXRyaXgoKSB1bnRpbCB0aGUgQ1NTIHBhcnNl
ciBjYW4gaGFuZGxlIG1hdHJpeDNkKCkKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IHRvU3RyaW5n
Iik7Cit2YXIgbSA9IG5ldyBXZWJLaXRDU1NNYXRyaXgoIm1hdHJpeCgxLCAwLCAwLCAxLCAwLCAw
KSIpOwordmFyIHMgPSBtLnRvU3RyaW5nKCk7Cit2YXIgYSA9IHMuc3BsaXQoJygnKTsKK3Nob3Vs
ZEJlKCdhWzBdJywgJyJtYXRyaXgiJyk7Cit2YXIgYTIgPSBhWzFdLnNwbGl0KCcsJyk7CitzaG91
bGRCZSgncGFyc2VGbG9hdChhMlswXSknLCAnMScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQoYTJb
MV0pJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KGEyWzJdKScsICcwJyk7CitzaG91bGRC
ZSgncGFyc2VGbG9hdChhMlszXSknLCAnMScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQoYTJbNF0p
JywgJzAnKTsKK3ZhciBhMyA9IGEyWzVdLnNwbGl0KCIpIik7CitzaG91bGRCZSgncGFyc2VGbG9h
dChhM1swXSknLCAnMCcpOworc2hvdWxkQmUoJ2EzWzFdJywgJyIiJyk7CisKK2RlYnVnKCIiKTsK
K2RlYnVnKCJUZXN0IGJhZCBpbnB1dCB0byBzdHJpbmcgY29uc3RydWN0b3IiKTsKK3Nob3VsZFRo
cm93KCduZXcgV2ViS2l0Q1NTTWF0cml4KCJiYW5hbmEiKScpOworCitkZWJ1ZygiIik7CitkZWJ1
ZygiVGVzdCBhdHRyaWJ1dGVzIG9uIGRlZmF1bHQgbWF0cml4Iik7CittID0gbmV3IFdlYktpdENT
U01hdHJpeCgpOworc2hvdWxkQmUoJ20ubTExJywgJzEnKTsKK3Nob3VsZEJlKCdtLm0xMicsICcw
Jyk7CitzaG91bGRCZSgnbS5tMTMnLCAnMCcpOworc2hvdWxkQmUoJ20ubTE0JywgJzAnKTsKK3No
b3VsZEJlKCdtLm0yMScsICcwJyk7CitzaG91bGRCZSgnbS5tMjInLCAnMScpOworc2hvdWxkQmUo
J20ubTIzJywgJzAnKTsKK3Nob3VsZEJlKCdtLm0yNCcsICcwJyk7CitzaG91bGRCZSgnbS5tMzEn
LCAnMCcpOworc2hvdWxkQmUoJ20ubTMyJywgJzAnKTsKK3Nob3VsZEJlKCdtLm0zMycsICcxJyk7
CitzaG91bGRCZSgnbS5tMzQnLCAnMCcpOworc2hvdWxkQmUoJ20ubTQxJywgJzAnKTsKK3Nob3Vs
ZEJlKCdtLm00MicsICcwJyk7CitzaG91bGRCZSgnbS5tNDMnLCAnMCcpOworc2hvdWxkQmUoJ20u
bTQ0JywgJzEnKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3QgYXR0cmlidXRlcyBvbiBjdXN0
b20gbWF0cml4Iik7CisvLyBtID0gbmV3IFdlYktpdENTU01hdHJpeCgibWF0cml4M2QoMTEsIDEy
LCAxMywgMTQsIDIxLCAyMiwgMjMsIDI0LCAzMSwgMzIsIDMzLCAzNCwgNDEsIDQyLCA0MywgNDQp
Iik7CittID0gbmV3IFdlYktpdENTU01hdHJpeCgibWF0cml4KDExLCAxMiwgMjEsIDIyLCA0MSwg
NDIpIik7CitzaG91bGRCZSgnbS5tMTEnLCAnMTEnKTsKK3Nob3VsZEJlKCdtLm0xMicsICcxMicp
OworLy8gc2hvdWxkQmUoJ20ubTEzJywgJzEzJyk7CisvLyBzaG91bGRCZSgnbS5tMTQnLCAnMTQn
KTsKK3Nob3VsZEJlKCdtLm0yMScsICcyMScpOworc2hvdWxkQmUoJ20ubTIyJywgJzIyJyk7Cisv
LyBzaG91bGRCZSgnbS5tMjMnLCAnMjMnKTsKKy8vIHNob3VsZEJlKCdtLm0yNCcsICcyNCcpOwor
Ly8gc2hvdWxkQmUoJ20ubTMxJywgJzMxJyk7CisvLyBzaG91bGRCZSgnbS5tMzInLCAnMzInKTsK
Ky8vIHNob3VsZEJlKCdtLm0zMycsICczMycpOworLy8gc2hvdWxkQmUoJ20ubTM0JywgJzM0Jyk7
CitzaG91bGRCZSgnbS5tNDEnLCAnNDEnKTsKK3Nob3VsZEJlKCdtLm00MicsICc0MicpOworLy8g
c2hvdWxkQmUoJ20ubTQzJywgJzQzJyk7CisvLyBzaG91bGRCZSgnbS5tNDQnLCAnNDQnKTsKKwor
ZGVidWcoIiIpOworZGVidWcoIlRlc3Qgc2V0TWF0cml4VmFsdWUgLSBzZXQgdG8gbWF0cml4KCki
KTsKK20gPSBuZXcgV2ViS2l0Q1NTTWF0cml4KCk7CisvLyBtLnNldE1hdHJpeFZhbHVlKCJtYXRy
aXgzZCgxMSwgMTIsIDEzLCAxNCwgMjEsIDIyLCAyMywgMjQsIDMxLCAzMiwgMzMsIDM0LCA0MSwg
NDIsIDQzLCA0NCkiKTsKK20uc2V0TWF0cml4VmFsdWUoIm1hdHJpeCgxMSwgMTIsIDIxLCAyMiwg
NDEsIDQyKSIpOworc2hvdWxkQmUoJ20ubTExJywgJzExJyk7CitzaG91bGRCZSgnbS5tMTInLCAn
MTInKTsKKy8vIHNob3VsZEJlKCdtLm0xMycsICcxMycpOworLy8gc2hvdWxkQmUoJ20ubTE0Jywg
JzE0Jyk7CitzaG91bGRCZSgnbS5tMjEnLCAnMjEnKTsKK3Nob3VsZEJlKCdtLm0yMicsICcyMicp
OworLy8gc2hvdWxkQmUoJ20ubTIzJywgJzIzJyk7CisvLyBzaG91bGRCZSgnbS5tMjQnLCAnMjQn
KTsKKy8vIHNob3VsZEJlKCdtLm0zMScsICczMScpOworLy8gc2hvdWxkQmUoJ20ubTMyJywgJzMy
Jyk7CisvLyBzaG91bGRCZSgnbS5tMzMnLCAnMzMnKTsKKy8vIHNob3VsZEJlKCdtLm0zNCcsICcz
NCcpOworc2hvdWxkQmUoJ20ubTQxJywgJzQxJyk7CitzaG91bGRCZSgnbS5tNDInLCAnNDInKTsK
Ky8vIHNob3VsZEJlKCdtLm00MycsICc0MycpOworLy8gc2hvdWxkQmUoJ20ubTQ0JywgJzQ0Jyk7
CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IHNldE1hdHJpeFZhbHVlIC0gc2V0IHRvIHRyYW5z
bGF0ZSgxMHB4LCAyMHB4LCAzMHB4KSBzY2FsZSgyLCAzLCA0KSIpOworbSA9IG5ldyBXZWJLaXRD
U1NNYXRyaXgoKTsKKy8vIG0uc2V0TWF0cml4VmFsdWUoInRyYW5zbGF0ZTNkKDEwcHgsIDIwcHgs
IDMwcHgpIHNjYWxlM2QoMiwgMywgNCkiKTsKK20uc2V0TWF0cml4VmFsdWUoInRyYW5zbGF0ZSgx
MHB4LCAyMHB4KSBzY2FsZSgyLCAzKSIpOworc2hvdWxkQmUoJ20ubTExJywgJzInKTsKK3Nob3Vs
ZEJlKCdtLm0xMicsICcwJyk7CitzaG91bGRCZSgnbS5tMTMnLCAnMCcpOworc2hvdWxkQmUoJ20u
bTE0JywgJzAnKTsKK3Nob3VsZEJlKCdtLm0yMScsICcwJyk7CitzaG91bGRCZSgnbS5tMjInLCAn
MycpOworc2hvdWxkQmUoJ20ubTIzJywgJzAnKTsKK3Nob3VsZEJlKCdtLm0yNCcsICcwJyk7Citz
aG91bGRCZSgnbS5tMzEnLCAnMCcpOworc2hvdWxkQmUoJ20ubTMyJywgJzAnKTsKK3Nob3VsZEJl
KCdtLm0zMycsICcxJyk7CitzaG91bGRCZSgnbS5tMzQnLCAnMCcpOworc2hvdWxkQmUoJ20ubTQx
JywgJzEwJyk7CitzaG91bGRCZSgnbS5tNDInLCAnMjAnKTsKK3Nob3VsZEJlKCdtLm00MycsICcw
Jyk7CitzaG91bGRCZSgnbS5tNDQnLCAnMScpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCB0
aHJvd2luZyBleGNlcHRpb24gZnJvbSBzZXRNYXRyaXhWYWx1ZSIpOworc2hvdWxkVGhyb3coJ20u
c2V0TWF0cml4VmFsdWUoImJhbmFuYSIpJyk7CitzaG91bGRUaHJvdygnbS5zZXRNYXRyaXhWYWx1
ZSgidHJhbnNsYXRlM2QoMTBlbSwgMjAlLCA0MCkiKScpOworc2hvdWxkVGhyb3coJ20uc2V0TWF0
cml4VmFsdWUoInRyYW5zbGF0ZTNkKDEwcHgsIDIwcHgsIDMwcHgpIHNjYWxlM2QoKSIpJyk7CisK
K2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IG11bHRpcGx5Iik7CisvLyBtID0gIG5ldyBXZWJLaXRD
U1NNYXRyaXgoIm1hdHJpeDNkKCAxLCAgMiwgIDMsICA0LCAgNSwgIDYsICA3LCAgOCwgIDksIDEw
LCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2KSIpOworLy8gbTIgPSBuZXcgV2ViS2l0Q1NTTWF0cml4
KCJtYXRyaXgzZCgxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4
LCAyOSwgMzAsIDMxLCAzMikiKTsKK20gPSBuZXcgV2ViS2l0Q1NTTWF0cml4KCJtYXRyaXgoMSwg
MiwgMywgNCwgNSwgNikiKTsKK20yID0gbmV3IFdlYktpdENTU01hdHJpeCgibWF0cml4KDcsIDgs
IDksIDEwLCAxMSwgMTIpIik7Cit2YXIgbTMgPSBtLm11bHRpcGx5KG0yKTsKK3Nob3VsZEJlKCdw
YXJzZUZsb2F0KG0zLm0xMSknLCAnMjUnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0zLm0xMikn
LCAnMjgnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0zLm0xMyknLCAnMCcpOworc2hvdWxkQmUo
J3BhcnNlRmxvYXQobTMubTE0KScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMy5tMjEp
JywgJzU3Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMy5tMjIpJywgJzY0Jyk7CitzaG91bGRC
ZSgncGFyc2VGbG9hdChtMy5tMjMpJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0zLm0y
NCknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTMubTMxKScsICcwJyk7CitzaG91bGRC
ZSgncGFyc2VGbG9hdChtMy5tMzIpJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0zLm0z
MyknLCAnMScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTMubTM0KScsICcwJyk7CitzaG91bGRC
ZSgncGFyc2VGbG9hdChtMy5tNDEpJywgJzEwMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTMu
bTQyKScsICcxMTInKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0zLm00MyknLCAnMCcpOworc2hv
dWxkQmUoJ3BhcnNlRmxvYXQobTMubTQ0KScsICcxJyk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJU
ZXN0IGludmVyc2UiKTsKKy8vIG0gPSBuZXcgV2ViS2l0Q1NTTWF0cml4KCJtYXRyaXgzZCgyLCAw
LCAwLCAwLCAwLCAyLCAwLCAwLCAwLCAwLCAyLCAwLCAxMCwgMjAsIDMwLCAxKSIpOworbSA9IG5l
dyBXZWJLaXRDU1NNYXRyaXgoIm1hdHJpeCgyLCAwLCAwLCAyLCAxMCwgMjApIik7CittMiA9IG0u
aW52ZXJzZSgpOworCitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5tMTEpJywgJzAuNScpOworc2hv
dWxkQmUoJ3BhcnNlRmxvYXQobTIubTEyKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdCht
Mi5tMTMpJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLm0xNCknLCAnMCcpOworc2hv
dWxkQmUoJ3BhcnNlRmxvYXQobTIubTIxKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdCht
Mi5tMjIpJywgJzAuNScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIubTIzKScsICcwJyk7Citz
aG91bGRCZSgncGFyc2VGbG9hdChtMi5tMjQpJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0
KG0yLm0zMSknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIubTMyKScsICcwJyk7Cisv
LyBzaG91bGRCZSgncGFyc2VGbG9hdChtMi5tMzMpJywgJzAuNScpOworc2hvdWxkQmUoJ3BhcnNl
RmxvYXQobTIubTM0KScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5tNDEpJywgJy01
Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5tNDIpJywgJy0xMCcpOworLy8gc2hvdWxkQmUo
J3BhcnNlRmxvYXQobTIubTQzKScsICctMTUnKTsKKy8vIHNob3VsZEJlKCdwYXJzZUZsb2F0KG0y
Lm00NCknLCAnMCcpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCB0aHJvd2luZyBleGNlcHRp
b24gZnJvbSBpbnZlcnNlIik7CisvLyBtID0gbmV3IFdlYktpdENTU01hdHJpeCgibWF0cml4M2Qo
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkiKTsgLy8gbm90
IGludmVydGlibGUKK20gPSBuZXcgV2ViS2l0Q1NTTWF0cml4KCJtYXRyaXgoMCwgMCwgMCwgMCwg
MCwgMCkiKTsgLy8gbm90IGludmVydGlibGUKK3Nob3VsZFRocm93KCdtLmludmVyc2UoKScpOwor
CitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCB0cmFuc2xhdGUiKTsKK20gPSBuZXcgV2ViS2l0Q1NT
TWF0cml4KCk7CittID0gbS50cmFuc2xhdGUoMTAsIDIwLCAzMCk7CitzaG91bGRCZSgnbS5tMTEn
LCAnMScpOworc2hvdWxkQmUoJ20ubTEyJywgJzAnKTsKK3Nob3VsZEJlKCdtLm0xMycsICcwJyk7
CitzaG91bGRCZSgnbS5tMTQnLCAnMCcpOworc2hvdWxkQmUoJ20ubTIxJywgJzAnKTsKK3Nob3Vs
ZEJlKCdtLm0yMicsICcxJyk7CitzaG91bGRCZSgnbS5tMjMnLCAnMCcpOworc2hvdWxkQmUoJ20u
bTI0JywgJzAnKTsKK3Nob3VsZEJlKCdtLm0zMScsICcwJyk7CitzaG91bGRCZSgnbS5tMzInLCAn
MCcpOworc2hvdWxkQmUoJ20ubTMzJywgJzEnKTsKK3Nob3VsZEJlKCdtLm0zNCcsICcwJyk7Citz
aG91bGRCZSgnbS5tNDEnLCAnMTAnKTsKK3Nob3VsZEJlKCdtLm00MicsICcyMCcpOworc2hvdWxk
QmUoJ20ubTQzJywgJzMwJyk7CitzaG91bGRCZSgnbS5tNDQnLCAnMScpOworCitkZWJ1ZygiIik7
CitkZWJ1ZygiVGVzdCBzY2FsZSIpOworbSA9IG5ldyBXZWJLaXRDU1NNYXRyaXgoKTsKK20gPSBt
LnNjYWxlKDEwLCAyMCwgMzApOworc2hvdWxkQmUoJ20ubTExJywgJzEwJyk7CitzaG91bGRCZSgn
bS5tMTInLCAnMCcpOworc2hvdWxkQmUoJ20ubTEzJywgJzAnKTsKK3Nob3VsZEJlKCdtLm0xNCcs
ICcwJyk7CitzaG91bGRCZSgnbS5tMjEnLCAnMCcpOworc2hvdWxkQmUoJ20ubTIyJywgJzIwJyk7
CitzaG91bGRCZSgnbS5tMjMnLCAnMCcpOworc2hvdWxkQmUoJ20ubTI0JywgJzAnKTsKK3Nob3Vs
ZEJlKCdtLm0zMScsICcwJyk7CitzaG91bGRCZSgnbS5tMzInLCAnMCcpOworc2hvdWxkQmUoJ20u
bTMzJywgJzMwJyk7CitzaG91bGRCZSgnbS5tMzQnLCAnMCcpOworc2hvdWxkQmUoJ20ubTQxJywg
JzAnKTsKK3Nob3VsZEJlKCdtLm00MicsICcwJyk7CitzaG91bGRCZSgnbS5tNDMnLCAnMCcpOwor
c2hvdWxkQmUoJ20ubTQ0JywgJzEnKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3Qgcm90YXRl
Iik7CittID0gbmV3IFdlYktpdENTU01hdHJpeCgpOworbSA9IG0ucm90YXRlKDEwLCAyMCwgMzAp
Oworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tMTEudG9QcmVjaXNpb24oNikpJywgJzAuODEzNzk4
Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm0xMi50b1ByZWNpc2lvbig2KSknLCAnMC40Njk4
NDYnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTEzLnRvUHJlY2lzaW9uKDYpKScsICctMC4z
NDIwMicpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tMTQudG9QcmVjaXNpb24oNikpJywgJzAn
KTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTIxLnRvUHJlY2lzaW9uKDYpKScsICctMC40NDA5
NycpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tMjIudG9QcmVjaXNpb24oNikpJywgJzAuODgy
NTY0Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm0yMy50b1ByZWNpc2lvbig2KSknLCAnMC4x
NjMxNzYnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTI0LnRvUHJlY2lzaW9uKDYpKScsICcw
Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm0zMS50b1ByZWNpc2lvbig2KSknLCAnMC4zNzg1
MjInKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTMyLnRvUHJlY2lzaW9uKDYpKScsICcwLjAx
ODAyODMnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTMzLnRvUHJlY2lzaW9uKDYpKScsICcw
LjkyNTQxNycpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tMzQudG9QcmVjaXNpb24oNikpJywg
JzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTQxLnRvUHJlY2lzaW9uKDYpKScsICcwJyk7
CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm00Mi50b1ByZWNpc2lvbig2KSknLCAnMCcpOworc2hv
dWxkQmUoJ3BhcnNlRmxvYXQobS5tNDMudG9QcmVjaXNpb24oNikpJywgJzAnKTsKK3Nob3VsZEJl
KCdwYXJzZUZsb2F0KG0ubTQ0LnRvUHJlY2lzaW9uKDYpKScsICcxJyk7CisKK2RlYnVnKCIiKTsK
K2RlYnVnKCJUZXN0IHJvdGF0ZUF4aXNBbmdsZSIpOworbSA9IG5ldyBXZWJLaXRDU1NNYXRyaXgo
KTsKK20gPSBtLnJvdGF0ZUF4aXNBbmdsZSgwLjcwNywgMC43MDcsIDAuNzA3LCA0NSk7CitzaG91
bGRCZSgncGFyc2VGbG9hdChtLm0xMS50b1ByZWNpc2lvbig2KSknLCAnMC44MDQ3MzgnKTsKK3No
b3VsZEJlKCdwYXJzZUZsb2F0KG0ubTEyLnRvUHJlY2lzaW9uKDYpKScsICcwLjUwNTg3OScpOwor
c2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tMTMudG9QcmVjaXNpb24oNikpJywgJy0wLjMxMDYxNycp
Oworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tMTQudG9QcmVjaXNpb24oNikpJywgJzAnKTsKK3No
b3VsZEJlKCdwYXJzZUZsb2F0KG0ubTIxLnRvUHJlY2lzaW9uKDYpKScsICctMC4zMTA2MTcnKTsK
K3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTIyLnRvUHJlY2lzaW9uKDYpKScsICcwLjgwNDczOCcp
Oworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tMjMudG9QcmVjaXNpb24oNikpJywgJzAuNTA1ODc5
Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm0yNC50b1ByZWNpc2lvbig2KSknLCAnMCcpOwor
c2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tMzEudG9QcmVjaXNpb24oNikpJywgJzAuNTA1ODc5Jyk7
CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm0zMi50b1ByZWNpc2lvbig2KSknLCAnLTAuMzEwNjE3
Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm0zMy50b1ByZWNpc2lvbig2KSknLCAnMC44MDQ3
MzgnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTM0LnRvUHJlY2lzaW9uKDYpKScsICcwJyk7
CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm00MS50b1ByZWNpc2lvbig2KSknLCAnMCcpOworc2hv
dWxkQmUoJ3BhcnNlRmxvYXQobS5tNDIudG9QcmVjaXNpb24oNikpJywgJzAnKTsKK3Nob3VsZEJl
KCdwYXJzZUZsb2F0KG0ubTQzLnRvUHJlY2lzaW9uKDYpKScsICcwJyk7CitzaG91bGRCZSgncGFy
c2VGbG9hdChtLm00NC50b1ByZWNpc2lvbig2KSknLCAnMScpOworCitkZWJ1ZygiIik7CitzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0Pgor
PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27510</attachid>
            <date>2009-02-09 17:58:02 -0800</date>
            <delta_ts>2009-02-09 18:05:31 -0800</delta_ts>
            <desc>Replacement patch addressing one more issue</desc>
            <filename>23689.patch</filename>
            <type>text/plain</type>
            <size>38133</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MDc5NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMDktMDItMDkgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY4OQorCisgICAgICAgIEFk
ZGVkIDNEIGZ1bmN0aW9ucyB0byBXZWJLaXRDU1NNYXRyaXguIFRoaXMgZGVwZW5kcyBvbiB0aGUg
M0QgZnVuY3Rpb25zCisgICAgICAgIGFkZGVkIHRvIFRyYW5zZm9ybWF0aW9uTWF0cml4IGluIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODY4CisKKyAgICAgICAgVGVz
dDogdHJhbnNmb3Jtcy8zZC9jc3NtYXRyaXgtM2QtaW50ZXJmYWNlLnhodG1sCisKKyAgICAgICAg
KiBjc3MvV2ViS2l0Q1NTTWF0cml4LmNwcDoKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTTWF0cml4
Lmg6CisgICAgICAgICogY3NzL1dlYktpdENTU01hdHJpeC5pZGw6CisKIDIwMDktMDItMDYgIERh
cmluIEZpc2hlciAgPGRhcmluQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBF
cmljIFNlaWRlbC4KSW5kZXg6IFdlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcAkocmV2aXNpb24gNDA3OTcp
CisrKyBXZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw2ICszMyw4IEBACiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJXZWJLaXRD
U1NNYXRyaXguaCIKIAorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogV2ViS2l0Q1NTTWF0cml4OjpXZWJLaXRDU1NNYXRyaXgoKQpAQCAtOTMsMTQg
Kzk1LDE0IEBAIHZvaWQgV2ViS2l0Q1NTTWF0cml4OjpzZXRNYXRyaXhWYWx1ZShjb24KIH0KIAog
Ly8gVGhpcyBpcyBhIG11bHRSaWdodCAodGhpcyA9IHRoaXMgKiBzZWNvbmRNYXRyaXgpCi1QYXNz
UmVmUHRyPFdlYktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4OjptdWx0aXBseShXZWJLaXRD
U1NNYXRyaXgqIHNlY29uZE1hdHJpeCkKK1Bhc3NSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJL
aXRDU1NNYXRyaXg6Om11bHRpcGx5KFdlYktpdENTU01hdHJpeCogc2Vjb25kTWF0cml4KSBjb25z
dAogewogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRtcChtX21hdHJpeCk7CiAgICAgdG1wLm11
bHRpcGx5KHNlY29uZE1hdHJpeC0+bV9tYXRyaXgpOwogICAgIHJldHVybiBXZWJLaXRDU1NNYXRy
aXg6OmNyZWF0ZSh0bXApOwogfQogCi1QYXNzUmVmUHRyPFdlYktpdENTU01hdHJpeD4gV2ViS2l0
Q1NTTWF0cml4OjppbnZlcnNlKEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxXZWJLaXRD
U1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6aW52ZXJzZShFeGNlcHRpb25Db2RlJiBlYykgY29u
c3QKIHsKICAgICBpZiAoIW1fbWF0cml4LmlzSW52ZXJ0aWJsZSgpKSB7CiAgICAgICAgIGVjID0g
Tk9UX1NVUFBPUlRFRF9FUlI7CkBAIC0xMTAsMzUgKzExMiw3MyBAQCBQYXNzUmVmUHRyPFdlYktp
dENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0CiAgICAgcmV0dXJuIFdlYktpdENTU01hdHJpeDo6Y3Jl
YXRlKG1fbWF0cml4LmludmVyc2UoKSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViS2l0Q1NTTWF0cml4
PiBXZWJLaXRDU1NNYXRyaXg6OnRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5KQorUGFzc1JlZlB0
cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6dHJhbnNsYXRlKGRvdWJsZSB4LCBk
b3VibGUgeSwgZG91YmxlIHopIGNvbnN0CiB7CiAgICAgaWYgKGlzbmFuKHgpKQogICAgICAgICB4
ID0gMDsgCiAgICAgaWYgKGlzbmFuKHkpKQogICAgICAgICB5ID0gMDsgCi0gICAgcmV0dXJuIFdl
YktpdENTU01hdHJpeDo6Y3JlYXRlKG1fbWF0cml4LnRyYW5zbGF0ZSh4LCB5KSk7CisgICAgaWYg
KGlzbmFuKHopKQorICAgICAgICB6ID0gMDsKKyAgICByZXR1cm4gV2ViS2l0Q1NTTWF0cml4Ojpj
cmVhdGUoVHJhbnNmb3JtYXRpb25NYXRyaXgobV9tYXRyaXgpLnRyYW5zbGF0ZTNkKHgsIHksIHop
KTsKIH0KIAotUGFzc1JlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6c2Nh
bGUoZmxvYXQgc2NhbGVYLCBmbG9hdCBzY2FsZVkpCitQYXNzUmVmUHRyPFdlYktpdENTU01hdHJp
eD4gV2ViS2l0Q1NTTWF0cml4OjpzY2FsZShkb3VibGUgc2NhbGVYLCBkb3VibGUgc2NhbGVZLCBk
b3VibGUgc2NhbGVaKSBjb25zdAogewotICAgIGlmIChpc25hbihzY2FsZVgpKQotICAgICAgICBz
Y2FsZVggPSAxOyAKLSAgICBpZiAoaXNuYW4oc2NhbGVZKSkKLSAgICAgICAgc2NhbGVZID0gc2Nh
bGVYOyAKLSAgICByZXR1cm4gV2ViS2l0Q1NTTWF0cml4OjpjcmVhdGUobV9tYXRyaXguc2NhbGVO
b25Vbmlmb3JtKHNjYWxlWCxzY2FsZVkpKTsKKyAgICAgaWYgKGlzbmFuKHNjYWxlWCkpCisgICAg
ICAgICBzY2FsZVggPSAxOyAKKyAgICAgaWYgKGlzbmFuKHNjYWxlWSkpCisgICAgICAgICBzY2Fs
ZVkgPSBzY2FsZVg7IAorICAgIGlmIChpc25hbihzY2FsZVopKQorICAgICAgICBzY2FsZVogPSAx
OyAKKyAgICByZXR1cm4gV2ViS2l0Q1NTTWF0cml4OjpjcmVhdGUoVHJhbnNmb3JtYXRpb25NYXRy
aXgobV9tYXRyaXgpLnNjYWxlM2Qoc2NhbGVYLCBzY2FsZVksIHNjYWxlWikpOwogfQogCi1QYXNz
UmVmUHRyPFdlYktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4Ojpyb3RhdGUoZmxvYXQgcm90
KQorUGFzc1JlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6cm90YXRlKGRv
dWJsZSByb3RYLCBkb3VibGUgcm90WSwgZG91YmxlIHJvdFopIGNvbnN0CiB7Ci0gICAgaWYgKGlz
bmFuKHJvdCkpCi0gICAgICAgIHJvdCA9IDA7Ci0gICAgcmV0dXJuIFdlYktpdENTU01hdHJpeDo6
Y3JlYXRlKG1fbWF0cml4LnJvdGF0ZShyb3QpKTsKKyAgICBpZiAoaXNuYW4ocm90WCkpCisgICAg
ICAgIHJvdFggPSAwOyAKKyAgICAgICAgCisgICAgaWYgKGlzbmFuKHJvdFkpICYmIGlzbmFuKHJv
dFopKSB7CisgICAgICAgIHJvdFogPSByb3RYOworICAgICAgICByb3RYID0gMDsKKyAgICAgICAg
cm90WSA9IDA7CisgICAgfQorCisgICAgaWYgKGlzbmFuKHJvdFkpKQorICAgICAgICByb3RZID0g
MDsgCisgICAgaWYgKGlzbmFuKHJvdFopKQorICAgICAgICByb3RaID0gMDsgCisgICAgcmV0dXJu
IFdlYktpdENTU01hdHJpeDo6Y3JlYXRlKFRyYW5zZm9ybWF0aW9uTWF0cml4KG1fbWF0cml4KS5y
b3RhdGUzZChyb3RYLCByb3RZLCByb3RaKSk7CiB9CiAKLVN0cmluZyBXZWJLaXRDU1NNYXRyaXg6
OnRvU3RyaW5nKCkKK1Bhc3NSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6
OnJvdGF0ZUF4aXNBbmdsZShkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB6LCBkb3VibGUgYW5n
bGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJtYXRyaXgoJWYsICVmLCAl
ZiwgJWYsICVmLCAlZikiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbWF0cml4LmEo
KSwgbV9tYXRyaXguYigpLCBtX21hdHJpeC5jKCksIG1fbWF0cml4LmQoKSwgbV9tYXRyaXguZSgp
LCBtX21hdHJpeC5mKCkpOworICAgIGlmIChpc25hbih4KSkKKyAgICAgICAgeCA9IDA7CisgICAg
aWYgKGlzbmFuKHkpKQorICAgICAgICB5ID0gMDsKKyAgICBpZiAoaXNuYW4oeikpCisgICAgICAg
IHogPSAwOworICAgIGlmIChpc25hbihhbmdsZSkpCisgICAgICAgIGFuZ2xlID0gMDsKKyAgICBp
ZiAoeCA9PSAwICYmIHkgPT0gMCAmJiB6ID09IDApCisgICAgICAgIHogPSAxOworICAgIHJldHVy
biBXZWJLaXRDU1NNYXRyaXg6OmNyZWF0ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeChtX21hdHJpeCku
cm90YXRlM2QoeCwgeSwgeiwgYW5nbGUpKTsKIH0KIAorU3RyaW5nIFdlYktpdENTU01hdHJpeDo6
dG9TdHJpbmcoKQoreworICAgIC8vIEZJWE1FIC0gTmVlZCB0byBlbnN1cmUgdmFsaWQgQ1NTIGZs
b2F0aW5nIHBvaW50IHZhbHVlcyAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNjc0KQorICAgIGlmIChtX21hdHJpeC5pc0FmZmluZSgpKQorICAgICAgICByZXR1cm4g
U3RyaW5nOjpmb3JtYXQoIm1hdHJpeCglZiwgJWYsICVmLCAlZiwgJWYsICVmKSIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fbWF0cml4LmEoKSwgbV9tYXRyaXguYigpLCBtX21h
dHJpeC5jKCksIG1fbWF0cml4LmQoKSwgbV9tYXRyaXguZSgpLCBtX21hdHJpeC5mKCkpOworICAg
IHJldHVybiBTdHJpbmc6OmZvcm1hdCgibWF0cml4M2QoJWYsICVmLCAlZiwgJWYsICVmLCAlZiwg
JWYsICVmLCAlZiwgJWYsICVmLCAlZiwgJWYsICVmLCAlZiwgJWYpIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX21hdHJpeC5tMTEoKSwgbV9tYXRyaXgubTEyKCksIG1fbWF0cml4Lm0x
MygpLCBtX21hdHJpeC5tMTQoKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9tYXRy
aXgubTIxKCksIG1fbWF0cml4Lm0yMigpLCBtX21hdHJpeC5tMjMoKSwgbV9tYXRyaXgubTI0KCks
IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbWF0cml4Lm0zMSgpLCBtX21hdHJpeC5t
MzIoKSwgbV9tYXRyaXgubTMzKCksIG1fbWF0cml4Lm0zNCgpLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX21hdHJpeC5tNDEoKSwgbV9tYXRyaXgubTQyKCksIG1fbWF0cml4Lm00Mygp
LCBtX21hdHJpeC5tNDQoKSk7Cit9CisgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBX
ZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9X
ZWJLaXRDU1NNYXRyaXguaAkocmV2aXNpb24gNDA3OTcpCisrKyBXZWJDb3JlL2Nzcy9XZWJLaXRD
U1NNYXRyaXguaAkod29ya2luZyBjb3B5KQpAQCAtNTUsMzAgKzU1LDkwIEBAIHB1YmxpYzoKICAg
ICAKICAgICB2aXJ0dWFsIH5XZWJLaXRDU1NNYXRyaXgoKTsKIAotICAgIGZsb2F0IGEoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obV9tYXRyaXguYSgpKTsgfQotICAgIGZsb2F0
IGIoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obV9tYXRyaXguYigpKTsgfQot
ICAgIGZsb2F0IGMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obV9tYXRyaXgu
YygpKTsgfQotICAgIGZsb2F0IGQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4o
bV9tYXRyaXguZCgpKTsgfQotICAgIGZsb2F0IGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxmbG9hdD4obV9tYXRyaXguZSgpKTsgfQotICAgIGZsb2F0IGYoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxmbG9hdD4obV9tYXRyaXguZigpKTsgfQotICAgIAotICAgIHZvaWQgc2V0QShm
bG9hdCBmKSB7IG1fbWF0cml4LnNldEEoZik7IH0KLSAgICB2b2lkIHNldEIoZmxvYXQgZikgeyBt
X21hdHJpeC5zZXRCKGYpOyB9Ci0gICAgdm9pZCBzZXRDKGZsb2F0IGYpIHsgbV9tYXRyaXguc2V0
QyhmKTsgfQotICAgIHZvaWQgc2V0RChmbG9hdCBmKSB7IG1fbWF0cml4LnNldEQoZik7IH0KLSAg
ICB2b2lkIHNldEUoZmxvYXQgZikgeyBtX21hdHJpeC5zZXRFKGYpOyB9Ci0gICAgdm9pZCBzZXRG
KGZsb2F0IGYpIHsgbV9tYXRyaXguc2V0RihmKTsgfQorICAgIGRvdWJsZSBhKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXRyaXguYSgpOyB9CisgICAgZG91YmxlIGIoKSBjb25zdCB7IHJldHVybiBtX21h
dHJpeC5iKCk7IH0KKyAgICBkb3VibGUgYygpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4LmMoKTsg
fQorICAgIGRvdWJsZSBkKCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXguZCgpOyB9CisgICAgZG91
YmxlIGUoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeC5lKCk7IH0KKyAgICBkb3VibGUgZigpIGNv
bnN0IHsgcmV0dXJuIG1fbWF0cml4LmYoKTsgfQorICAgIAorICAgIHZvaWQgc2V0QShkb3VibGUg
ZikgeyBtX21hdHJpeC5zZXRBKGYpOyB9CisgICAgdm9pZCBzZXRCKGRvdWJsZSBmKSB7IG1fbWF0
cml4LnNldEIoZik7IH0KKyAgICB2b2lkIHNldEMoZG91YmxlIGYpIHsgbV9tYXRyaXguc2V0Qyhm
KTsgfQorICAgIHZvaWQgc2V0RChkb3VibGUgZikgeyBtX21hdHJpeC5zZXREKGYpOyB9CisgICAg
dm9pZCBzZXRFKGRvdWJsZSBmKSB7IG1fbWF0cml4LnNldEUoZik7IH0KKyAgICB2b2lkIHNldEYo
ZG91YmxlIGYpIHsgbV9tYXRyaXguc2V0RihmKTsgfQorIAorICAgIGRvdWJsZSBtMTEoKSBjb25z
dCB7IHJldHVybiBtX21hdHJpeC5tMTEoKTsgfQorICAgIGRvdWJsZSBtMTIoKSBjb25zdCB7IHJl
dHVybiBtX21hdHJpeC5tMTIoKTsgfQorICAgIGRvdWJsZSBtMTMoKSBjb25zdCB7IHJldHVybiBt
X21hdHJpeC5tMTMoKTsgfQorICAgIGRvdWJsZSBtMTQoKSBjb25zdCB7IHJldHVybiBtX21hdHJp
eC5tMTQoKTsgfQorICAgIGRvdWJsZSBtMjEoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeC5tMjEo
KTsgfQorICAgIGRvdWJsZSBtMjIoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeC5tMjIoKTsgfQor
ICAgIGRvdWJsZSBtMjMoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeC5tMjMoKTsgfQorICAgIGRv
dWJsZSBtMjQoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeC5tMjQoKTsgfQorICAgIGRvdWJsZSBt
MzEoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeC5tMzEoKTsgfQorICAgIGRvdWJsZSBtMzIoKSBj
b25zdCB7IHJldHVybiBtX21hdHJpeC5tMzIoKTsgfQorICAgIGRvdWJsZSBtMzMoKSBjb25zdCB7
IHJldHVybiBtX21hdHJpeC5tMzMoKTsgfQorICAgIGRvdWJsZSBtMzQoKSBjb25zdCB7IHJldHVy
biBtX21hdHJpeC5tMzQoKTsgfQorICAgIGRvdWJsZSBtNDEoKSBjb25zdCB7IHJldHVybiBtX21h
dHJpeC5tNDEoKTsgfQorICAgIGRvdWJsZSBtNDIoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeC5t
NDIoKTsgfQorICAgIGRvdWJsZSBtNDMoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeC5tNDMoKTsg
fQorICAgIGRvdWJsZSBtNDQoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeC5tNDQoKTsgfQorICAg
IAorICAgIHZvaWQgc2V0TTExKGRvdWJsZSBmKSB7IG1fbWF0cml4LnNldE0xMShmKTsgfQorICAg
IHZvaWQgc2V0TTEyKGRvdWJsZSBmKSB7IG1fbWF0cml4LnNldE0xMihmKTsgfQorICAgIHZvaWQg
c2V0TTEzKGRvdWJsZSBmKSB7IG1fbWF0cml4LnNldE0xMyhmKTsgfQorICAgIHZvaWQgc2V0TTE0
KGRvdWJsZSBmKSB7IG1fbWF0cml4LnNldE0xNChmKTsgfQorICAgIHZvaWQgc2V0TTIxKGRvdWJs
ZSBmKSB7IG1fbWF0cml4LnNldE0yMShmKTsgfQorICAgIHZvaWQgc2V0TTIyKGRvdWJsZSBmKSB7
IG1fbWF0cml4LnNldE0yMihmKTsgfQorICAgIHZvaWQgc2V0TTIzKGRvdWJsZSBmKSB7IG1fbWF0
cml4LnNldE0yMyhmKTsgfQorICAgIHZvaWQgc2V0TTI0KGRvdWJsZSBmKSB7IG1fbWF0cml4LnNl
dE0yNChmKTsgfQorICAgIHZvaWQgc2V0TTMxKGRvdWJsZSBmKSB7IG1fbWF0cml4LnNldE0zMShm
KTsgfQorICAgIHZvaWQgc2V0TTMyKGRvdWJsZSBmKSB7IG1fbWF0cml4LnNldE0zMihmKTsgfQor
ICAgIHZvaWQgc2V0TTMzKGRvdWJsZSBmKSB7IG1fbWF0cml4LnNldE0zMyhmKTsgfQorICAgIHZv
aWQgc2V0TTM0KGRvdWJsZSBmKSB7IG1fbWF0cml4LnNldE0zNChmKTsgfQorICAgIHZvaWQgc2V0
TTQxKGRvdWJsZSBmKSB7IG1fbWF0cml4LnNldE00MShmKTsgfQorICAgIHZvaWQgc2V0TTQyKGRv
dWJsZSBmKSB7IG1fbWF0cml4LnNldE00MihmKTsgfQorICAgIHZvaWQgc2V0TTQzKGRvdWJsZSBm
KSB7IG1fbWF0cml4LnNldE00MyhmKTsgfQorICAgIHZvaWQgc2V0TTQ0KGRvdWJsZSBmKSB7IG1f
bWF0cml4LnNldE00NChmKTsgfQogIAogICAgIHZvaWQgc2V0TWF0cml4VmFsdWUoY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAKLSAgICAvLyB0aGlzID0gdGhpcyAq
IHNlY29uZE1hdHJpeAotICAgIFBhc3NSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBtdWx0aXBseShX
ZWJLaXRDU1NNYXRyaXgqIHNlY29uZE1hdHJpeCk7CisgICAgLy8gVGhlIGZvbGxvd2luZyBtYXRo
IGZ1bmN0aW9uIHJldHVybiBhIG5ldyBtYXRyaXggd2l0aCB0aGUgCisgICAgLy8gc3BlY2lmaWVk
IG9wZXJhdGlvbiBhcHBsaWVkLiBUaGUgdGhpcyB2YWx1ZSBpcyBub3QgbW9kaWZpZWQuCisgICAg
CisgICAgLy8gTXVsdGlwbHkgdGhpcyBtYXRyaXggYnkgc2Vjb25kTWF0cml4LCBvbiB0aGUgcmln
aHQgKHJlc3VsdCA9IHRoaXMgKiBzZWNvbmRNYXRyaXgpCisgICAgUGFzc1JlZlB0cjxXZWJLaXRD
U1NNYXRyaXg+IG11bHRpcGx5KFdlYktpdENTU01hdHJpeCogc2Vjb25kTWF0cml4KSBjb25zdDsK
ICAgICAKLSAgICAvLyBGSVhNRTogd2UgcmVhbGx5IHNob3VsZCBoYXZlIGFuIGV4Y2VwdGlvbiBo
ZXJlLCBmb3Igd2hlbiBtYXRyaXggaXMgbm90IGludmVydGlibGUKLSAgICBQYXNzUmVmUHRyPFdl
YktpdENTU01hdHJpeD4gaW52ZXJzZShFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxX
ZWJLaXRDU1NNYXRyaXg+IHRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5KTsKLSAgICBQYXNzUmVm
UHRyPFdlYktpdENTU01hdHJpeD4gc2NhbGUoZmxvYXQgc2NhbGVYLCBmbG9hdCBzY2FsZVkpOwot
ICAgIFBhc3NSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiByb3RhdGUoZmxvYXQgcm90KTsKKyAgICAv
LyBSZXR1cm4gdGhlIGludmVyc2Ugb2YgdGhpcyBtYXRyaXguIFRocm93IGFuIGV4Y2VwdGlvbiBp
ZiB0aGUgbWF0cml4IGlzIG5vdCBpbnZlcnRpYmxlCisgICAgUGFzc1JlZlB0cjxXZWJLaXRDU1NN
YXRyaXg+IGludmVyc2UoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OworICAgIAorICAgIC8vIFJldHVy
biB0aGlzIG1hdHJpeCB0cmFuc2xhdGVkIGJ5IHRoZSBwYXNzZWQgdmFsdWVzLgorICAgIC8vIFBh
c3NpbmcgYSBOYU4gd2lsbCB1c2UgYSB2YWx1ZSBvZiAwLiBUaGlzIGFsbG93cyB0aGUgM0QgZm9y
bSB0byB1c2VkIGZvciAyRCBvcGVyYXRpb25zCisgICAgLy8gT3BlcmF0aW9uIGlzIHBlcmZvcm1l
ZCBhcyB0aG91Z2ggdGhlIHRoaXMgbWF0cml4IGlzIG11bHRpcGxpZWQgYnkgYSBtYXRyaXggd2l0
aAorICAgIC8vIHRoZSB0cmFuc2xhdGlvbiB2YWx1ZXMgb24gdGhlIGxlZnQgKHJlc3VsdCA9IHRy
YW5zbGF0aW9uKHgseSx6KSAqIHRoaXMpCisgICAgUGFzc1JlZlB0cjxXZWJLaXRDU1NNYXRyaXg+
IHRyYW5zbGF0ZShkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB6KSBjb25zdDsKKyAgICAKKyAg
ICAvLyBSZXR1cm5zIHRoaXMgbWF0cml4IHNjYWxlZCBieSB0aGUgcGFzc2VkIHZhbHVlcy4KKyAg
ICAvLyBQYXNzaW5nIHNjYWxlWCBvciBzY2FsZVogYXMgTmFOIHVzZXMgYSB2YWx1ZSBvZiAxLCBi
dXQgcGFzc2luZyBzY2FsZVkgb2YgTmFOIAorICAgIC8vIG1ha2VzIGl0IHRoZSBzYW1lIGFzIHNj
YWxlWC4gVGhpcyBhbGxvd3MgdGhlIDNEIGZvcm0gdG8gdXNlZCBmb3IgMkQgb3BlcmF0aW9ucwor
ICAgIC8vIE9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgYXMgdGhvdWdoIHRoZSB0aGlzIG1hdHJpeCBp
cyBtdWx0aXBsaWVkIGJ5IGEgbWF0cml4IHdpdGgKKyAgICAvLyB0aGUgc2NhbGUgdmFsdWVzIG9u
IHRoZSBsZWZ0IChyZXN1bHQgPSBzY2FsZSh4LHkseikgKiB0aGlzKQorICAgIFBhc3NSZWZQdHI8
V2ViS2l0Q1NTTWF0cml4PiBzY2FsZShkb3VibGUgc2NhbGVYLCBkb3VibGUgc2NhbGVZLCBkb3Vi
bGUgc2NhbGVaKSBjb25zdDsKKworICAgIC8vIFJldHVybnMgdGhpcyBtYXRyaXggcm90YXRlZCBi
eSB0aGUgcGFzc2VkIHZhbHVlcy4KKyAgICAvLyBJZiByb3RZIGFuZCByb3RaIGFyZSBOYU4sIHJv
dGF0ZSBhYm91dCBaIChyb3RYPTAsIHJvdGF0ZVk9MCwgcm90YXRlWj1yb3RYKS4KKyAgICAvLyBP
dGhlcndpc2UgdXNlIGEgcm90YXRpb24gdmFsdWUgb2YgMCBmb3IgYW55IHBhc3NlZCBOYU4uICAg
IAorICAgIC8vIE9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgYXMgdGhvdWdoIHRoZSB0aGlzIG1hdHJp
eCBpcyBtdWx0aXBsaWVkIGJ5IGEgbWF0cml4IHdpdGgKKyAgICAvLyB0aGUgcm90YXRpb24gdmFs
dWVzIG9uIHRoZSBsZWZ0IChyZXN1bHQgPSByb3RhdGlvbih4LHkseikgKiB0aGlzKQorICAgIFBh
c3NSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiByb3RhdGUoZG91YmxlIHJvdFgsIGRvdWJsZSByb3RZ
LCBkb3VibGUgcm90WikgY29uc3Q7CisgICAgCisgICAgLy8gUmV0dXJucyB0aGlzIG1hdHJpeCBy
b3RhdGVkIGFib3V0IHRoZSBwYXNzZWQgYXhpcyBieSB0aGUgcGFzc2VkIGFuZ2xlLgorICAgIC8v
IFBhc3NpbmcgYSBOYU4gd2lsbCB1c2UgYSB2YWx1ZSBvZiAwLiBJZiB0aGUgYXhpcyBpcyAoMCww
LDApIHVzZSBhIHZhbHVlCisgICAgLy8gT3BlcmF0aW9uIGlzIHBlcmZvcm1lZCBhcyB0aG91Z2gg
dGhlIHRoaXMgbWF0cml4IGlzIG11bHRpcGxpZWQgYnkgYSBtYXRyaXggd2l0aAorICAgIC8vIHRo
ZSByb3RhdGlvbiB2YWx1ZXMgb24gdGhlIGxlZnQgKHJlc3VsdCA9IHJvdGF0aW9uKHgseSx6LGFu
Z2xlKSAqIHRoaXMpCisgICAgUGFzc1JlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IHJvdGF0ZUF4aXNB
bmdsZShkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB6LCBkb3VibGUgYW5nbGUpIGNvbnN0Owog
ICAgIAogICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0oKSB7IHJldHVy
biBtX21hdHJpeDsgfQogICAgIApJbmRleDogV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguaWRsCShyZXZpc2lv
biA0MDc5NykKKysrIFdlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDE5ICsyOCw1NyBAQCBtb2R1bGUgY3NzIHsKICAgICAvLyBJbnRyb2R1Y2VkIGlu
IERPTSBMZXZlbCA/OgogICAgIGludGVyZmFjZSBXZWJLaXRDU1NNYXRyaXggewogCi0gICAgICAg
IGF0dHJpYnV0ZSBmbG9hdCBhOwotICAgICAgICBhdHRyaWJ1dGUgZmxvYXQgYjsKLSAgICAgICAg
YXR0cmlidXRlIGZsb2F0IGM7Ci0gICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBkOwotICAgICAgICBh
dHRyaWJ1dGUgZmxvYXQgZTsKLSAgICAgICAgYXR0cmlidXRlIGZsb2F0IGY7CisgICAgICAgIC8v
IFRoZXNlIGF0dHJpYnV0ZXMgYXJlIHNpbXBsZSBhbGlhc2VzIGZvciBjZXJ0YWluIGVsZW1lbnRz
IG9mIHRoZSA0eDQgbWF0cml4CisgICAgICAgIGF0dHJpYnV0ZSBkb3VibGUgYTsgLy8gYWxpYXMg
Zm9yIG0xMQorICAgICAgICBhdHRyaWJ1dGUgZG91YmxlIGI7IC8vIGFsaWFzIGZvciBtMTIKKyAg
ICAgICAgYXR0cmlidXRlIGRvdWJsZSBjOyAvLyBhbGlhcyBmb3IgbTIxCisgICAgICAgIGF0dHJp
YnV0ZSBkb3VibGUgZDsgLy8gYWxpYXMgZm9yIG0yMgorICAgICAgICBhdHRyaWJ1dGUgZG91Ymxl
IGU7IC8vIGFsaWFzIGZvciBtNDEKKyAgICAgICAgYXR0cmlidXRlIGRvdWJsZSBmOyAvLyBhbGlh
cyBmb3IgbTQyCiAKLSAgICAgICAgdm9pZCAgICAgICAgICAgIHNldE1hdHJpeFZhbHVlKGluIERP
TVN0cmluZyBzdHJpbmcpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKLSAgICAgICAgV2ViS2l0Q1NT
TWF0cml4IG11bHRpcGx5KGluIFdlYktpdENTU01hdHJpeCBzZWNvbmRNYXRyaXgpOwotICAgICAg
ICBXZWJLaXRDU1NNYXRyaXggaW52ZXJzZSgpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKLSAgICAg
ICAgV2ViS2l0Q1NTTWF0cml4IHRyYW5zbGF0ZShpbiBmbG9hdCB4LCBpbiBmbG9hdCB5KTsKLSAg
ICAgICAgV2ViS2l0Q1NTTWF0cml4IHNjYWxlKGluIGZsb2F0IHNjYWxlWCwgaW4gZmxvYXQgc2Nh
bGVZKTsKLSAgICAgICAgV2ViS2l0Q1NTTWF0cml4IHJvdGF0ZShpbiBmbG9hdCByb3QpOworICAg
ICAgICBhdHRyaWJ1dGUgZG91YmxlIG0xMTsKKyAgICAgICAgYXR0cmlidXRlIGRvdWJsZSBtMTI7
CisgICAgICAgIGF0dHJpYnV0ZSBkb3VibGUgbTEzOworICAgICAgICBhdHRyaWJ1dGUgZG91Ymxl
IG0xNDsKKyAgICAgICAgYXR0cmlidXRlIGRvdWJsZSBtMjE7CisgICAgICAgIGF0dHJpYnV0ZSBk
b3VibGUgbTIyOworICAgICAgICBhdHRyaWJ1dGUgZG91YmxlIG0yMzsKKyAgICAgICAgYXR0cmli
dXRlIGRvdWJsZSBtMjQ7CisgICAgICAgIGF0dHJpYnV0ZSBkb3VibGUgbTMxOworICAgICAgICBh
dHRyaWJ1dGUgZG91YmxlIG0zMjsKKyAgICAgICAgYXR0cmlidXRlIGRvdWJsZSBtMzM7CisgICAg
ICAgIGF0dHJpYnV0ZSBkb3VibGUgbTM0OworICAgICAgICBhdHRyaWJ1dGUgZG91YmxlIG00MTsK
KyAgICAgICAgYXR0cmlidXRlIGRvdWJsZSBtNDI7CisgICAgICAgIGF0dHJpYnV0ZSBkb3VibGUg
bTQzOworICAgICAgICBhdHRyaWJ1dGUgZG91YmxlIG00NDsKKworICAgICAgICB2b2lkIHNldE1h
dHJpeFZhbHVlKGluIERPTVN0cmluZyBzdHJpbmcpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAg
ICAgICAgCisgICAgICAgIC8vIE11bHRpcGx5IHRoaXMgbWF0cml4IGJ5IHNlY29uZE1hdHJpeCwg
b24gdGhlIHJpZ2h0IChyZXN1bHQgPSB0aGlzICogc2Vjb25kTWF0cml4KQorICAgICAgICBbSW1t
dXRhYmxlXSBXZWJLaXRDU1NNYXRyaXggbXVsdGlwbHkoaW4gV2ViS2l0Q1NTTWF0cml4IHNlY29u
ZE1hdHJpeCk7CisgICAgICAgIAorICAgICAgICAvLyBSZXR1cm4gdGhlIGludmVyc2Ugb2YgdGhp
cyBtYXRyaXguIFRocm93IGFuIGV4Y2VwdGlvbiBpZiB0aGUgbWF0cml4IGlzIG5vdCBpbnZlcnRp
YmxlCisgICAgICAgIFtJbW11dGFibGVdIFdlYktpdENTU01hdHJpeCBpbnZlcnNlKCkgcmFpc2Vz
IChET01FeGNlcHRpb24pOworICAgICAgICAKKyAgICAgICAgLy8gUmV0dXJuIHRoaXMgbWF0cml4
IHRyYW5zbGF0ZWQgYnkgdGhlIHBhc3NlZCB2YWx1ZXMuCisgICAgICAgIC8vIFBhc3NpbmcgYSBO
YU4gd2lsbCB1c2UgYSB2YWx1ZSBvZiAwLiBUaGlzIGFsbG93cyB0aGUgM0QgZm9ybSB0byB1c2Vk
IGZvciAyRCBvcGVyYXRpb25zICAgIAorICAgICAgICBbSW1tdXRhYmxlXSBXZWJLaXRDU1NNYXRy
aXggdHJhbnNsYXRlKGluIGRvdWJsZSB4LCBpbiBkb3VibGUgeSwgaW4gZG91YmxlIHopOworICAg
ICAgICAKKyAgICAgICAgLy8gUmV0dXJucyB0aGlzIG1hdHJpeCBzY2FsZWQgYnkgdGhlIHBhc3Nl
ZCB2YWx1ZXMuCisgICAgICAgIC8vIFBhc3Npbmcgc2NhbGVYIG9yIHNjYWxlWiBhcyBOYU4gdXNl
cyBhIHZhbHVlIG9mIDEsIGJ1dCBwYXNzaW5nIHNjYWxlWSBvZiBOYU4gCisgICAgICAgIC8vIG1h
a2VzIGl0IHRoZSBzYW1lIGFzIHNjYWxlWC4gVGhpcyBhbGxvd3MgdGhlIDNEIGZvcm0gdG8gdXNl
ZCBmb3IgMkQgb3BlcmF0aW9ucworICAgICAgICBbSW1tdXRhYmxlXSBXZWJLaXRDU1NNYXRyaXgg
c2NhbGUoaW4gZG91YmxlIHNjYWxlWCwgaW4gZG91YmxlIHNjYWxlWSwgaW4gZG91YmxlIHNjYWxl
Wik7CisgICAgICAgIAorICAgICAgICAvLyBSZXR1cm5zIHRoaXMgbWF0cml4IHJvdGF0ZWQgYnkg
dGhlIHBhc3NlZCB2YWx1ZXMuCisgICAgICAgIC8vIElmIHJvdFkgYW5kIHJvdFogYXJlIE5hTiwg
cm90YXRlIGFib3V0IFogKHJvdFg9MCwgcm90YXRlWT0wLCByb3RhdGVaPXJvdFgpLgorICAgICAg
ICAvLyBPdGhlcndpc2UgdXNlIGEgcm90YXRpb24gdmFsdWUgb2YgMCBmb3IgYW55IHBhc3NlZCBO
YU4uICAgIAorICAgICAgICBbSW1tdXRhYmxlXSBXZWJLaXRDU1NNYXRyaXggcm90YXRlKGluIGRv
dWJsZSByb3RYLCBpbiBkb3VibGUgcm90WSwgaW4gZG91YmxlIHJvdFopOworICAgICAgICAKKyAg
ICAgICAgLy8gUmV0dXJucyB0aGlzIG1hdHJpeCByb3RhdGVkIGFib3V0IHRoZSBwYXNzZWQgYXhp
cyBieSB0aGUgcGFzc2VkIGFuZ2xlLgorICAgICAgICAvLyBQYXNzaW5nIGEgTmFOIHdpbGwgdXNl
IGEgdmFsdWUgb2YgMC4gSWYgdGhlIGF4aXMgaXMgKDAsMCwwKSB1c2UgYSB2YWx1ZQorICAgICAg
ICAvLyBvZiAoMCwwLDEpLgorICAgICAgICBbSW1tdXRhYmxlXSBXZWJLaXRDU1NNYXRyaXggcm90
YXRlQXhpc0FuZ2xlKGluIGRvdWJsZSB4LCBpbiBkb3VibGUgeSwgaW4gZG91YmxlIHosIGluIGRv
dWJsZSBhbmdsZSk7CiAgICAgICAgIAogICAgICAgICBbRG9udEVudW1dIERPTVN0cmluZyB0b1N0
cmluZygpOwogICAgIH07CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0MDc5NykKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDA5LTAyLTA5ICBD
aHJpcyBNYXJyaW4gIDxjbWFycmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM2ODkKKworICAgICAgICBTaW5jZSB0aGUgQ1NTIHBhcnNlciBkb2VzIG5vdCB5
ZXQgaGFuZGxlIGFueSBvZiB0aGUgM0QKKyAgICAgICAgZnVuY3Rpb25zIGZvciAtd2Via2l0LXRy
YW5zZm9ybSwgdGVzdHMgZm9yIHRoZXNlIGZlYXR1cmVzCisgICAgICAgIGFyZSBjdXJyZW50bHkg
Y29tbWVudGVkIG91dC4KKworICAgICAgICAqIHRyYW5zZm9ybXMvM2Q6IEFkZGVkLgorICAgICAg
ICAqIHRyYW5zZm9ybXMvM2QvY3NzbWF0cml4LTNkLWludGVyZmFjZS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHRyYW5zZm9ybXMvM2QvY3NzbWF0cml4LTNkLWludGVyZmFjZS54aHRt
bDogQWRkZWQuCisKIDIwMDktMDItMDkgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZlIEh5YXR0LgpJbmRleDogTGF5b3V0
VGVzdHMvdHJhbnNmb3Jtcy8yZC9jc3NtYXRyaXgtaW50ZXJmYWNlLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy90cmFuc2Zvcm1zLzJkL2Nzc21hdHJpeC1pbnRlcmZhY2Ut
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0MDc5NykKKysrIExheW91dFRlc3RzL3RyYW5zZm9ybXMv
MmQvY3NzbWF0cml4LWludGVyZmFjZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTgs
NiArOCwxNiBAQCBQQVNTIGRlZmF1bHQgY29uc3RydWN0b3IKIFBBU1Mgb2JqZWN0IGNvbnN0cnVj
dG9yCiBQQVNTIHN0cmluZyBjb25zdHJ1Y3RvcgogCitUZXN0IHRvU3RyaW5nCitQQVNTIGFbMF0g
aXMgIm1hdHJpeCIKK1BBU1MgcGFyc2VGbG9hdChhMlswXSkgaXMgMQorUEFTUyBwYXJzZUZsb2F0
KGEyWzFdKSBpcyAwCitQQVNTIHBhcnNlRmxvYXQoYTJbMl0pIGlzIDAKK1BBU1MgcGFyc2VGbG9h
dChhMlszXSkgaXMgMQorUEFTUyBwYXJzZUZsb2F0KGEyWzRdKSBpcyAwCitQQVNTIHBhcnNlRmxv
YXQoYTNbMF0pIGlzIDAKK1BBU1MgYTNbMV0gaXMgIiIKKwogVGVzdCBiYWQgaW5wdXQgdG8gc3Ry
aW5nIGNvbnN0cnVjdG9yCiBQQVNTIG5ldyBXZWJLaXRDU1NNYXRyaXgoImJhbmFuYSIpIHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KIApAQCAtNTYs
NiArNjYsMTQgQEAgUEFTUyBwYXJzZUZsb2F0KG0zLmQpIGlzIDY0CiBQQVNTIHBhcnNlRmxvYXQo
bTMuZSkgaXMgMTAwCiBQQVNTIHBhcnNlRmxvYXQobTMuZikgaXMgMTEyCiAKK1Rlc3QgaW1tdXRh
YmlsaXR5IG9mIG11bHRpcGx5CitQQVNTIHBhcnNlRmxvYXQobS5hKSBpcyAxCitQQVNTIHBhcnNl
RmxvYXQobS5iKSBpcyAyCitQQVNTIHBhcnNlRmxvYXQobS5jKSBpcyAzCitQQVNTIHBhcnNlRmxv
YXQobS5kKSBpcyA0CitQQVNTIHBhcnNlRmxvYXQobS5lKSBpcyA1CitQQVNTIHBhcnNlRmxvYXQo
bS5mKSBpcyA2CisKIFRlc3QgaW52ZXJzZQogUEFTUyBwYXJzZUZsb2F0KG0yLmEpIGlzIDAuNQog
UEFTUyBwYXJzZUZsb2F0KG0yLmIpIGlzIDAKQEAgLTY0LDMzICs4Miw2NSBAQCBQQVNTIHBhcnNl
RmxvYXQobTIuZCkgaXMgMC41CiBQQVNTIHBhcnNlRmxvYXQobTIuZSkgaXMgLTUKIFBBU1MgcGFy
c2VGbG9hdChtMi5mKSBpcyAtMTAKIAorVGVzdCBpbW11dGFiaWxpdHkgb2YgaW52ZXJzZQorUEFT
UyBwYXJzZUZsb2F0KG0uYSkgaXMgMgorUEFTUyBwYXJzZUZsb2F0KG0uYikgaXMgMAorUEFTUyBw
YXJzZUZsb2F0KG0uYykgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0uZCkgaXMgMgorUEFTUyBwYXJz
ZUZsb2F0KG0uZSkgaXMgMTAKK1BBU1MgcGFyc2VGbG9hdChtLmYpIGlzIDIwCisKIFRlc3QgdGhy
b3dpbmcgZXhjZXB0aW9uIGZyb20gaW52ZXJzZQogUEFTUyBtLmludmVyc2UoKSB0aHJldyBleGNl
cHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCiAKIFRlc3Qg
dHJhbnNsYXRlCi1QQVNTIG0uYSBpcyAxCi1QQVNTIG0uYiBpcyAwCi1QQVNTIG0uYyBpcyAwCi1Q
QVNTIG0uZCBpcyAxCi1QQVNTIG0uZSBpcyAxMAotUEFTUyBtLmYgaXMgMjAKK1BBU1MgbTIuYSBp
cyAxCitQQVNTIG0yLmIgaXMgMAorUEFTUyBtMi5jIGlzIDAKK1BBU1MgbTIuZCBpcyAxCitQQVNT
IG0yLmUgaXMgMTAKK1BBU1MgbTIuZiBpcyAyMAorCitUZXN0IGltbXV0YWJpbGl0eSBvZiB0cmFu
c2xhdGUKK1BBU1MgcGFyc2VGbG9hdChtLmEpIGlzIDEKK1BBU1MgcGFyc2VGbG9hdChtLmIpIGlz
IDAKK1BBU1MgcGFyc2VGbG9hdChtLmMpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtLmQpIGlzIDEK
K1BBU1MgcGFyc2VGbG9hdChtLmUpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtLmYpIGlzIDAKIAog
VGVzdCBzY2FsZQotUEFTUyBtLmEgaXMgMTAKLVBBU1MgbS5iIGlzIDAKLVBBU1MgbS5jIGlzIDAK
LVBBU1MgbS5kIGlzIDIwCi1QQVNTIG0uZSBpcyAwCi1QQVNTIG0uZiBpcyAwCitQQVNTIG0yLmEg
aXMgMTAKK1BBU1MgbTIuYiBpcyAwCitQQVNTIG0yLmMgaXMgMAorUEFTUyBtMi5kIGlzIDIwCitQ
QVNTIG0yLmUgaXMgMAorUEFTUyBtMi5mIGlzIDAKKworVGVzdCBpbW11dGFiaWxpdHkgb2Ygc2Nh
bGUKK1BBU1MgcGFyc2VGbG9hdChtLmEpIGlzIDEKK1BBU1MgcGFyc2VGbG9hdChtLmIpIGlzIDAK
K1BBU1MgcGFyc2VGbG9hdChtLmMpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtLmQpIGlzIDEKK1BB
U1MgcGFyc2VGbG9hdChtLmUpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtLmYpIGlzIDAKIAogVGVz
dCByb3RhdGUKLVBBU1MgTWF0aC5yb3VuZChtLmEqMTAwMDAwMCkvMTAwMDAwMCBpcyAwLjk4NDgw
OAotUEFTUyBNYXRoLnJvdW5kKG0uYioxMDAwMDAwKS8xMDAwMDAwIGlzIDAuMTczNjQ4Ci1QQVNT
IE1hdGgucm91bmQobS5jKjEwMDAwMDApLzEwMDAwMDAgaXMgLTAuMTczNjQ4Ci1QQVNTIE1hdGgu
cm91bmQobS5kKjEwMDAwMDApLzEwMDAwMDAgaXMgMC45ODQ4MDgKK1BBU1MgcGFyc2VGbG9hdCht
Mi5hLnRvUHJlY2lzaW9uKDYpKSBpcyAwLjk4NDgwOAorUEFTUyBwYXJzZUZsb2F0KG0yLmIudG9Q
cmVjaXNpb24oNikpIGlzIDAuMTczNjQ4CitQQVNTIHBhcnNlRmxvYXQobTIuYy50b1ByZWNpc2lv
big2KSkgaXMgLTAuMTczNjQ4CitQQVNTIHBhcnNlRmxvYXQobTIuZC50b1ByZWNpc2lvbig2KSkg
aXMgMC45ODQ4MDgKIFBBU1MgbS5lIGlzIDAKIFBBU1MgbS5mIGlzIDAKIAorVGVzdCBpbW11dGFi
aWxpdHkgb2Ygcm90YXRlCitQQVNTIHBhcnNlRmxvYXQobS5hKSBpcyAxCitQQVNTIHBhcnNlRmxv
YXQobS5iKSBpcyAwCitQQVNTIHBhcnNlRmxvYXQobS5jKSBpcyAwCitQQVNTIHBhcnNlRmxvYXQo
bS5kKSBpcyAxCitQQVNTIHBhcnNlRmxvYXQobS5lKSBpcyAwCitQQVNTIHBhcnNlRmxvYXQobS5m
KSBpcyAwCisKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVU
RQpJbmRleDogTGF5b3V0VGVzdHMvdHJhbnNmb3Jtcy8yZC9jc3NtYXRyaXgtaW50ZXJmYWNlLnho
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3RyYW5zZm9ybXMvMmQvY3NzbWF0cml4LWlu
dGVyZmFjZS54aHRtbAkocmV2aXNpb24gNDA3OTcpCisrKyBMYXlvdXRUZXN0cy90cmFuc2Zvcm1z
LzJkL2Nzc21hdHJpeC1pbnRlcmZhY2UueGh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0
LDIyIEBAIGVsc2UKICAgdGVzdEZhaWxlZCgic3RyaW5nIGNvbnN0cnVjdG9yIik7CiAKIGRlYnVn
KCIiKTsKK2RlYnVnKCJUZXN0IHRvU3RyaW5nIik7Cit2YXIgbSA9IG5ldyBXZWJLaXRDU1NNYXRy
aXgoIm1hdHJpeCgxLCAwLCAwLCAxLCAwLCAwKSIpOwordmFyIHMgPSBtLnRvU3RyaW5nKCk7Cit2
YXIgYSA9IHMuc3BsaXQoJygnKTsKK3Nob3VsZEJlKCdhWzBdJywgJyJtYXRyaXgiJyk7Cit2YXIg
YTIgPSBhWzFdLnNwbGl0KCcsJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChhMlswXSknLCAnMScp
Oworc2hvdWxkQmUoJ3BhcnNlRmxvYXQoYTJbMV0pJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZs
b2F0KGEyWzJdKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChhMlszXSknLCAnMScpOwor
c2hvdWxkQmUoJ3BhcnNlRmxvYXQoYTJbNF0pJywgJzAnKTsKK3ZhciBhMyA9IGEyWzVdLnNwbGl0
KCIpIik7CitzaG91bGRCZSgncGFyc2VGbG9hdChhM1swXSknLCAnMCcpOworc2hvdWxkQmUoJ2Ez
WzFdJywgJyIiJyk7CisKK2RlYnVnKCIiKTsKIGRlYnVnKCJUZXN0IGJhZCBpbnB1dCB0byBzdHJp
bmcgY29uc3RydWN0b3IiKTsKIHNob3VsZFRocm93KCduZXcgV2ViS2l0Q1NTTWF0cml4KCJiYW5h
bmEiKScpOwogCkBAIC05OCw2ICsxMTQsMTUgQEAgc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTMuZSkn
LCAnMTAwJyk7CiBzaG91bGRCZSgncGFyc2VGbG9hdChtMy5mKScsICcxMTInKTsKIAogZGVidWco
IiIpOworZGVidWcoIlRlc3QgaW1tdXRhYmlsaXR5IG9mIG11bHRpcGx5Iik7CitzaG91bGRCZSgn
cGFyc2VGbG9hdChtLmEpJywgJzEnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0uYiknLCAnMicp
Oworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5jKScsICczJyk7CitzaG91bGRCZSgncGFyc2VGbG9h
dChtLmQpJywgJzQnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0uZSknLCAnNScpOworc2hvdWxk
QmUoJ3BhcnNlRmxvYXQobS5mKScsICc2Jyk7CisKK2RlYnVnKCIiKTsKIGRlYnVnKCJUZXN0IGlu
dmVyc2UiKTsKIG0gPSBuZXcgV2ViS2l0Q1NTTWF0cml4KCJtYXRyaXgoMiwgMCwgMCwgMiwgMTAs
IDIwKSIpOwogbTIgPSBtLmludmVyc2UoKTsKQEAgLTExMCw2ICsxMzUsMTUgQEAgc2hvdWxkQmUo
J3BhcnNlRmxvYXQobTIuZSknLCAnLTUnKTsKIHNob3VsZEJlKCdwYXJzZUZsb2F0KG0yLmYpJywg
Jy0xMCcpOwogCiBkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCBpbW11dGFiaWxpdHkgb2YgaW52ZXJz
ZSIpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5hKScsICcyJyk7CitzaG91bGRCZSgncGFyc2VG
bG9hdChtLmIpJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0uYyknLCAnMCcpOworc2hv
dWxkQmUoJ3BhcnNlRmxvYXQobS5kKScsICcyJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLmUp
JywgJzEwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLmYpJywgJzIwJyk7CisKK2RlYnVnKCIi
KTsKIGRlYnVnKCJUZXN0IHRocm93aW5nIGV4Y2VwdGlvbiBmcm9tIGludmVyc2UiKTsKIG0gPSBu
ZXcgV2ViS2l0Q1NTTWF0cml4KCJtYXRyaXgoMCwgMCwgMCwgMCwgMCwgMCkiKTsgLy8gbm90IGlu
dmVydGlibGUKIHNob3VsZFRocm93KCdtLmludmVyc2UoKScpOwpAQCAtMTE3LDM3ICsxNTEsNjQg
QEAgc2hvdWxkVGhyb3coJ20uaW52ZXJzZSgpJyk7CiBkZWJ1ZygiIik7CiBkZWJ1ZygiVGVzdCB0
cmFuc2xhdGUiKTsKIG0gPSBuZXcgV2ViS2l0Q1NTTWF0cml4KCk7Ci1tID0gbS50cmFuc2xhdGUo
MTAsIDIwKTsKLXNob3VsZEJlKCdtLmEnLCAnMScpOwotc2hvdWxkQmUoJ20uYicsICcwJyk7Ci1z
aG91bGRCZSgnbS5jJywgJzAnKTsKLXNob3VsZEJlKCdtLmQnLCAnMScpOwotc2hvdWxkQmUoJ20u
ZScsICcxMCcpOwotc2hvdWxkQmUoJ20uZicsICcyMCcpOworbTIgPSBtLnRyYW5zbGF0ZSgxMCwg
MjApOworc2hvdWxkQmUoJ20yLmEnLCAnMScpOworc2hvdWxkQmUoJ20yLmInLCAnMCcpOworc2hv
dWxkQmUoJ20yLmMnLCAnMCcpOworc2hvdWxkQmUoJ20yLmQnLCAnMScpOworc2hvdWxkQmUoJ20y
LmUnLCAnMTAnKTsKK3Nob3VsZEJlKCdtMi5mJywgJzIwJyk7CisKK2RlYnVnKCIiKTsKK2RlYnVn
KCJUZXN0IGltbXV0YWJpbGl0eSBvZiB0cmFuc2xhdGUiKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0
KG0uYSknLCAnMScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5iKScsICcwJyk7CitzaG91bGRC
ZSgncGFyc2VGbG9hdChtLmMpJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0uZCknLCAn
MScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5lKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VG
bG9hdChtLmYpJywgJzAnKTsKIAogZGVidWcoIiIpOwogZGVidWcoIlRlc3Qgc2NhbGUiKTsKIG0g
PSBuZXcgV2ViS2l0Q1NTTWF0cml4KCk7Ci1tID0gbS5zY2FsZSgxMCwgMjApOwotc2hvdWxkQmUo
J20uYScsICcxMCcpOwotc2hvdWxkQmUoJ20uYicsICcwJyk7Ci1zaG91bGRCZSgnbS5jJywgJzAn
KTsKLXNob3VsZEJlKCdtLmQnLCAnMjAnKTsKLXNob3VsZEJlKCdtLmUnLCAnMCcpOwotc2hvdWxk
QmUoJ20uZicsICcwJyk7CittMiA9IG0uc2NhbGUoMTAsIDIwKTsKK3Nob3VsZEJlKCdtMi5hJywg
JzEwJyk7CitzaG91bGRCZSgnbTIuYicsICcwJyk7CitzaG91bGRCZSgnbTIuYycsICcwJyk7Citz
aG91bGRCZSgnbTIuZCcsICcyMCcpOworc2hvdWxkQmUoJ20yLmUnLCAnMCcpOworc2hvdWxkQmUo
J20yLmYnLCAnMCcpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCBpbW11dGFiaWxpdHkgb2Yg
c2NhbGUiKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0uYSknLCAnMScpOworc2hvdWxkQmUoJ3Bh
cnNlRmxvYXQobS5iKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLmMpJywgJzAnKTsK
K3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0uZCknLCAnMScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQo
bS5lKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLmYpJywgJzAnKTsKIAogZGVidWco
IiIpOwogZGVidWcoIlRlc3Qgcm90YXRlIik7CiBtID0gbmV3IFdlYktpdENTU01hdHJpeCgpOwot
bSA9IG0ucm90YXRlKDEwKTsKLXNob3VsZEJlKCdNYXRoLnJvdW5kKG0uYSoxMDAwMDAwKS8xMDAw
MDAwJywgJzAuOTg0ODA4Jyk7Ci1zaG91bGRCZSgnTWF0aC5yb3VuZChtLmIqMTAwMDAwMCkvMTAw
MDAwMCcsICcwLjE3MzY0OCcpOwotc2hvdWxkQmUoJ01hdGgucm91bmQobS5jKjEwMDAwMDApLzEw
MDAwMDAnLCAnLTAuMTczNjQ4Jyk7Ci1zaG91bGRCZSgnTWF0aC5yb3VuZChtLmQqMTAwMDAwMCkv
MTAwMDAwMCcsICcwLjk4NDgwOCcpOworbTIgPSBtLnJvdGF0ZSgxMCk7CitzaG91bGRCZSgncGFy
c2VGbG9hdChtMi5hLnRvUHJlY2lzaW9uKDYpKScsICcwLjk4NDgwOCcpOworc2hvdWxkQmUoJ3Bh
cnNlRmxvYXQobTIuYi50b1ByZWNpc2lvbig2KSknLCAnMC4xNzM2NDgnKTsKK3Nob3VsZEJlKCdw
YXJzZUZsb2F0KG0yLmMudG9QcmVjaXNpb24oNikpJywgJy0wLjE3MzY0OCcpOworc2hvdWxkQmUo
J3BhcnNlRmxvYXQobTIuZC50b1ByZWNpc2lvbig2KSknLCAnMC45ODQ4MDgnKTsKIHNob3VsZEJl
KCdtLmUnLCAnMCcpOwogc2hvdWxkQmUoJ20uZicsICcwJyk7CiAKIGRlYnVnKCIiKTsKK2RlYnVn
KCJUZXN0IGltbXV0YWJpbGl0eSBvZiByb3RhdGUiKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0u
YSknLCAnMScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5iKScsICcwJyk7CitzaG91bGRCZSgn
cGFyc2VGbG9hdChtLmMpJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0uZCknLCAnMScp
Oworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5lKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9h
dChtLmYpJywgJzAnKTsKKworZGVidWcoIiIpOwogc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
IAogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy90cmFuc2Zvcm1zLzNkL2Nzc21hdHJpeC0z
ZC1pbnRlcmZhY2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3RyYW5z
Zm9ybXMvM2QvY3NzbWF0cml4LTNkLWludGVyZmFjZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy90cmFuc2Zvcm1zLzNkL2Nzc21hdHJpeC0zZC1pbnRlcmZhY2UtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5MiBAQAorVGhpcyB0ZXN0IGV4ZXJj
aXNlcyB0aGUgQ1NTTWF0cml4IDNEIGludGVyZmFjZQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworQ1NTTWF0cml4IGNvbnN0cnVjdG9ycworUEFTUyBkZWZhdWx0IGNvbnN0cnVjdG9y
CitQQVNTIG9iamVjdCBjb25zdHJ1Y3RvcgorUEFTUyBzdHJpbmcgY29uc3RydWN0b3IKKworVGVz
dCB0b1N0cmluZworUEFTUyBhWzBdIGlzICJtYXRyaXgiCitQQVNTIHBhcnNlRmxvYXQoYTJbMF0p
IGlzIDEKK1BBU1MgcGFyc2VGbG9hdChhMlsxXSkgaXMgMAorUEFTUyBwYXJzZUZsb2F0KGEyWzJd
KSBpcyAwCitQQVNTIHBhcnNlRmxvYXQoYTJbM10pIGlzIDEKK1BBU1MgcGFyc2VGbG9hdChhMls0
XSkgaXMgMAorUEFTUyBwYXJzZUZsb2F0KGEzWzBdKSBpcyAwCitQQVNTIGEzWzFdIGlzICIiCisK
K1Rlc3QgYmFkIGlucHV0IHRvIHN0cmluZyBjb25zdHJ1Y3RvcgorUEFTUyBuZXcgV2ViS2l0Q1NT
TWF0cml4KCJiYW5hbmEiKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBF
eGNlcHRpb24gMTIuCisKK1Rlc3QgYXR0cmlidXRlcyBvbiBkZWZhdWx0IG1hdHJpeAorUEFTUyBt
Lm0xMSBpcyAxCitQQVNTIG0ubTEyIGlzIDAKK1BBU1MgbS5tMTMgaXMgMAorUEFTUyBtLm0xNCBp
cyAwCitQQVNTIG0ubTIxIGlzIDAKK1BBU1MgbS5tMjIgaXMgMQorUEFTUyBtLm0yMyBpcyAwCitQ
QVNTIG0ubTI0IGlzIDAKK1BBU1MgbS5tMzEgaXMgMAorUEFTUyBtLm0zMiBpcyAwCitQQVNTIG0u
bTMzIGlzIDEKK1BBU1MgbS5tMzQgaXMgMAorUEFTUyBtLm00MSBpcyAwCitQQVNTIG0ubTQyIGlz
IDAKK1BBU1MgbS5tNDMgaXMgMAorUEFTUyBtLm00NCBpcyAxCisKK1Rlc3QgYXR0cmlidXRlcyBv
biBjdXN0b20gbWF0cml4CitQQVNTIG0ubTExIGlzIDExCitQQVNTIG0ubTEyIGlzIDEyCitQQVNT
IG0ubTIxIGlzIDIxCitQQVNTIG0ubTIyIGlzIDIyCitQQVNTIG0ubTQxIGlzIDQxCitQQVNTIG0u
bTQyIGlzIDQyCisKK1Rlc3Qgc2V0TWF0cml4VmFsdWUgLSBzZXQgdG8gbWF0cml4KCkKK1BBU1Mg
bS5tMTEgaXMgMTEKK1BBU1MgbS5tMTIgaXMgMTIKK1BBU1MgbS5tMjEgaXMgMjEKK1BBU1MgbS5t
MjIgaXMgMjIKK1BBU1MgbS5tNDEgaXMgNDEKK1BBU1MgbS5tNDIgaXMgNDIKKworVGVzdCBzZXRN
YXRyaXhWYWx1ZSAtIHNldCB0byB0cmFuc2xhdGUoMTBweCwgMjBweCwgMzBweCkgc2NhbGUoMiwg
MywgNCkKK1BBU1MgbS5tMTEgaXMgMgorUEFTUyBtLm0xMiBpcyAwCitQQVNTIG0ubTEzIGlzIDAK
K1BBU1MgbS5tMTQgaXMgMAorUEFTUyBtLm0yMSBpcyAwCitQQVNTIG0ubTIyIGlzIDMKK1BBU1Mg
bS5tMjMgaXMgMAorUEFTUyBtLm0yNCBpcyAwCitQQVNTIG0ubTMxIGlzIDAKK1BBU1MgbS5tMzIg
aXMgMAorUEFTUyBtLm0zMyBpcyAxCitQQVNTIG0ubTM0IGlzIDAKK1BBU1MgbS5tNDEgaXMgMTAK
K1BBU1MgbS5tNDIgaXMgMjAKK1BBU1MgbS5tNDMgaXMgMAorUEFTUyBtLm00NCBpcyAxCisKK1Rl
c3QgdGhyb3dpbmcgZXhjZXB0aW9uIGZyb20gc2V0TWF0cml4VmFsdWUKK1BBU1MgbS5zZXRNYXRy
aXhWYWx1ZSgiYmFuYW5hIikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00g
RXhjZXB0aW9uIDEyLgorUEFTUyBtLnNldE1hdHJpeFZhbHVlKCJ0cmFuc2xhdGUzZCgxMGVtLCAy
MCUsIDQwKSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlv
biAxMi4KK1BBU1MgbS5zZXRNYXRyaXhWYWx1ZSgidHJhbnNsYXRlM2QoMTBweCwgMjBweCwgMzBw
eCkgc2NhbGUzZCgpIikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhj
ZXB0aW9uIDEyLgorCitUZXN0IG11bHRpcGx5CitQQVNTIHBhcnNlRmxvYXQobTMubTExKSBpcyAy
NQorUEFTUyBwYXJzZUZsb2F0KG0zLm0xMikgaXMgMjgKK1BBU1MgcGFyc2VGbG9hdChtMy5tMTMp
IGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMy5tMTQpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMy5t
MjEpIGlzIDU3CitQQVNTIHBhcnNlRmxvYXQobTMubTIyKSBpcyA2NAorUEFTUyBwYXJzZUZsb2F0
KG0zLm0yMykgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0zLm0yNCkgaXMgMAorUEFTUyBwYXJzZUZs
b2F0KG0zLm0zMSkgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0zLm0zMikgaXMgMAorUEFTUyBwYXJz
ZUZsb2F0KG0zLm0zMykgaXMgMQorUEFTUyBwYXJzZUZsb2F0KG0zLm0zNCkgaXMgMAorUEFTUyBw
YXJzZUZsb2F0KG0zLm00MSkgaXMgMTAwCitQQVNTIHBhcnNlRmxvYXQobTMubTQyKSBpcyAxMTIK
K1BBU1MgcGFyc2VGbG9hdChtMy5tNDMpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMy5tNDQpIGlz
IDEKKworVGVzdCBpbnZlcnNlCitQQVNTIHBhcnNlRmxvYXQobTIubTExKSBpcyAwLjUKK1BBU1Mg
cGFyc2VGbG9hdChtMi5tMTIpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMi5tMTMpIGlzIDAKK1BB
U1MgcGFyc2VGbG9hdChtMi5tMTQpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMi5tMjEpIGlzIDAK
K1BBU1MgcGFyc2VGbG9hdChtMi5tMjIpIGlzIDAuNQorUEFTUyBwYXJzZUZsb2F0KG0yLm0yMykg
aXMgMAorUEFTUyBwYXJzZUZsb2F0KG0yLm0yNCkgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0yLm0z
MSkgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0yLm0zMikgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0y
Lm0zNCkgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0yLm00MSkgaXMgLTUKK1BBU1MgcGFyc2VGbG9h
dChtMi5tNDIpIGlzIC0xMAorCitUZXN0IHRocm93aW5nIGV4Y2VwdGlvbiBmcm9tIGludmVyc2UK
K1BBU1MgbS5pbnZlcnNlKCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOT1RfU1VQUE9SVEVEX0VS
UjogRE9NIEV4Y2VwdGlvbiA5LgorCitUZXN0IHRyYW5zbGF0ZQorUEFTUyBtLm0xMSBpcyAxCitQ
QVNTIG0ubTEyIGlzIDAKK1BBU1MgbS5tMTMgaXMgMAorUEFTUyBtLm0xNCBpcyAwCitQQVNTIG0u
bTIxIGlzIDAKK1BBU1MgbS5tMjIgaXMgMQorUEFTUyBtLm0yMyBpcyAwCitQQVNTIG0ubTI0IGlz
IDAKK1BBU1MgbS5tMzEgaXMgMAorUEFTUyBtLm0zMiBpcyAwCitQQVNTIG0ubTMzIGlzIDEKK1BB
U1MgbS5tMzQgaXMgMAorUEFTUyBtLm00MSBpcyAxMAorUEFTUyBtLm00MiBpcyAyMAorUEFTUyBt
Lm00MyBpcyAzMAorUEFTUyBtLm00NCBpcyAxCisKK1Rlc3Qgc2NhbGUKK1BBU1MgbS5tMTEgaXMg
MTAKK1BBU1MgbS5tMTIgaXMgMAorUEFTUyBtLm0xMyBpcyAwCitQQVNTIG0ubTE0IGlzIDAKK1BB
U1MgbS5tMjEgaXMgMAorUEFTUyBtLm0yMiBpcyAyMAorUEFTUyBtLm0yMyBpcyAwCitQQVNTIG0u
bTI0IGlzIDAKK1BBU1MgbS5tMzEgaXMgMAorUEFTUyBtLm0zMiBpcyAwCitQQVNTIG0ubTMzIGlz
IDMwCitQQVNTIG0ubTM0IGlzIDAKK1BBU1MgbS5tNDEgaXMgMAorUEFTUyBtLm00MiBpcyAwCitQ
QVNTIG0ubTQzIGlzIDAKK1BBU1MgbS5tNDQgaXMgMQorCitUZXN0IHJvdGF0ZQorUEFTUyBwYXJz
ZUZsb2F0KG0ubTExLnRvUHJlY2lzaW9uKDYpKSBpcyAwLjgxMzc5OAorUEFTUyBwYXJzZUZsb2F0
KG0ubTEyLnRvUHJlY2lzaW9uKDYpKSBpcyAwLjQ2OTg0NgorUEFTUyBwYXJzZUZsb2F0KG0ubTEz
LnRvUHJlY2lzaW9uKDYpKSBpcyAtMC4zNDIwMgorUEFTUyBwYXJzZUZsb2F0KG0ubTE0LnRvUHJl
Y2lzaW9uKDYpKSBpcyAwCitQQVNTIHBhcnNlRmxvYXQobS5tMjEudG9QcmVjaXNpb24oNikpIGlz
IC0wLjQ0MDk3CitQQVNTIHBhcnNlRmxvYXQobS5tMjIudG9QcmVjaXNpb24oNikpIGlzIDAuODgy
NTY0CitQQVNTIHBhcnNlRmxvYXQobS5tMjMudG9QcmVjaXNpb24oNikpIGlzIDAuMTYzMTc2CitQ
QVNTIHBhcnNlRmxvYXQobS5tMjQudG9QcmVjaXNpb24oNikpIGlzIDAKK1BBU1MgcGFyc2VGbG9h
dChtLm0zMS50b1ByZWNpc2lvbig2KSkgaXMgMC4zNzg1MjIKK1BBU1MgcGFyc2VGbG9hdChtLm0z
Mi50b1ByZWNpc2lvbig2KSkgaXMgMC4wMTgwMjgzCitQQVNTIHBhcnNlRmxvYXQobS5tMzMudG9Q
cmVjaXNpb24oNikpIGlzIDAuOTI1NDE3CitQQVNTIHBhcnNlRmxvYXQobS5tMzQudG9QcmVjaXNp
b24oNikpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtLm00MS50b1ByZWNpc2lvbig2KSkgaXMgMAor
UEFTUyBwYXJzZUZsb2F0KG0ubTQyLnRvUHJlY2lzaW9uKDYpKSBpcyAwCitQQVNTIHBhcnNlRmxv
YXQobS5tNDMudG9QcmVjaXNpb24oNikpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtLm00NC50b1By
ZWNpc2lvbig2KSkgaXMgMQorCitUZXN0IHJvdGF0ZUF4aXNBbmdsZQorUEFTUyBwYXJzZUZsb2F0
KG0ubTExLnRvUHJlY2lzaW9uKDYpKSBpcyAwLjgwNDczOAorUEFTUyBwYXJzZUZsb2F0KG0ubTEy
LnRvUHJlY2lzaW9uKDYpKSBpcyAwLjUwNTg3OQorUEFTUyBwYXJzZUZsb2F0KG0ubTEzLnRvUHJl
Y2lzaW9uKDYpKSBpcyAtMC4zMTA2MTcKK1BBU1MgcGFyc2VGbG9hdChtLm0xNC50b1ByZWNpc2lv
big2KSkgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0ubTIxLnRvUHJlY2lzaW9uKDYpKSBpcyAtMC4z
MTA2MTcKK1BBU1MgcGFyc2VGbG9hdChtLm0yMi50b1ByZWNpc2lvbig2KSkgaXMgMC44MDQ3MzgK
K1BBU1MgcGFyc2VGbG9hdChtLm0yMy50b1ByZWNpc2lvbig2KSkgaXMgMC41MDU4NzkKK1BBU1Mg
cGFyc2VGbG9hdChtLm0yNC50b1ByZWNpc2lvbig2KSkgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0u
bTMxLnRvUHJlY2lzaW9uKDYpKSBpcyAwLjUwNTg3OQorUEFTUyBwYXJzZUZsb2F0KG0ubTMyLnRv
UHJlY2lzaW9uKDYpKSBpcyAtMC4zMTA2MTcKK1BBU1MgcGFyc2VGbG9hdChtLm0zMy50b1ByZWNp
c2lvbig2KSkgaXMgMC44MDQ3MzgKK1BBU1MgcGFyc2VGbG9hdChtLm0zNC50b1ByZWNpc2lvbig2
KSkgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0ubTQxLnRvUHJlY2lzaW9uKDYpKSBpcyAwCitQQVNT
IHBhcnNlRmxvYXQobS5tNDIudG9QcmVjaXNpb24oNikpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdCht
Lm00My50b1ByZWNpc2lvbig2KSkgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0ubTQ0LnRvUHJlY2lz
aW9uKDYpKSBpcyAxCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy90cmFuc2Zvcm1zLzNkL2Nzc21hdHJpeC0zZC1p
bnRlcmZhY2UueGh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvdHJhbnNmb3Jtcy8zZC9j
c3NtYXRyaXgtM2QtaW50ZXJmYWNlLnhodG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
dHJhbnNmb3Jtcy8zZC9jc3NtYXRyaXgtM2QtaW50ZXJmYWNlLnhodG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDI5OSBAQAorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0
bWwiPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKwor
PHNjcmlwdD4KKworLy8gRklYTUUgLSBVbnRpbCB0aGUgUGFyc2VyIHN1cHBvcnQgM0QgZnVuY3Rp
b25zIGZvciAtd2Via2l0LXRyYW5zZm9ybSwgdGhlIDNEIHBhcnNpbmcgaXMgY29tbWVudGVkIG91
dC4KKy8vICAgICAgICAgQWxzbywgdGVzdHMgZm9yIGltbXV0YWJpbGl0eSBhcmUgb21pdHRlZCB1
bnRpbCAzRCBwYXJzaW5nIGlzIGNvbXBsZXRlZAorCitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGV4
ZXJjaXNlcyB0aGUgQ1NTTWF0cml4IDNEIGludGVyZmFjZSIpOworCitkZWJ1ZygiIik7CitkZWJ1
ZygiQ1NTTWF0cml4IGNvbnN0cnVjdG9ycyIpOworCit2YXIgbSA9IG51bGw7CittID0gbmV3IFdl
YktpdENTU01hdHJpeCgpOworaWYgKG0pCisgIHRlc3RQYXNzZWQoImRlZmF1bHQgY29uc3RydWN0
b3IiKTsKK2Vsc2UKKyAgdGVzdEZhaWxlZCgiZGVmYXVsdCBjb25zdHJ1Y3RvciIpOworCit2YXIg
bTIgPSBuZXcgV2ViS2l0Q1NTTWF0cml4KG0pOworaWYgKG0yKQorICB0ZXN0UGFzc2VkKCJvYmpl
Y3QgY29uc3RydWN0b3IiKTsKK2Vsc2UKKyAgdGVzdEZhaWxlZCgib2JqZWN0IGNvbnN0cnVjdG9y
Iik7CisKKy8vIG0gPSBuZXcgV2ViS2l0Q1NTTWF0cml4KCJtYXRyaXgzZCgxLCAwLCAwLCAxLCAw
LCAxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxKSIpOworbSA9IG5ldyBXZWJLaXRDU1NN
YXRyaXgoIm1hdHJpeCgxLCAwLCAwLCAxLCAwLCAwKSIpOworaWYgKG0pCisgIHRlc3RQYXNzZWQo
InN0cmluZyBjb25zdHJ1Y3RvciIpOworZWxzZQorICB0ZXN0RmFpbGVkKCJzdHJpbmcgY29uc3Ry
dWN0b3IiKTsKKworLy8gRklYTUUgLSBmb3Igbm93IHRoaXMgaXMgc2ltcGx5IGEgdGVzdCBvZiBt
YXRyaXgoKSB1bnRpbCB0aGUgQ1NTIHBhcnNlciBjYW4gaGFuZGxlIG1hdHJpeDNkKCkKK2RlYnVn
KCIiKTsKK2RlYnVnKCJUZXN0IHRvU3RyaW5nIik7Cit2YXIgbSA9IG5ldyBXZWJLaXRDU1NNYXRy
aXgoIm1hdHJpeCgxLCAwLCAwLCAxLCAwLCAwKSIpOwordmFyIHMgPSBtLnRvU3RyaW5nKCk7Cit2
YXIgYSA9IHMuc3BsaXQoJygnKTsKK3Nob3VsZEJlKCdhWzBdJywgJyJtYXRyaXgiJyk7Cit2YXIg
YTIgPSBhWzFdLnNwbGl0KCcsJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChhMlswXSknLCAnMScp
Oworc2hvdWxkQmUoJ3BhcnNlRmxvYXQoYTJbMV0pJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZs
b2F0KGEyWzJdKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChhMlszXSknLCAnMScpOwor
c2hvdWxkQmUoJ3BhcnNlRmxvYXQoYTJbNF0pJywgJzAnKTsKK3ZhciBhMyA9IGEyWzVdLnNwbGl0
KCIpIik7CitzaG91bGRCZSgncGFyc2VGbG9hdChhM1swXSknLCAnMCcpOworc2hvdWxkQmUoJ2Ez
WzFdJywgJyIiJyk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IGJhZCBpbnB1dCB0byBzdHJp
bmcgY29uc3RydWN0b3IiKTsKK3Nob3VsZFRocm93KCduZXcgV2ViS2l0Q1NTTWF0cml4KCJiYW5h
bmEiKScpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCBhdHRyaWJ1dGVzIG9uIGRlZmF1bHQg
bWF0cml4Iik7CittID0gbmV3IFdlYktpdENTU01hdHJpeCgpOworc2hvdWxkQmUoJ20ubTExJywg
JzEnKTsKK3Nob3VsZEJlKCdtLm0xMicsICcwJyk7CitzaG91bGRCZSgnbS5tMTMnLCAnMCcpOwor
c2hvdWxkQmUoJ20ubTE0JywgJzAnKTsKK3Nob3VsZEJlKCdtLm0yMScsICcwJyk7CitzaG91bGRC
ZSgnbS5tMjInLCAnMScpOworc2hvdWxkQmUoJ20ubTIzJywgJzAnKTsKK3Nob3VsZEJlKCdtLm0y
NCcsICcwJyk7CitzaG91bGRCZSgnbS5tMzEnLCAnMCcpOworc2hvdWxkQmUoJ20ubTMyJywgJzAn
KTsKK3Nob3VsZEJlKCdtLm0zMycsICcxJyk7CitzaG91bGRCZSgnbS5tMzQnLCAnMCcpOworc2hv
dWxkQmUoJ20ubTQxJywgJzAnKTsKK3Nob3VsZEJlKCdtLm00MicsICcwJyk7CitzaG91bGRCZSgn
bS5tNDMnLCAnMCcpOworc2hvdWxkQmUoJ20ubTQ0JywgJzEnKTsKKworZGVidWcoIiIpOworZGVi
dWcoIlRlc3QgYXR0cmlidXRlcyBvbiBjdXN0b20gbWF0cml4Iik7CisvLyBtID0gbmV3IFdlYktp
dENTU01hdHJpeCgibWF0cml4M2QoMTEsIDEyLCAxMywgMTQsIDIxLCAyMiwgMjMsIDI0LCAzMSwg
MzIsIDMzLCAzNCwgNDEsIDQyLCA0MywgNDQpIik7CittID0gbmV3IFdlYktpdENTU01hdHJpeCgi
bWF0cml4KDExLCAxMiwgMjEsIDIyLCA0MSwgNDIpIik7CitzaG91bGRCZSgnbS5tMTEnLCAnMTEn
KTsKK3Nob3VsZEJlKCdtLm0xMicsICcxMicpOworLy8gc2hvdWxkQmUoJ20ubTEzJywgJzEzJyk7
CisvLyBzaG91bGRCZSgnbS5tMTQnLCAnMTQnKTsKK3Nob3VsZEJlKCdtLm0yMScsICcyMScpOwor
c2hvdWxkQmUoJ20ubTIyJywgJzIyJyk7CisvLyBzaG91bGRCZSgnbS5tMjMnLCAnMjMnKTsKKy8v
IHNob3VsZEJlKCdtLm0yNCcsICcyNCcpOworLy8gc2hvdWxkQmUoJ20ubTMxJywgJzMxJyk7Cisv
LyBzaG91bGRCZSgnbS5tMzInLCAnMzInKTsKKy8vIHNob3VsZEJlKCdtLm0zMycsICczMycpOwor
Ly8gc2hvdWxkQmUoJ20ubTM0JywgJzM0Jyk7CitzaG91bGRCZSgnbS5tNDEnLCAnNDEnKTsKK3No
b3VsZEJlKCdtLm00MicsICc0MicpOworLy8gc2hvdWxkQmUoJ20ubTQzJywgJzQzJyk7CisvLyBz
aG91bGRCZSgnbS5tNDQnLCAnNDQnKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3Qgc2V0TWF0
cml4VmFsdWUgLSBzZXQgdG8gbWF0cml4KCkiKTsKK20gPSBuZXcgV2ViS2l0Q1NTTWF0cml4KCk7
CisvLyBtLnNldE1hdHJpeFZhbHVlKCJtYXRyaXgzZCgxMSwgMTIsIDEzLCAxNCwgMjEsIDIyLCAy
MywgMjQsIDMxLCAzMiwgMzMsIDM0LCA0MSwgNDIsIDQzLCA0NCkiKTsKK20uc2V0TWF0cml4VmFs
dWUoIm1hdHJpeCgxMSwgMTIsIDIxLCAyMiwgNDEsIDQyKSIpOworc2hvdWxkQmUoJ20ubTExJywg
JzExJyk7CitzaG91bGRCZSgnbS5tMTInLCAnMTInKTsKKy8vIHNob3VsZEJlKCdtLm0xMycsICcx
MycpOworLy8gc2hvdWxkQmUoJ20ubTE0JywgJzE0Jyk7CitzaG91bGRCZSgnbS5tMjEnLCAnMjEn
KTsKK3Nob3VsZEJlKCdtLm0yMicsICcyMicpOworLy8gc2hvdWxkQmUoJ20ubTIzJywgJzIzJyk7
CisvLyBzaG91bGRCZSgnbS5tMjQnLCAnMjQnKTsKKy8vIHNob3VsZEJlKCdtLm0zMScsICczMScp
OworLy8gc2hvdWxkQmUoJ20ubTMyJywgJzMyJyk7CisvLyBzaG91bGRCZSgnbS5tMzMnLCAnMzMn
KTsKKy8vIHNob3VsZEJlKCdtLm0zNCcsICczNCcpOworc2hvdWxkQmUoJ20ubTQxJywgJzQxJyk7
CitzaG91bGRCZSgnbS5tNDInLCAnNDInKTsKKy8vIHNob3VsZEJlKCdtLm00MycsICc0MycpOwor
Ly8gc2hvdWxkQmUoJ20ubTQ0JywgJzQ0Jyk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IHNl
dE1hdHJpeFZhbHVlIC0gc2V0IHRvIHRyYW5zbGF0ZSgxMHB4LCAyMHB4LCAzMHB4KSBzY2FsZSgy
LCAzLCA0KSIpOworbSA9IG5ldyBXZWJLaXRDU1NNYXRyaXgoKTsKKy8vIG0uc2V0TWF0cml4VmFs
dWUoInRyYW5zbGF0ZTNkKDEwcHgsIDIwcHgsIDMwcHgpIHNjYWxlM2QoMiwgMywgNCkiKTsKK20u
c2V0TWF0cml4VmFsdWUoInRyYW5zbGF0ZSgxMHB4LCAyMHB4KSBzY2FsZSgyLCAzKSIpOworc2hv
dWxkQmUoJ20ubTExJywgJzInKTsKK3Nob3VsZEJlKCdtLm0xMicsICcwJyk7CitzaG91bGRCZSgn
bS5tMTMnLCAnMCcpOworc2hvdWxkQmUoJ20ubTE0JywgJzAnKTsKK3Nob3VsZEJlKCdtLm0yMScs
ICcwJyk7CitzaG91bGRCZSgnbS5tMjInLCAnMycpOworc2hvdWxkQmUoJ20ubTIzJywgJzAnKTsK
K3Nob3VsZEJlKCdtLm0yNCcsICcwJyk7CitzaG91bGRCZSgnbS5tMzEnLCAnMCcpOworc2hvdWxk
QmUoJ20ubTMyJywgJzAnKTsKK3Nob3VsZEJlKCdtLm0zMycsICcxJyk7CitzaG91bGRCZSgnbS5t
MzQnLCAnMCcpOworc2hvdWxkQmUoJ20ubTQxJywgJzEwJyk7CitzaG91bGRCZSgnbS5tNDInLCAn
MjAnKTsKK3Nob3VsZEJlKCdtLm00MycsICcwJyk7CitzaG91bGRCZSgnbS5tNDQnLCAnMScpOwor
CitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCB0aHJvd2luZyBleGNlcHRpb24gZnJvbSBzZXRNYXRy
aXhWYWx1ZSIpOworc2hvdWxkVGhyb3coJ20uc2V0TWF0cml4VmFsdWUoImJhbmFuYSIpJyk7Citz
aG91bGRUaHJvdygnbS5zZXRNYXRyaXhWYWx1ZSgidHJhbnNsYXRlM2QoMTBlbSwgMjAlLCA0MCki
KScpOworc2hvdWxkVGhyb3coJ20uc2V0TWF0cml4VmFsdWUoInRyYW5zbGF0ZTNkKDEwcHgsIDIw
cHgsIDMwcHgpIHNjYWxlM2QoKSIpJyk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IG11bHRp
cGx5Iik7CisvLyBtID0gIG5ldyBXZWJLaXRDU1NNYXRyaXgoIm1hdHJpeDNkKCAxLCAgMiwgIDMs
ICA0LCAgNSwgIDYsICA3LCAgOCwgIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2KSIpOwor
Ly8gbTIgPSBuZXcgV2ViS2l0Q1NTTWF0cml4KCJtYXRyaXgzZCgxNywgMTgsIDE5LCAyMCwgMjEs
IDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLCAzMikiKTsKK20gPSBuZXcg
V2ViS2l0Q1NTTWF0cml4KCJtYXRyaXgoMSwgMiwgMywgNCwgNSwgNikiKTsKK20yID0gbmV3IFdl
YktpdENTU01hdHJpeCgibWF0cml4KDcsIDgsIDksIDEwLCAxMSwgMTIpIik7Cit2YXIgbTMgPSBt
Lm11bHRpcGx5KG0yKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0zLm0xMSknLCAnMjUnKTsKK3No
b3VsZEJlKCdwYXJzZUZsb2F0KG0zLm0xMiknLCAnMjgnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0
KG0zLm0xMyknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTMubTE0KScsICcwJyk7Citz
aG91bGRCZSgncGFyc2VGbG9hdChtMy5tMjEpJywgJzU3Jyk7CitzaG91bGRCZSgncGFyc2VGbG9h
dChtMy5tMjIpJywgJzY0Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMy5tMjMpJywgJzAnKTsK
K3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0zLm0yNCknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxv
YXQobTMubTMxKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMy5tMzIpJywgJzAnKTsK
K3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0zLm0zMyknLCAnMScpOworc2hvdWxkQmUoJ3BhcnNlRmxv
YXQobTMubTM0KScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMy5tNDEpJywgJzEwMCcp
Oworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTMubTQyKScsICcxMTInKTsKK3Nob3VsZEJlKCdwYXJz
ZUZsb2F0KG0zLm00MyknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTMubTQ0KScsICcx
Jyk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IGludmVyc2UiKTsKKy8vIG0gPSBuZXcgV2Vi
S2l0Q1NTTWF0cml4KCJtYXRyaXgzZCgyLCAwLCAwLCAwLCAwLCAyLCAwLCAwLCAwLCAwLCAyLCAw
LCAxMCwgMjAsIDMwLCAxKSIpOworbSA9IG5ldyBXZWJLaXRDU1NNYXRyaXgoIm1hdHJpeCgyLCAw
LCAwLCAyLCAxMCwgMjApIik7CittMiA9IG0uaW52ZXJzZSgpOworCitzaG91bGRCZSgncGFyc2VG
bG9hdChtMi5tMTEpJywgJzAuNScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIubTEyKScsICcw
Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5tMTMpJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJz
ZUZsb2F0KG0yLm0xNCknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIubTIxKScsICcw
Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5tMjIpJywgJzAuNScpOworc2hvdWxkQmUoJ3Bh
cnNlRmxvYXQobTIubTIzKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5tMjQpJywg
JzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLm0zMSknLCAnMCcpOworc2hvdWxkQmUoJ3Bh
cnNlRmxvYXQobTIubTMyKScsICcwJyk7CisvLyBzaG91bGRCZSgncGFyc2VGbG9hdChtMi5tMzMp
JywgJzAuNScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIubTM0KScsICcwJyk7CitzaG91bGRC
ZSgncGFyc2VGbG9hdChtMi5tNDEpJywgJy01Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5t
NDIpJywgJy0xMCcpOworLy8gc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIubTQzKScsICctMTUnKTsK
Ky8vIHNob3VsZEJlKCdwYXJzZUZsb2F0KG0yLm00NCknLCAnMCcpOworCitkZWJ1ZygiIik7Citk
ZWJ1ZygiVGVzdCB0aHJvd2luZyBleGNlcHRpb24gZnJvbSBpbnZlcnNlIik7CisvLyBtID0gbmV3
IFdlYktpdENTU01hdHJpeCgibWF0cml4M2QoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCkiKTsgLy8gbm90IGludmVydGlibGUKK20gPSBuZXcgV2ViS2l0Q1NT
TWF0cml4KCJtYXRyaXgoMCwgMCwgMCwgMCwgMCwgMCkiKTsgLy8gbm90IGludmVydGlibGUKK3No
b3VsZFRocm93KCdtLmludmVyc2UoKScpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCB0cmFu
c2xhdGUiKTsKK20gPSBuZXcgV2ViS2l0Q1NTTWF0cml4KCk7CittID0gbS50cmFuc2xhdGUoMTAs
IDIwLCAzMCk7CitzaG91bGRCZSgnbS5tMTEnLCAnMScpOworc2hvdWxkQmUoJ20ubTEyJywgJzAn
KTsKK3Nob3VsZEJlKCdtLm0xMycsICcwJyk7CitzaG91bGRCZSgnbS5tMTQnLCAnMCcpOworc2hv
dWxkQmUoJ20ubTIxJywgJzAnKTsKK3Nob3VsZEJlKCdtLm0yMicsICcxJyk7CitzaG91bGRCZSgn
bS5tMjMnLCAnMCcpOworc2hvdWxkQmUoJ20ubTI0JywgJzAnKTsKK3Nob3VsZEJlKCdtLm0zMScs
ICcwJyk7CitzaG91bGRCZSgnbS5tMzInLCAnMCcpOworc2hvdWxkQmUoJ20ubTMzJywgJzEnKTsK
K3Nob3VsZEJlKCdtLm0zNCcsICcwJyk7CitzaG91bGRCZSgnbS5tNDEnLCAnMTAnKTsKK3Nob3Vs
ZEJlKCdtLm00MicsICcyMCcpOworc2hvdWxkQmUoJ20ubTQzJywgJzMwJyk7CitzaG91bGRCZSgn
bS5tNDQnLCAnMScpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCBzY2FsZSIpOworbSA9IG5l
dyBXZWJLaXRDU1NNYXRyaXgoKTsKK20gPSBtLnNjYWxlKDEwLCAyMCwgMzApOworc2hvdWxkQmUo
J20ubTExJywgJzEwJyk7CitzaG91bGRCZSgnbS5tMTInLCAnMCcpOworc2hvdWxkQmUoJ20ubTEz
JywgJzAnKTsKK3Nob3VsZEJlKCdtLm0xNCcsICcwJyk7CitzaG91bGRCZSgnbS5tMjEnLCAnMCcp
Oworc2hvdWxkQmUoJ20ubTIyJywgJzIwJyk7CitzaG91bGRCZSgnbS5tMjMnLCAnMCcpOworc2hv
dWxkQmUoJ20ubTI0JywgJzAnKTsKK3Nob3VsZEJlKCdtLm0zMScsICcwJyk7CitzaG91bGRCZSgn
bS5tMzInLCAnMCcpOworc2hvdWxkQmUoJ20ubTMzJywgJzMwJyk7CitzaG91bGRCZSgnbS5tMzQn
LCAnMCcpOworc2hvdWxkQmUoJ20ubTQxJywgJzAnKTsKK3Nob3VsZEJlKCdtLm00MicsICcwJyk7
CitzaG91bGRCZSgnbS5tNDMnLCAnMCcpOworc2hvdWxkQmUoJ20ubTQ0JywgJzEnKTsKKworZGVi
dWcoIiIpOworZGVidWcoIlRlc3Qgcm90YXRlIik7CittID0gbmV3IFdlYktpdENTU01hdHJpeCgp
OworbSA9IG0ucm90YXRlKDEwLCAyMCwgMzApOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tMTEu
dG9QcmVjaXNpb24oNikpJywgJzAuODEzNzk4Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm0x
Mi50b1ByZWNpc2lvbig2KSknLCAnMC40Njk4NDYnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0u
bTEzLnRvUHJlY2lzaW9uKDYpKScsICctMC4zNDIwMicpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQo
bS5tMTQudG9QcmVjaXNpb24oNikpJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTIx
LnRvUHJlY2lzaW9uKDYpKScsICctMC40NDA5NycpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5t
MjIudG9QcmVjaXNpb24oNikpJywgJzAuODgyNTY0Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdCht
Lm0yMy50b1ByZWNpc2lvbig2KSknLCAnMC4xNjMxNzYnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0
KG0ubTI0LnRvUHJlY2lzaW9uKDYpKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm0z
MS50b1ByZWNpc2lvbig2KSknLCAnMC4zNzg1MjInKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0u
bTMyLnRvUHJlY2lzaW9uKDYpKScsICcwLjAxODAyODMnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0
KG0ubTMzLnRvUHJlY2lzaW9uKDYpKScsICcwLjkyNTQxNycpOworc2hvdWxkQmUoJ3BhcnNlRmxv
YXQobS5tMzQudG9QcmVjaXNpb24oNikpJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0u
bTQxLnRvUHJlY2lzaW9uKDYpKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm00Mi50
b1ByZWNpc2lvbig2KSknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tNDMudG9QcmVj
aXNpb24oNikpJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTQ0LnRvUHJlY2lzaW9u
KDYpKScsICcxJyk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IHJvdGF0ZUF4aXNBbmdsZSIp
OworbSA9IG5ldyBXZWJLaXRDU1NNYXRyaXgoKTsKK20gPSBtLnJvdGF0ZUF4aXNBbmdsZSgwLjcw
NywgMC43MDcsIDAuNzA3LCA0NSk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm0xMS50b1ByZWNp
c2lvbig2KSknLCAnMC44MDQ3MzgnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTEyLnRvUHJl
Y2lzaW9uKDYpKScsICcwLjUwNTg3OScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tMTMudG9Q
cmVjaXNpb24oNikpJywgJy0wLjMxMDYxNycpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tMTQu
dG9QcmVjaXNpb24oNikpJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTIxLnRvUHJl
Y2lzaW9uKDYpKScsICctMC4zMTA2MTcnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTIyLnRv
UHJlY2lzaW9uKDYpKScsICcwLjgwNDczOCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tMjMu
dG9QcmVjaXNpb24oNikpJywgJzAuNTA1ODc5Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm0y
NC50b1ByZWNpc2lvbig2KSknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tMzEudG9Q
cmVjaXNpb24oNikpJywgJzAuNTA1ODc5Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm0zMi50
b1ByZWNpc2lvbig2KSknLCAnLTAuMzEwNjE3Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm0z
My50b1ByZWNpc2lvbig2KSknLCAnMC44MDQ3MzgnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0u
bTM0LnRvUHJlY2lzaW9uKDYpKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm00MS50
b1ByZWNpc2lvbig2KSknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tNDIudG9QcmVj
aXNpb24oNikpJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTQzLnRvUHJlY2lzaW9u
KDYpKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm00NC50b1ByZWNpc2lvbig2KSkn
LCAnMScpOworCitkZWJ1ZygiIik7CitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorCis8c2NyaXB0PgorPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="13317"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>