<?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>189125</bug_id>
          
          <creation_ts>2018-08-29 16:36:49 -0700</creation_ts>
          <short_desc>[WHLSL] Implement dynamically uniform expression restrictions</short_desc>
          <delta_ts>2018-10-13 14:48:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGPU</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>MOVED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=189122</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=189123</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>176199</blocked>
    
    <blocked>189202</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>jonlee</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1455003</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-08-29 16:36:49 -0700</bug_when>
    <thetext>Implement dynamically uniform expression restrictions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459212</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-12 18:50:51 -0700</bug_when>
    <thetext>&lt;rdar://problem/44403002&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462757</commentid>
    <comment_count>2</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-24 10:37:06 -0700</bug_when>
    <thetext>Ever value (lvalue and rvalue) will be associated with a &quot;uniformity&quot; attribute, which will be assigned by the compiler. These attributes can even survive being assigned to a variable, if the variable is marked as &quot;uniform&quot; in the program source.

Then, after we know whether or not each value is uniform, we can associate each nested scope with a similar uniformity attribute. This is true iff the condition leading to that scope is uniform.

We apply the restriction that any AssignmentExpression inside a non-uniform scope must never assign to a uniform variable that is declared in the non-innermost scope. This should guarantee that all uniform variables are, indeed, uniform.

Then, we can require any IndexExpression that indexes into an array which contains textures to use a uniform index.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462773</commentid>
    <comment_count>3</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-24 11:14:24 -0700</bug_when>
    <thetext>Functions that return uniform variables must only have a single return point</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462774</commentid>
    <comment_count>4</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-24 11:18:09 -0700</bug_when>
    <thetext>UAVs can&apos;t hold uniform values</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462783</commentid>
    <comment_count>5</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-24 11:25:41 -0700</bug_when>
    <thetext>Conditional continues and breaks should contribute to the uniformity of the blocks they target</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462786</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-24 11:28:16 -0700</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #5)
&gt; Conditional continues and breaks should contribute to the uniformity of the
&gt; blocks they target

This isn&apos;t quite right - the continue &amp; break can affect just the remainder of the scope.

Also, uniforms should only exist in thread / constant address space.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462788</commentid>
    <comment_count>7</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-24 11:37:48 -0700</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #6)
&gt; (In reply to Myles C. Maxfield from comment #5)
&gt; &gt; Conditional continues and breaks should contribute to the uniformity of the
&gt; &gt; blocks they target
&gt; 
&gt; This isn&apos;t quite right - the continue &amp; break can affect just the remainder
&gt; of the scope.
&gt; 

and &quot;return&quot;

In general, returns should be modeled as an assignment to a variable that&apos;s outside the function scope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462789</commentid>
    <comment_count>8</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-24 11:41:52 -0700</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #3)
&gt; Functions that return uniform variables must only have a single return point

Actually, we can do better - just treat early returns as marking the rest of the scope non-uniform, and treating the return as writing to a value that&apos;s outside the scope</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466598</commentid>
    <comment_count>9</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-04 19:45:53 -0700</bug_when>
    <thetext>*** Bug 189123 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466599</commentid>
    <comment_count>10</comment_count>
      <attachid>351650</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-04 19:47:32 -0700</bug_when>
    <thetext>Created attachment 351650
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466831</commentid>
    <comment_count>11</comment_count>
      <attachid>351711</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-05 19:35:24 -0700</bug_when>
    <thetext>Created attachment 351711
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467356</commentid>
    <comment_count>12</comment_count>
      <attachid>351866</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-09 00:07:01 -0700</bug_when>
    <thetext>Created attachment 351866
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467358</commentid>
    <comment_count>13</comment_count>
      <attachid>351868</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-09 00:25:46 -0700</bug_when>
    <thetext>Created attachment 351868
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468831</commentid>
    <comment_count>14</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-13 14:48:27 -0700</bug_when>
    <thetext>Migrated to https://github.com/gpuweb/WHLSL/issues/56</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351650</attachid>
            <date>2018-10-04 19:47:32 -0700</date>
            <delta_ts>2018-10-05 19:35:23 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-189125-20181004194732.patch</filename>
            <type>text/plain</type>
            <size>44608</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2ODM3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWI4ODdmZGY3ZjI2YzkyZTkzMWY3MzljNzIzZTEwMTM0
OTlhMjY5Ny4uOTQ0NjgyZjk4MGE4YzhhYWE4ODhiNDE0ODJmN2VmZDU3NzAyYzZkYSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcz
IEBACisyMDE4LTEwLTA0ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgW1dITFNMXSBJbXBsZW1lbnQgZHluYW1pY2FsbHkgdW5pZm9ybSBleHByZXNz
aW9uIHJlc3RyaWN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTg5MTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanM6CisgICAgICAgICogV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsb2NhdGVBdEVudHJ5UG9pbnRzLmpzOgorICAgICAgICAo
YWxsb2NhdGVBdEVudHJ5UG9pbnRzLnVwZGF0ZUZ1bmN0aW9uLlVwZGF0ZUZ1bmN0aW9ucy5wcm90
b3R5cGUuX2FkZFZhcmlhYmxlRGVjbGFyYXRpb24pOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL0Fzc2lnbm1lbnQuanM6CisgICAgICAgIChBc3NpZ25tZW50KToKKyAgICAgICAg
KiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzOgorICAgICAgICAoQ2hlY2tlcik6
CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS5faXNVbmlmb3JtQ29udHJvbEZsb3cpOgorICAg
ICAgICAoQ2hlY2tlci5wcm90b3R5cGUudmlzaXRQcm9ncmFtKToKKyAgICAgICAgKENoZWNrZXIu
cHJvdG90eXBlLnZpc2l0VHlwZVJlZik6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS52aXNp
dFZhcmlhYmxlRGVjbCk6CisgICAgICAgIChDaGVja2VyLnByb3RvdHlwZS52aXNpdEFzc2lnbm1l
bnQpOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUudmlzaXRRdWFsaWZpZXJzKToKKyAgICAg
ICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GaWVsZC5qczoKKyAgICAgICAgKEZpZWxkKToK
KyAgICAgICAgKEZpZWxkLnByb3RvdHlwZS5nZXQgcXVhbGlmaWVycyk6CisgICAgICAgIChGaWVs
ZC5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0Z1bmNQYXJhbWV0ZXIuanM6CisgICAgICAgIChGdW5jUGFyYW1ldGVyKToKKyAgICAgICAgKEZ1
bmNQYXJhbWV0ZXIucHJvdG90eXBlLmdldCBxdWFsaWZpZXJzKToKKyAgICAgICAgKEZ1bmNQYXJh
bWV0ZXIucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9NZXRhbC9XSExTTCBUZXN0cy9XSExTTCBUZXN0cy54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzOgorICAgICAg
ICAocGFyc2VRdWFsaWZpZXJzKToKKyAgICAgICAgKHBhcnNlVmFyaWFibGVEZWNscyk6CisgICAg
ICAgIChwYXJzZVBhcmFtZXRlcik6CisgICAgICAgIChwYXJzZUZpZWxkKToKKyAgICAgICAgKiBX
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9RdWFsaWZpZXJzLmpzOiBBZGRlZC4KKyAgICAgICAgKFF1
YWxpZmllcnMpOgorICAgICAgICAoUXVhbGlmaWVycy5wcm90b3R5cGUuZ2V0IG5vaW50ZXJwb2xh
dGlvbik6CisgICAgICAgIChRdWFsaWZpZXJzLnByb3RvdHlwZS5nZXQgbm9wZXJzcGVjdGl2ZSk6
CisgICAgICAgIChRdWFsaWZpZXJzLnByb3RvdHlwZS5nZXQgdW5pZm9ybSk6CisgICAgICAgIChR
dWFsaWZpZXJzLnByb3RvdHlwZS5nZXQgY2VudHJvaWQpOgorICAgICAgICAoUXVhbGlmaWVycy5w
cm90b3R5cGUuZ2V0IHNhbXBsZSk6CisgICAgICAgIChRdWFsaWZpZXJzLnByb3RvdHlwZS5nZXQg
aXNWYWxpZCk6CisgICAgICAgIChRdWFsaWZpZXJzLnByb3RvdHlwZS5nZXQgdG9rZW5zKToKKyAg
ICAgICAgKFF1YWxpZmllcnMucHJvdG90eXBlLmdldCBsZW5ndGgpOgorICAgICAgICAoUXVhbGlm
aWVycy5wcm90b3R5cGUuZ2V0IG9yaWdpblN0cmluZyk6CisgICAgICAgIChRdWFsaWZpZXJzLnBy
b3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3
cml0ZXIuanM6CisgICAgICAgIChSZXdyaXRlci5wcm90b3R5cGUudmlzaXRGdW5jUGFyYW1ldGVy
KToKKyAgICAgICAgKFJld3JpdGVyLnByb3RvdHlwZS52aXNpdFZhcmlhYmxlRGVjbCk6CisgICAg
ICAgIChSZXdyaXRlci5wcm90b3R5cGUudmlzaXRGaWVsZCk6CisgICAgICAgIChSZXdyaXRlci5w
cm90b3R5cGUudmlzaXRRdWFsaWZpZXJzKToKKyAgICAgICAgKFJld3JpdGVyKToKKyAgICAgICAg
KiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TUElSVi5odG1sOgorICAgICAgICAqIFdlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbDoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9UZXN0LmpzOgorICAgICAgICAodGVzdHMudHJhcEJlY2F1c2VPZkluZGV4QWNlc3NzKToK
KyAgICAgICAgKHRlc3RzLnRyYXBUcmFuc2l0aXZlbHkpOgorICAgICAgICAodGVzdHMuaW5jb21w
YXRpYmxlUXVhbGlmaWVycyk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmFy
aWFibGVEZWNsLmpzOgorICAgICAgICAoVmFyaWFibGVEZWNsKToKKyAgICAgICAgKFZhcmlhYmxl
RGVjbC5wcm90b3R5cGUuZ2V0IHF1YWxpZmllcnMpOgorICAgICAgICAoVmFyaWFibGVEZWNsLnBy
b3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlz
aXRvci5qczoKKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLnZpc2l0RnVuY1BhcmFtZXRlcik6
CisgICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS52aXNpdEZpZWxkKToKKyAgICAgICAgKFZpc2l0
b3IucHJvdG90eXBlLnZpc2l0VmFyaWFibGVEZWNsKToKKyAgICAgICAgKFZpc2l0b3IucHJvdG90
eXBlLnZpc2l0UXVhbGlmaWVycyk6CisgICAgICAgIChWaXNpdG9yKToKKyAgICAgICAgKiBXZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1sOgorCiAyMDE4LTEwLTA0ICBCYXN1a2UgU3V6
dWtpICA8QmFzdWtlLlN1enVraUBzb255LmNvbT4KIAogICAgICAgICBbTGF5b3V0VGVzdHNdW1dp
bl0gU3RvcCB3cHQgc2VydmVyIGNvcnJlY3RseS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL0FsbC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Fs
bC5qcwppbmRleCBiYTY1Y2M1ZDU1MWRkZWRlMDE4ZWJmZDM1ZmIwMzNhNTBkYzI5MzYyLi5hMWY2
NThkMGFiZjU4MzE2YjhjMzE3ZGEzYTJkNjM5OWViOTU2YzIzIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvQWxsLmpzCkBAIC03NCw2ICs3NCw3IEBAIGxvYWQoIkNvbnZlcnRQdHJUb0FycmF5
UmVmRXhwcmVzc2lvbi5qcyIpOwogbG9hZCgiRG9XaGlsZUxvb3AuanMiKTsKIGxvYWQoIkRvdEV4
cHJlc3Npb24uanMiKTsKIGxvYWQoIkRlcmVmZXJlbmNlRXhwcmVzc2lvbi5qcyIpOworbG9hZCgi
RGVyaXZlZFR5cGVJbmZvLmpzIik7CiBsb2FkKCJFQXJyYXlSZWYuanMiKTsKIGxvYWQoIkVCdWZm
ZXIuanMiKTsKIGxvYWQoIkVCdWZmZXJCdWlsZGVyLmpzIik7CkBAIC0xMzUsNiArMTM2LDcgQEAg
bG9hZCgiUHJvcGVydHlSZXNvbHZlci5qcyIpOwogbG9hZCgiUHJvZ3JhbS5qcyIpOwogbG9hZCgi
UHJvZ3JhbVdpdGhVbm5lY2Vzc2FyeVRoaW5nc1JlbW92ZWQuanMiKTsKIGxvYWQoIlB0clR5cGUu
anMiKTsKK2xvYWQoIlF1YWxpZmllcnMuanMiKTsKIGxvYWQoIlJlYWRNb2RpZnlXcml0ZUV4cHJl
c3Npb24uanMiKTsKIGxvYWQoIlJlY3Vyc2lvbkNoZWNrZXIuanMiKTsKIGxvYWQoIlJlY3Vyc2l2
ZVR5cGVDaGVja2VyLmpzIik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9BbGxvY2F0ZUF0RW50cnlQb2ludHMuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9BbGxvY2F0ZUF0RW50cnlQb2ludHMuanMKaW5kZXggMmNkZTUzZmYwMGRjZWQ4Mjg4Mjlm
OTkxMjc0NTk5ZTQxNGI1ODI4Yy4uNTM4YjJmY2JmZGI2MDFmMzQ1NjQ3N2VmNjdiYjI4ZTMwZjM4
ZTQyNiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsb2NhdGVB
dEVudHJ5UG9pbnRzLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbG9j
YXRlQXRFbnRyeVBvaW50cy5qcwpAQCAtMTQyLDcgKzE0Miw3IEBAIGZ1bmN0aW9uIGFsbG9jYXRl
QXRFbnRyeVBvaW50cyhwcm9ncmFtKQogCiAgICAgICAgICAgICBfYWRkVmFyaWFibGVEZWNsYXJh
dGlvbigpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fdmFyaWFibGVEZWNs
ID0gbmV3IFZhcmlhYmxlRGVjbChmdW5jLm9yaWdpbiwgImdsb2JhbCBzdHJ1Y3QiLCBnbG9iYWxT
dHJ1Y3RUeXBlUmVmLCBudWxsKTsKKyAgICAgICAgICAgICAgICB0aGlzLl92YXJpYWJsZURlY2wg
PSBuZXcgVmFyaWFibGVEZWNsKGZ1bmMub3JpZ2luLCAiZ2xvYmFsIHN0cnVjdCIsIGdsb2JhbFN0
cnVjdFR5cGVSZWYpOwogICAgICAgICAgICAgICAgIHRoaXMubWFrZUdsb2JhbFN0cnVjdFZhcmlh
YmxlUmVmID0gKCkgPT4gbmV3IE1ha2VQdHJFeHByZXNzaW9uKGZ1bmMub3JpZ2luLCBWYXJpYWJs
ZVJlZi53cmFwKHRoaXMuX3ZhcmlhYmxlRGVjbCkpOwogICAgICAgICAgICAgICAgIGZ1bmMuYm9k
eS5zdGF0ZW1lbnRzLnVuc2hpZnQodGhpcy5fdmFyaWFibGVEZWNsKTsKICAgICAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Fzc2lnbm1lbnQuanMg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Bc3NpZ25tZW50LmpzCmluZGV4IDgxODRi
MTVkNjVhM2Y5NjNhNWRlNTkyMTdmMGVhMDllNGVhYjRjZTAuLjU2MDlmYjI4MjIzMjk5YTQ3NTMw
ZTJhNjI3ODg2NGRhY2M2ZmRlMzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL0Fzc2lnbm1lbnQuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
QXNzaWdubWVudC5qcwpAQCAtMjUsMTIgKzI1LDExIEBACiAidXNlIHN0cmljdCI7CiAKIGNsYXNz
IEFzc2lnbm1lbnQgZXh0ZW5kcyBFeHByZXNzaW9uIHsKLSAgICBjb25zdHJ1Y3RvcihvcmlnaW4s
IGxocywgcmhzLCB0eXBlID0gbnVsbCkKKyAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIGxocywgcmhz
KQogICAgIHsKICAgICAgICAgc3VwZXIob3JpZ2luKTsKICAgICAgICAgdGhpcy5fbGhzID0gbGhz
OwogICAgICAgICB0aGlzLl9yaHMgPSByaHM7Ci0gICAgICAgIHRoaXMudHlwZSA9IHR5cGU7CiAg
ICAgfQogICAgIAogICAgIGdldCBsaHMoKSB7IHJldHVybiB0aGlzLl9saHM7IH0KZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIuanMgYi9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzCmluZGV4IDFlOTkzMjc0ODM5NWIwMjI1OTYw
MjUyMmRiOGEyNjgwNWIxZWUzY2YuLjk0ODAzYTMxYzBiOWM1Y2I0OWFkNDhjYjIxY2RmYjBhZjAw
NTRkMTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIu
anMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qcwpAQCAtMjks
MTcgKzI5LDMxIEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICB7CiAgICAg
ICAgIHN1cGVyKCk7CiAgICAgICAgIHRoaXMuX3Byb2dyYW0gPSBwcm9ncmFtOwotICAgICAgICB0
aGlzLl9jdXJyZW50U3RhdGVtZW50ID0gbnVsbDsKICAgICAgICAgdGhpcy5fdmVydGV4RW50cnlQ
b2ludHMgPSBuZXcgU2V0KCk7CiAgICAgICAgIHRoaXMuX2ZyYWdtZW50RW50cnlQb2ludHMgPSBu
ZXcgU2V0KCk7CiAgICAgICAgIHRoaXMuX2NvbXB1dGVFbnRyeVBvaW50cyA9IG5ldyBTZXQoKTsK
KyAgICAgICAgdGhpcy5fdW5pZm9ybWl0eVN0YWNrID0gW107CisgICAgfQorCisgICAgX2lzVW5p
Zm9ybUNvbnRyb2xGbG93KCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl91bmlmb3JtaXR5U3Rh
Y2subGVuZ3RoID09IDApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlVuYmFsYW5jZWQg
dW5pZm9ybWl0eSBwdXNoL3BvcCIpOworICAgICAgICByZXR1cm4gdGhpcy5fdW5pZm9ybWl0eVN0
YWNrW3RoaXMuX3VuaWZvcm1pdHlTdGFjay5sZW5ndGggLSAxXTsKICAgICB9CiAKICAgICB2aXNp
dFByb2dyYW0obm9kZSkKICAgICB7CiAgICAgICAgIGxldCBkb1N0YXRlbWVudCA9IHN0YXRlbWVu
dCA9PiB7Ci0gICAgICAgICAgICB0aGlzLl9jdXJyZW50U3RhdGVtZW50ID0gc3RhdGVtZW50Owor
ICAgICAgICAgICAgaWYgKHRoaXMuX3VuaWZvcm1pdHlTdGFjay5sZW5ndGggIT0gMCkKKyAgICAg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlVuYmFsYW5jZWQgdW5pZm9ybWl0eSBwdXNoL3Bv
cCIpOworICAgICAgICAgICAgdGhpcy5fdW5pZm9ybWl0eVN0YWNrLnB1c2godHJ1ZSk7CiAgICAg
ICAgICAgICBzdGF0ZW1lbnQudmlzaXQodGhpcyk7CisgICAgICAgICAgICBpZiAodGhpcy5fdW5p
Zm9ybWl0eVN0YWNrLmxlbmd0aCAhPSAxKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiVW5iYWxhbmNlZCB1bmlmb3JtaXR5IHB1c2gvcG9wIik7CisgICAgICAgICAgICBsZXQgbGFz
dFZhbHVlID0gdGhpcy5fdW5pZm9ybWl0eVN0YWNrLnBvcCgpOworICAgICAgICAgICAgaWYgKGxh
c3RWYWx1ZSAhPSB0cnVlKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVW5pZm9y
bWl0eSBzdGFjayBpcyBhbGwgY29uZnVzZWQiKTsKICAgICAgICAgfQogCiAgICAgICAgIGZvciAo
bGV0IHR5cGUgb2Ygbm9kZS50eXBlcy52YWx1ZXMoKSkgewpAQCAtNTEsMTMgKzY1LDIxIEBAIGNs
YXNzIENoZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgfQogICAgICAgICBmb3IgKGxl
dCBmdW5jcyBvZiBub2RlLmZ1bmN0aW9ucy52YWx1ZXMoKSkgewogICAgICAgICAgICAgZm9yIChs
ZXQgZnVuYyBvZiBmdW5jcykgewotICAgICAgICAgICAgICAgIHRoaXMudmlzaXRGdW5jKGZ1bmMp
OworICAgICAgICAgICAgICAgIGRvU3RhdGVtZW50KGZ1bmMpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgICAgIGZvciAobGV0IGZ1bmNzIG9mIG5vZGUuZnVuY3Rpb25zLnZhbHVlcygp
KSB7CiAgICAgICAgICAgICBmb3IgKGxldCBmdW5jIG9mIGZ1bmNzKQogICAgICAgICAgICAgICAg
IGRvU3RhdGVtZW50KGZ1bmMpOwogICAgICAgICB9CisgICAgICAgIGZvciAobGV0IHR5cGUgb2Yg
bm9kZS50eXBlcy52YWx1ZXMoKSkgeworICAgICAgICAgICAgaWYgKHR5cGUgaW5zdGFuY2VvZiBB
cnJheSkgeworICAgICAgICAgICAgICAgIGZvciAobGV0IHQgb2YgdHlwZSkKKyAgICAgICAgICAg
ICAgICAgICAgZG9TdGF0ZW1lbnQodCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgZG9TdGF0ZW1lbnQodHlwZSk7CisgICAgICAgIH0KICAgICB9CiAK
ICAgICBfY2hlY2tTZW1hbnRpY3Mobm9kZSkKQEAgLTQ1OSw2ICs0ODEsNyBAQCBjbGFzcyBDaGVj
a2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcmVjdXJz
ZSBoZXJlIGJlY2F1c2UgdGhlIGNvbnRlbnRzIG9mIHN0cnVjdHMgY2FuIHJlZmVyIHRvIHRoZW1z
ZWx2ZXMgKGUuZy4gYSBsaW5rZWQgbGlzdCksCiAgICAgICAgIC8vIGFuZCB0aGlzIHdvdWxkIGNh
biBhbiBpbmZpbml0ZSBsb29wLgogICAgICAgICAvLyBUeXBlZGVmcyBjYW4ndCByZWZlciB0byB0
aGVtc2VsdmVzIGJlY2F1c2Ugd2UgY2hlY2sgdGhhdCBpbiBUeXBlRGVmUmVzb2x2ZXIuCisgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIGFwcGVhcnMgdG8gYmUgdW50ZXN0ZWQuCiAgICAgICAgIGlmICgh
KG5vZGUudHlwZSBpbnN0YW5jZW9mIFN0cnVjdFR5cGUpKQogICAgICAgICAgICAgbm9kZS50eXBl
LnZpc2l0KHRoaXMpOwogICAgIH0KQEAgLTUyNiwyOCArNTQ5LDM2IEBAIGNsYXNzIENoZWNrZXIg
ZXh0ZW5kcyBWaXNpdG9yIHsKICAgICB2aXNpdFZhcmlhYmxlRGVjbChub2RlKQogICAgIHsKICAg
ICAgICAgbm9kZS50eXBlLnZpc2l0KHRoaXMpOworICAgICAgICBpZiAoIXRoaXMuX2lzVW5pZm9y
bUNvbnRyb2xGbG93KCkgJiYgbm9kZS5xdWFsaWZpZXJzLnVuaWZvcm0pCisgICAgICAgICAgICB0
aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJDYW5ub3QgZGVj
bGFyZSB1bmlmb3JtIHZhcmlhYmxlIGluIG5vbi11bmlmb3JtIGNvbnRyb2wtZmxvdyIpOwogICAg
ICAgICBpZiAobm9kZS5pbml0aWFsaXplcikgewogICAgICAgICAgICAgbGV0IGxoc1R5cGUgPSBu
b2RlLnR5cGU7CiAgICAgICAgICAgICBsZXQgcmhzVHlwZSA9IG5vZGUuaW5pdGlhbGl6ZXIudmlz
aXQodGhpcyk7CiAgICAgICAgICAgICBpZiAoIWxoc1R5cGUuZXF1YWxzV2l0aENvbW1pdChyaHNU
eXBlKSkKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5v
cmlnaW5TdHJpbmcsICJUeXBlIG1pc21hdGNoIGluIHZhcmlhYmxlIGluaXRpYWxpemF0aW9uOiAi
ICsgbGhzVHlwZSArICIgdmVyc3VzICIgKyByaHNUeXBlKTsKICAgICAgICAgfQorICAgICAgICBO
b2RlLnZpc2l0KG5vZGUucXVhbGlmaWVycywgdGhpcyk7CiAgICAgfQogCiAgICAgdmlzaXRBc3Np
Z25tZW50KG5vZGUpCiAgICAgewotICAgICAgICBsZXQgbGhzVHlwZSA9IG5vZGUubGhzLnZpc2l0
KHRoaXMpOworICAgICAgICBub2RlLmxocy52aXNpdCh0aGlzKTsKKyAgICAgICAgbGV0IGxoc0Rl
cml2ZWRUeXBlSW5mbyA9IG5vZGUubGhzLmRlcml2ZWRUeXBlSW5mbzsKICAgICAgICAgaWYgKCFu
b2RlLmxocy5pc0xWYWx1ZSkKICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG5vZGUu
b3JpZ2luLm9yaWdpblN0cmluZywgIkxIUyBvZiBhc3NpZ25tZW50IGlzIG5vdCBhbiBMVmFsdWU6
ICIgKyBub2RlLmxocyArIG5vZGUubGhzLm5vdExWYWx1ZVJlYXNvblN0cmluZyk7CiAgICAgICAg
IGlmICghaXNBZGRyZXNzU3BhY2Uobm9kZS5saHMuYWRkcmVzc1NwYWNlKSkKICAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcihgJHtub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmd9OiBVbmtub3duIGFk
ZHJlc3Mgc3BhY2UgaW4gbm9kZSAke25vZGUubGhzfWApOwogICAgICAgICBpZiAobm9kZS5saHMu
YWRkcmVzc1NwYWNlID09ICJjb25zdGFudCIpCiAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVF
cnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJDYW5ub3QgYXNzaWduIHRvIHZhcmlhYmxl
IGluIHRoZSBjb25zdGFudCBhZGRyZXNzIHNwYWNlLiIpOwotICAgICAgICBsZXQgcmhzVHlwZSA9
IG5vZGUucmhzLnZpc2l0KHRoaXMpOwotICAgICAgICBpZiAoIWxoc1R5cGUuZXF1YWxzV2l0aENv
bW1pdChyaHNUeXBlKSkKLSAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG5vZGUub3Jp
Z2luLm9yaWdpblN0cmluZywgIlR5cGUgbWlzbWF0Y2ggaW4gYXNzaWdubWVudDogIiArIGxoc1R5
cGUgKyAiIHZlcnN1cyAiICsgcmhzVHlwZSk7Ci0gICAgICAgIG5vZGUudHlwZSA9IGxoc1R5cGU7
Ci0gICAgICAgIHJldHVybiBsaHNUeXBlOworICAgICAgICBub2RlLnJocy52aXNpdCh0aGlzKTsK
KyAgICAgICAgbGV0IHJoc0Rlcml2ZWRUeXBlSW5mbyA9IG5vZGUucmhzLmRlcml2ZWRUeXBlSW5m
bzsKKyAgICAgICAgaWYgKCFsaHNEZXJpdmVkVHlwZUluZm8udHlwZS5lcXVhbHNXaXRoQ29tbWl0
KHJoc0Rlcml2ZWRUeXBlSW5mby50eXBlKSkKKyAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVy
cm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgIlR5cGUgbWlzbWF0Y2ggaW4gYXNzaWdubWVu
dDogIiArIGxoc0Rlcml2ZWRUeXBlSW5mby50eXBlICsgIiB2ZXJzdXMgIiArIHJoc0Rlcml2ZWRU
eXBlSW5mby50eXBlKTsKKyAgICAgICAgaWYgKGxoc0Rlcml2ZWRUeXBlSW5mby51bmlmb3JtaXR5
ICYmICFyaHNEZXJpdmVkVHlwZUluZm8udW5pZm9ybWl0eSkKKyAgICAgICAgICAgIHRocm93IG5l
dyBXVHlwZUVycm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgIkNhbid0IGFzc2lnbiBhIG5v
bi11bmlmb3JtIGV4cHJlc3Npb24gdG8gYSB1bmlmb3JtIHZhcmlhYmxlIik7CisgICAgICAgIGlm
ICghdGhpcy5faXNVbmlmb3JtQ29udHJvbEZsb3coKSAmJiBsaHNEZXJpdmVkVHlwZUluZm8udW5p
Zm9ybWl0eSkKKyAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG5vZGUub3JpZ2luLm9y
aWdpblN0cmluZywgIkNhbid0IGFzc2lnbiB0byBhIHVuaWZvcm0gdmFyaWFibGUgaW4gbm9uLXVu
aWZvcm0gY29udHJvbC1mbG93Iik7CisgICAgICAgIG5vZGUuZGVyaXZlZFR5cGVJbmZvID0gbmV3
IERlcml2ZWRUeXBlSW5mbyhsaHNUeXBlLCBsaHNEZXJpdmVkVHlwZUluZm8udW5pZm9ybWl0eSk7
CiAgICAgfQogCiAgICAgdmlzaXRJZGVudGl0eUV4cHJlc3Npb24obm9kZSkKQEAgLTkxNCw1ICs5
NDUsMTEgQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICBsZXQgcmVz
dWx0ID0gbm9kZS5yZXNvbHZlKG5vZGUucG9zc2libGVPdmVybG9hZHMsIHRoaXMuX3Byb2dyYW0p
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KKworICAgIHZpc2l0UXVhbGlmaWVycyhu
b2RlKQorICAgIHsKKyAgICAgICAgaWYgKCFub2RlLmlzVmFsaWQpCisgICAgICAgICAgICB0aHJv
dyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpblN0cmluZywgIkluY29tcGF0aWJsZSBxdWFsaWZp
ZXJzIGFyZSBzcGVjaWZpZWQiKTsKKyAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL0ZpZWxkLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvRmllbGQuanMKaW5kZXggMzEyYjAwZDllMjhjYjNlMzM2YWUwOWZjMzk2ZmQ4OWMxNjBhYjBh
OS4uYzBmODYxZmUyYWYyNzI4M2M5YjM2ZDk1MzM5OGM5OGY1ZThmMGIzZSAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRmllbGQuanMKKysrIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvRmllbGQuanMKQEAgLTI1LDIzICsyNSwyOCBAQAogInVzZSBzdHJp
Y3QiOwogCiBjbGFzcyBGaWVsZCBleHRlbmRzIE5vZGUgewotICAgIGNvbnN0cnVjdG9yKG9yaWdp
biwgbmFtZSwgdHlwZSwgc2VtYW50aWMgPSBudWxsKQorICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwg
bmFtZSwgdHlwZSwgcXVhbGlmaWVycyA9IG51bGwsIHNlbWFudGljID0gbnVsbCkKICAgICB7CiAg
ICAgICAgIHN1cGVyKCk7CiAgICAgICAgIHRoaXMuX29yaWdpbiA9IG9yaWdpbjsKICAgICAgICAg
dGhpcy5fbmFtZSA9IG5hbWU7CiAgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlOworICAgICAgICB0
aGlzLl9xdWFsaWZpZXJzID0gcXVhbGlmaWVyczsKICAgICAgICAgdGhpcy5fc2VtYW50aWMgPSBz
ZW1hbnRpYzsKICAgICB9CiAgICAgCiAgICAgZ2V0IG9yaWdpbigpIHsgcmV0dXJuIHRoaXMuX29y
aWdpbjsgfQogICAgIGdldCBuYW1lKCkgeyByZXR1cm4gdGhpcy5fbmFtZTsgfQogICAgIGdldCB0
eXBlKCkgeyByZXR1cm4gdGhpcy5fdHlwZTsgfQorICAgIGdldCBxdWFsaWZpZXJzKCkgeyByZXR1
cm4gdGhpcy5fcXVhbGlmaWVyczsgfQogICAgIGdldCBzZW1hbnRpYygpIHsgcmV0dXJuIHRoaXMu
X3NlbWFudGljOyB9CiAgICAgCiAgICAgdG9TdHJpbmcoKQogICAgIHsKLSAgICAgICAgbGV0IHJl
c3VsdCA9IHRoaXMudHlwZSArICIgIiArIHRoaXMubmFtZTsKKyAgICAgICAgbGV0IHJlc3VsdCA9
ICIiOworICAgICAgICBpZiAodGhpcy5xdWFsaWZpZXJzICYmIHRoaXMucXVhbGlmaWVycy5sZW5n
dGggPiAwKQorICAgICAgICAgICAgcmVzdWx0ICs9IHRoaXMucXVhbGlmaWVycyArICIgIjsKKyAg
ICAgICAgcmVzdWx0ICs9IGAke3RoaXMudHlwZX0gJHt0aGlzLm5hbWV9YDsKICAgICAgICAgaWYg
KHRoaXMuc2VtYW50aWMpCiAgICAgICAgICAgICByZXN1bHQgKz0gIjogIiArIHRoaXMuc2VtYW50
aWM7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9GdW5jUGFyYW1ldGVyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvRnVuY1BhcmFtZXRlci5qcwppbmRleCAwNWNkYjUyZmRlMzkwZGIyNTBlYzZjMjZiYzY3
ZTlmNTBiMWYxZjQ3Li45MjkyMDBmMTczMWFmMzYxNzViMzg2OWMyODhmODQ3OTlkYmNmNzA0IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jUGFyYW1ldGVyLmpz
CisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmNQYXJhbWV0ZXIuanMKQEAg
LTI2LDI4ICsyNiwzMiBAQAogCiBjbGFzcyBGdW5jUGFyYW1ldGVyIGV4dGVuZHMgVmFsdWUgewog
ICAgIC8vIFRoZSBuYW1lIGlzIG9wdGlvbmFsLiBJdCdzIE9LIGZvciBpdCB0byBiZSBudWxsIQot
ICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwgbmFtZSwgdHlwZSwgc2VtYW50aWMgPSBudWxsKQorICAg
IGNvbnN0cnVjdG9yKG9yaWdpbiwgbmFtZSwgdHlwZSwgcXVhbGlmaWVycyA9IG51bGwsIHNlbWFu
dGljID0gbnVsbCkKICAgICB7CiAgICAgICAgIHN1cGVyKCk7CiAgICAgICAgIHRoaXMuX29yaWdp
biA9IG9yaWdpbjsKICAgICAgICAgdGhpcy5fbmFtZSA9IG5hbWU7CiAgICAgICAgIHRoaXMuX3R5
cGUgPSB0eXBlOworICAgICAgICB0aGlzLl9xdWFsaWZpZXJzID0gcXVhbGlmaWVyczsKICAgICAg
ICAgdGhpcy5fc2VtYW50aWMgPSBzZW1hbnRpYzsKICAgICB9CiAgICAgCiAgICAgZ2V0IG9yaWdp
bigpIHsgcmV0dXJuIHRoaXMuX29yaWdpbjsgfQogICAgIGdldCBuYW1lKCkgeyByZXR1cm4gdGhp
cy5fbmFtZTsgfQogICAgIGdldCB0eXBlKCkgeyByZXR1cm4gdGhpcy5fdHlwZTsgfQorICAgIGdl
dCBxdWFsaWZpZXJzKCkgeyByZXR1cm4gdGhpcy5fcXVhbGlmaWVyczsgfQogICAgIGdldCBzZW1h
bnRpYygpIHsgcmV0dXJuIHRoaXMuX3NlbWFudGljOyB9CiAgICAgZ2V0IHZhcklzTFZhbHVlKCkg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIAogICAgIHRvU3RyaW5nKCkKICAgICB7Ci0gICAgICAgIGxl
dCByZXN1bHQ7CisgICAgICAgIGxldCByZXN1bHQgPSAiIjsKKyAgICAgICAgaWYgKHRoaXMucXVh
bGlmaWVycyAmJiB0aGlzLnF1YWxpZmllcnMubGVuZ3RoID4gMCkKKyAgICAgICAgICAgIHJlc3Vs
dCArPSB0aGlzLnF1YWxpZmllcnMgKyAiICI7CiAgICAgICAgIGlmICghdGhpcy5uYW1lKQotICAg
ICAgICAgICAgcmVzdWx0ID0gIiIgKyB0aGlzLnR5cGU7CisgICAgICAgICAgICByZXN1bHQgKz0g
IiIgKyB0aGlzLnR5cGU7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMu
dHlwZSArICIgIiArIHRoaXMubmFtZTsKKyAgICAgICAgICAgIHJlc3VsdCArPSB0aGlzLnR5cGUg
KyAiICIgKyB0aGlzLm5hbWU7CiAgICAgICAgIGlmICh0aGlzLnNlbWFudGljKQogICAgICAgICAg
ICAgcmVzdWx0ICs9ICI6ICIgKyB0aGlzLnNlbWFudGljOwogICAgICAgICByZXR1cm4gcmVzdWx0
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTWV0YWwvV0hMU0wg
VGVzdHMvV0hMU0wgVGVzdHMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL01ldGFsL1dITFNMIFRlc3RzL1dITFNMIFRlc3RzLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWVmOGFlMDE1YTgxZWQ5YTY1YjBjOTU1MzVhYTNmMGQy
OGNjOWViNy4uNWQzMTEwZTk5MDVmOTc3ZTUxZDI5NGNiOGZjN2Q5MmYxMGNmZjc4ZSAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTWV0YWwvV0hMU0wgVGVzdHMvV0hM
U0wgVGVzdHMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkKKysrIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvTWV0YWwvV0hMU0wgVGVzdHMvV0hMU0wgVGVzdHMueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkKQEAgLTcsNiArNywxNiBAQAogCW9iamVjdHMgPSB7CiAKIC8qIEJlZ2lu
IFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisJCTFDNTFGRjA4MjE2NkM2QTMwMDEyOEJCMSAvKiBS
ZXNvdXJjZVNlbWFudGljLmpzIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQzUxRkVGRjIxNjZDNkEyMDAxMjhCQjEgLyogUmVzb3VyY2VTZW1hbnRpYy5q
cyAqLzsgfTsKKwkJMUM1MUZGMDkyMTY2QzZBMzAwMTI4QkIxIC8qIFNwZWNpYWxpemF0aW9uQ29u
c3RhbnRTZW1hbnRpYy5qcyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUM1MUZGMDAyMTY2QzZBMjAwMTI4QkIxIC8qIFNwZWNpYWxpemF0aW9uQ29uc3Rh
bnRTZW1hbnRpYy5qcyAqLzsgfTsKKwkJMUM1MUZGMEEyMTY2QzZBMzAwMTI4QkIxIC8qIEZ1bmNB
dHRyaWJ1dGUuanMgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFDNTFGRjAxMjE2NkM2QTIwMDEyOEJCMSAvKiBGdW5jQXR0cmlidXRlLmpzICovOyB9Owor
CQkxQzUxRkYwQjIxNjZDNkEzMDAxMjhCQjEgLyogQ2hlY2tOYXRpdmVGdW5jU3RhZ2VzLmpzIGlu
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzUxRkYwMjIx
NjZDNkEyMDAxMjhCQjEgLyogQ2hlY2tOYXRpdmVGdW5jU3RhZ2VzLmpzICovOyB9OworCQkxQzUx
RkYwQzIxNjZDNkEzMDAxMjhCQjEgLyogUXVhbGlmaWVycy5qcyBpbiBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1MUZGMDMyMTY2QzZBMjAwMTI4QkIxIC8q
IFF1YWxpZmllcnMuanMgKi87IH07CisJCTFDNTFGRjBEMjE2NkM2QTMwMDEyOEJCMSAvKiBTZW1h
bnRpYy5qcyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUM1MUZGMDQyMTY2QzZBMjAwMTI4QkIxIC8qIFNlbWFudGljLmpzICovOyB9OworCQkxQzUxRkYw
RTIxNjZDNkEzMDAxMjhCQjEgLyogQnVpbHRJblNlbWFudGljLmpzIGluIFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzUxRkYwNTIxNjZDNkEyMDAxMjhCQjEg
LyogQnVpbHRJblNlbWFudGljLmpzICovOyB9OworCQkxQzUxRkYwRjIxNjZDNkEzMDAxMjhCQjEg
LyogRnVuY051bVRocmVhZHNBdHRyaWJ1dGUuanMgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNTFGRjA2MjE2NkM2QTIwMDEyOEJCMSAvKiBGdW5jTnVt
VGhyZWFkc0F0dHJpYnV0ZS5qcyAqLzsgfTsKKwkJMUM1MUZGMTAyMTY2QzZBMzAwMTI4QkIxIC8q
IFN0YWdlSW5PdXRTZW1hbnRpYy5qcyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUM1MUZGMDcyMTY2QzZBMjAwMTI4QkIxIC8qIFN0YWdlSW5PdXRTZW1h
bnRpYy5qcyAqLzsgfTsKKwkJMUM1MUZGMTMyMTY3MDFDMjAwMTI4QkIxIC8qIERlcml2ZWRUeXBl
SW5mby5qcyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUM1MUZGMTIyMTY3MDFDMjAwMTI4QkIxIC8qIERlcml2ZWRUeXBlSW5mby5qcyAqLzsgfTsKIAkJ
RTkwNkIwNDYyMTEzOUI3NzAwQUQxQzVFIC8qIEp1bGlhLndobHNsIGluIFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFOTA2QjA0NTIxMTM5Qjc3MDBBRDFDNUUg
LyogSnVsaWEud2hsc2wgKi87IH07CiAJCUU5MjFENjM2MjEzOEMwMjYwMDc3NTA5OSAvKiBPcGVy
YXRvckFuZGVySW5kZXhlci5qcyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTkyMUQ2MzIyMTM4QzAyNjAwNzc1MDk5IC8qIE9wZXJhdG9yQW5kZXJJbmRl
eGVyLmpzICovOyB9OwogCQlFOTIxRDYzNzIxMzhDMDI2MDA3NzUwOTkgLyogTWF0cml4VHlwZS5q
cyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTkyMUQ2
MzMyMTM4QzAyNjAwNzc1MDk5IC8qIE1hdHJpeFR5cGUuanMgKi87IH07CkBAIC0yMTAsNiArMjIw
LDE2IEBACiAvKiBFbmQgUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCisJCTFDNTFGRUZGMjE2NkM2QTIwMDEyOEJC
MSAvKiBSZXNvdXJjZVNlbWFudGljLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0
OyBuYW1lID0gUmVzb3VyY2VTZW1hbnRpYy5qczsgcGF0aCA9IC4uLy4uLy4uL1Jlc291cmNlU2Vt
YW50aWMuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTFGRjAwMjE2NkM2QTIw
MDEyOEJCMSAvKiBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuanMgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUgPSBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50
aWMuanM7IHBhdGggPSAuLi8uLi8uLi9TcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuanM7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTFGRjAxMjE2NkM2QTIwMDEyOEJCMSAv
KiBGdW5jQXR0cmlidXRlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1l
ID0gRnVuY0F0dHJpYnV0ZS5qczsgcGF0aCA9IC4uLy4uLy4uL0Z1bmNBdHRyaWJ1dGUuanM7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTFGRjAyMjE2NkM2QTIwMDEyOEJCMSAvKiBD
aGVja05hdGl2ZUZ1bmNTdGFnZXMuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7
IG5hbWUgPSBDaGVja05hdGl2ZUZ1bmNTdGFnZXMuanM7IHBhdGggPSAuLi8uLi8uLi9DaGVja05h
dGl2ZUZ1bmNTdGFnZXMuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTFGRjAz
MjE2NkM2QTIwMDEyOEJCMSAvKiBRdWFsaWZpZXJzLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5q
YXZhc2NyaXB0OyBuYW1lID0gUXVhbGlmaWVycy5qczsgcGF0aCA9IC4uLy4uLy4uL1F1YWxpZmll
cnMuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTFGRjA0MjE2NkM2QTIwMDEy
OEJCMSAvKiBTZW1hbnRpYy5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgbmFt
ZSA9IFNlbWFudGljLmpzOyBwYXRoID0gLi4vLi4vLi4vU2VtYW50aWMuanM7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFDNTFGRjA1MjE2NkM2QTIwMDEyOEJCMSAvKiBCdWlsdEluU2Vt
YW50aWMuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUgPSBCdWlsdElu
U2VtYW50aWMuanM7IHBhdGggPSAuLi8uLi8uLi9CdWlsdEluU2VtYW50aWMuanM7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTFGRjA2MjE2NkM2QTIwMDEyOEJCMSAvKiBGdW5jTnVt
VGhyZWFkc0F0dHJpYnV0ZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgbmFt
ZSA9IEZ1bmNOdW1UaHJlYWRzQXR0cmlidXRlLmpzOyBwYXRoID0gLi4vLi4vLi4vRnVuY051bVRo
cmVhZHNBdHRyaWJ1dGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTFGRjA3
MjE2NkM2QTIwMDEyOEJCMSAvKiBTdGFnZUluT3V0U2VtYW50aWMuanMgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUgPSBTdGFnZUluT3V0U2VtYW50aWMuanM7IHBhdGggPSAu
Li8uLi8uLi9TdGFnZUluT3V0U2VtYW50aWMuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTFDNTFGRjEyMjE2NzAxQzIwMDEyOEJCMSAvKiBEZXJpdmVkVHlwZUluZm8uanMgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUgPSBEZXJpdmVkVHlwZUluZm8uanM7IHBh
dGggPSAuLi8uLi8uLi9EZXJpdmVkVHlwZUluZm8uanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUU5MDZCMDQ1MjExMzlCNzcwMEFEMUM1RSAvKiBKdWxpYS53aGxzbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBKdWxpYS53aGxzbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTkyMUQ2MzIyMTM4QzAyNjAwNzc1MDk5IC8qIE9wZXJhdG9yQW5kZXJJbmRleGVyLmpzICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0gT3BlcmF0b3JBbmRlckluZGV4ZXIu
anM7IHBhdGggPSAuLi8uLi8uLi9PcGVyYXRvckFuZGVySW5kZXhlci5qczsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTkyMUQ2MzMyMTM4QzAyNjAwNzc1MDk5IC8qIE1hdHJpeFR5cGUu
anMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUgPSBNYXRyaXhUeXBlLmpz
OyBwYXRoID0gLi4vLi4vLi4vTWF0cml4VHlwZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTU2OCw2ICs1ODgsNyBAQAogCQkJCUU5NTU2OUIwMjBGNTZDRDYwMEY1Q0YzNCAvKiBC
cmVhay5qcyAqLywKIAkJCQlFOTIxRDYzNDIxMzhDMDI2MDA3NzUwOTkgLyogQnVpbHRpbk1hdHJp
eEdldHRlci5qcyAqLywKIAkJCQlFOTIxRDYzNTIxMzhDMDI2MDA3NzUwOTkgLyogQnVpbHRpbk1h
dHJpeFNldHRlci5qcyAqLywKKwkJCQkxQzUxRkYwNTIxNjZDNkEyMDAxMjhCQjEgLyogQnVpbHRJ
blNlbWFudGljLmpzICovLAogCQkJCUU5NDFBQ0I5MjEzNEE1QkIwMDM5MkJBOSAvKiBCdWlsdGlu
VmVjdG9yR2V0dGVyLmpzICovLAogCQkJCUU5NDFBQ0JDMjEzNEE1QkIwMDM5MkJBOSAvKiBCdWls
dGluVmVjdG9yU2V0dGVyLmpzICovLAogCQkJCUU5NTU2OUJGMjBGNTZDRDcwMEY1Q0YzNCAvKiBD
YWxsRXhwcmVzc2lvbi5qcyAqLywKQEAgLTU3Nyw2ICs1OTgsNyBAQAogCQkJCUU5NTU2OUMxMjBG
NTZDRDcwMEY1Q0YzNCAvKiBDaGVja2VyLmpzICovLAogCQkJCUU5NTU2OUI2MjBGNTZDRDYwMEY1
Q0YzNCAvKiBDaGVja0xpdGVyYWxUeXBlcy5qcyAqLywKIAkJCQlFOTU1NjlCMzIwRjU2Q0Q2MDBG
NUNGMzQgLyogQ2hlY2tMb29wcy5qcyAqLywKKwkJCQkxQzUxRkYwMjIxNjZDNkEyMDAxMjhCQjEg
LyogQ2hlY2tOYXRpdmVGdW5jU3RhZ2VzLmpzICovLAogCQkJCUU5NEMwNkZBMjBGNTZDQTMwMDY3
Mjk5MiAvKiBDaGVja1JlY3Vyc2lvbi5qcyAqLywKIAkJCQlFOTU1NjlCQjIwRjU2Q0Q2MDBGNUNG
MzQgLyogQ2hlY2tSZWN1cnNpdmVUeXBlcy5qcyAqLywKIAkJCQlFOTU1NjlCMjIwRjU2Q0Q2MDBG
NUNGMzQgLyogQ2hlY2tSZXR1cm5zLmpzICovLApAQCAtNTkxLDYgKzYxMyw3IEBACiAJCQkJRTk1
NTY5RDgyMEY1NkNFRDAwRjVDRjM0IC8qIENyZWF0ZUxpdGVyYWwuanMgKi8sCiAJCQkJRTk1NTY5
RDYyMEY1NkNFRDAwRjVDRjM0IC8qIENyZWF0ZUxpdGVyYWxUeXBlLmpzICovLAogCQkJCUU5NEMw
NkY5MjBGNTZDQTMwMDY3Mjk5MiAvKiBEZXJlZmVyZW5jZUV4cHJlc3Npb24uanMgKi8sCisJCQkJ
MUM1MUZGMTIyMTY3MDFDMjAwMTI4QkIxIC8qIERlcml2ZWRUeXBlSW5mby5qcyAqLywKIAkJCQlF
OUFEMDc0QjIwRjU2RDVCMDA3RjI0NjYgLyogRG90RXhwcmVzc2lvbi5qcyAqLywKIAkJCQlFOUFE
MDc0NjIwRjU2RDVBMDA3RjI0NjYgLyogRG9XaGlsZUxvb3AuanMgKi8sCiAJCQkJRTlBRDA3NDky
MEY1NkQ1QTAwN0YyNDY2IC8qIEVBcnJheVJlZi5qcyAqLywKQEAgLTYxMyw3ICs2MzYsOSBAQAog
CQkJCUU5NTU2OUVCMjBGNTZEMDUwMEY1Q0YzNCAvKiBGb2xkQ29uc3RleHBycy5qcyAqLywKIAkJ
CQlFOUZDRUI1QTIwRjU2RDkzMDA5QjM2MjkgLyogRm9yTG9vcC5qcyAqLywKIAkJCQlFOUZDRUI1
NTIwRjU2RDkyMDA5QjM2MjkgLyogRnVuYy5qcyAqLywKKwkJCQkxQzUxRkYwMTIxNjZDNkEyMDAx
MjhCQjEgLyogRnVuY0F0dHJpYnV0ZS5qcyAqLywKIAkJCQlFOTU1NjlFODIwRjU2RDA1MDBGNUNG
MzQgLyogRnVuY0RlZi5qcyAqLywKKwkJCQkxQzUxRkYwNjIxNjZDNkEyMDAxMjhCQjEgLyogRnVu
Y051bVRocmVhZHNBdHRyaWJ1dGUuanMgKi8sCiAJCQkJRTk1NTY5RTkyMEY1NkQwNTAwRjVDRjM0
IC8qIEZ1bmNQYXJhbWV0ZXIuanMgKi8sCiAJCQkJRTk1NTY5RTYyMEY1NkQwNTAwRjVDRjM0IC8q
IEZ1bmN0aW9uTGlrZUJsb2NrLmpzICovLAogCQkJCUU5NEMwNkZCMjBGNTZDQTMwMDY3Mjk5MiAv
KiBIaWdoWm9tYmllRmluZGVyLmpzICovLApAQCAtNjY5LDYgKzY5NCw3IEBACiAJCQkJRTkyRDEw
MjMyMEY1NkUyRjAwRDc3NkIyIC8qIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5qcyAqLywKIAkJ
CQlFOTJEMTAyMDIwRjU2RTJGMDBENzc2QjIgLyogUHJvcGVydHlSZXNvbHZlci5qcyAqLywKIAkJ
CQlFOTJEMTAyQjIwRjU2RTNGMDBENzc2QjIgLyogUHRyVHlwZS5qcyAqLywKKwkJCQkxQzUxRkYw
MzIxNjZDNkEyMDAxMjhCQjEgLyogUXVhbGlmaWVycy5qcyAqLywKIAkJCQlFOTJEMTAyQTIwRjU2
RTNGMDBENzc2QjIgLyogUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5qcyAqLywKIAkJCQlFOTJE
MTAyQzIwRjU2RTNGMDBENzc2QjIgLyogUmVjdXJzaW9uQ2hlY2tlci5qcyAqLywKIAkJCQlFOTJE
MTAyRTIwRjU2RTQwMDBENzc2QjIgLyogUmVjdXJzaXZlVHlwZUNoZWNrZXIuanMgKi8sCkBAIC02
NzcsMTEgKzcwMywxNSBAQAogCQkJCUU5MkQxMDM4MjBGNTZFNEYwMEQ3NzZCMiAvKiBSZXNvbHZl
T3ZlcmxvYWRJbXBsLmpzICovLAogCQkJCUU5MkQxMDM2MjBGNTZFNEYwMEQ3NzZCMiAvKiBSZXNv
bHZlUHJvcGVydGllcy5qcyAqLywKIAkJCQlFOTJEMTAzNzIwRjU2RTRGMDBENzc2QjIgLyogUmVz
b2x2ZVR5cGVEZWZzLmpzICovLAorCQkJCTFDNTFGRUZGMjE2NkM2QTIwMDEyOEJCMSAvKiBSZXNv
dXJjZVNlbWFudGljLmpzICovLAogCQkJCUU5MkQxMDNFMjBGNTZFNjEwMEQ3NzZCMiAvKiBSZXR1
cm4uanMgKi8sCiAJCQkJRTkyRDEwNDAyMEY1NkU2MjAwRDc3NkIyIC8qIFJldHVybkNoZWNrZXIu
anMgKi8sCiAJCQkJRTkyRDEwNDIyMEY1NkU2MjAwRDc3NkIyIC8qIFJldHVybkV4Y2VwdGlvbi5q
cyAqLywKIAkJCQlFOTJEMTA0MTIwRjU2RTYyMDBENzc2QjIgLyogUmV3cml0ZXIuanMgKi8sCiAJ
CQkJRTlEN0NCOUQyMTRCODJCODAwRjFDOTE4IC8qIFNhbXBsZXIuanMgKi8sCisJCQkJMUM1MUZG
MDQyMTY2QzZBMjAwMTI4QkIxIC8qIFNlbWFudGljLmpzICovLAorCQkJCTFDNTFGRjAwMjE2NkM2
QTIwMDEyOEJCMSAvKiBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuanMgKi8sCisJCQkJ
MUM1MUZGMDcyMTY2QzZBMjAwMTI4QkIxIC8qIFN0YWdlSW5PdXRTZW1hbnRpYy5qcyAqLywKIAkJ
CQlFOTJEMTAzRjIwRjU2RTYyMDBENzc2QjIgLyogU3RhbmRhcmRMaWJyYXJ5LmpzICovLAogCQkJ
CUU5MkQxMDQ4MjBGNTZFNzMwMEQ3NzZCMiAvKiBTdGF0ZW1lbnRDbG9uZXIuanMgKi8sCiAJCQkJ
RTkyRDEwNDkyMEY1NkU3MzAwRDc3NkIyIC8qIFN0cnVjdExheW91dEJ1aWxkZXIuanMgKi8sCkBA
IC04MjIsNiArODUyLDcgQEAKIAkJCQlFOTJEMTExRjIwRjcwNjBFMDBENzc2QjIgLyogQnJlYWsu
anMgaW4gUmVzb3VyY2VzICovLAogCQkJCUU5MjFENjM4MjEzOEMwMjYwMDc3NTA5OSAvKiBCdWls
dGluTWF0cml4R2V0dGVyLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTIxRDYzOTIxMzhDMDI2
MDA3NzUwOTkgLyogQnVpbHRpbk1hdHJpeFNldHRlci5qcyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJ
MUM1MUZGMEUyMTY2QzZBMzAwMTI4QkIxIC8qIEJ1aWx0SW5TZW1hbnRpYy5qcyBpbiBSZXNvdXJj
ZXMgKi8sCiAJCQkJRTk0MUFDQ0EyMTM0QTVCQzAwMzkyQkE5IC8qIEJ1aWx0aW5WZWN0b3JHZXR0
ZXIuanMgaW4gUmVzb3VyY2VzICovLAogCQkJCUU5NDFBQ0NEMjEzNEE1QkMwMDM5MkJBOSAvKiBC
dWlsdGluVmVjdG9yU2V0dGVyLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTEyMDIwRjcw
NjBFMDBENzc2QjIgLyogQ2FsbEV4cHJlc3Npb24uanMgaW4gUmVzb3VyY2VzICovLApAQCAtODMx
LDYgKzg2Miw3IEBACiAJCQkJRTkyRDExMjMyMEY3MDYwRTAwRDc3NkIyIC8qIENoZWNrZXIuanMg
aW4gUmVzb3VyY2VzICovLAogCQkJCUU5MkQxMTI0MjBGNzA2MEUwMEQ3NzZCMiAvKiBDaGVja0xp
dGVyYWxUeXBlcy5qcyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJRTkyRDExMjUyMEY3MDYwRTAwRDc3
NkIyIC8qIENoZWNrTG9vcHMuanMgaW4gUmVzb3VyY2VzICovLAorCQkJCTFDNTFGRjBCMjE2NkM2
QTMwMDEyOEJCMSAvKiBDaGVja05hdGl2ZUZ1bmNTdGFnZXMuanMgaW4gUmVzb3VyY2VzICovLAog
CQkJCUU5MkQxMTI2MjBGNzA2MEUwMEQ3NzZCMiAvKiBDaGVja1JlY3Vyc2lvbi5qcyBpbiBSZXNv
dXJjZXMgKi8sCiAJCQkJRTkyRDExMjcyMEY3MDYwRTAwRDc3NkIyIC8qIENoZWNrUmVjdXJzaXZl
VHlwZXMuanMgaW4gUmVzb3VyY2VzICovLAogCQkJCUU5MkQxMTI4MjBGNzA2MEUwMEQ3NzZCMiAv
KiBDaGVja1JldHVybnMuanMgaW4gUmVzb3VyY2VzICovLApAQCAtODQ2LDYgKzg3OCw3IEBACiAJ
CQkJRTkyRDExMzMyMEY3MDYwRTAwRDc3NkIyIC8qIENyZWF0ZUxpdGVyYWxUeXBlLmpzIGluIFJl
c291cmNlcyAqLywKIAkJCQlFOTJEMTA5MzIwRjU3MzQ5MDBENzc2QjIgLyogRGVmYXVsdC53aGxz
bCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJRTkyRDExMzQyMEY3MDYwRTAwRDc3NkIyIC8qIERlcmVm
ZXJlbmNlRXhwcmVzc2lvbi5qcyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJMUM1MUZGMTMyMTY3MDFD
MjAwMTI4QkIxIC8qIERlcml2ZWRUeXBlSW5mby5qcyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJRTky
RDExMzUyMEY3MDYwRTAwRDc3NkIyIC8qIERvdEV4cHJlc3Npb24uanMgaW4gUmVzb3VyY2VzICov
LAogCQkJCUU5MkQxMTM4MjBGNzA2MEUwMEQ3NzZCMiAvKiBEb1doaWxlTG9vcC5qcyBpbiBSZXNv
dXJjZXMgKi8sCiAJCQkJRTkyRDExMzkyMEY3MDYwRTAwRDc3NkIyIC8qIEVBcnJheVJlZi5qcyBp
biBSZXNvdXJjZXMgKi8sCkBAIC04NjgsNyArOTAxLDkgQEAKIAkJCQlFOTJEMTE0QjIwRjcwNjBF
MDBENzc2QjIgLyogRm9sZENvbnN0ZXhwcnMuanMgaW4gUmVzb3VyY2VzICovLAogCQkJCUU5MkQx
MTRDMjBGNzA2MEUwMEQ3NzZCMiAvKiBGb3JMb29wLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlF
OTJEMTE0RDIwRjcwNjBFMDBENzc2QjIgLyogRnVuYy5qcyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJ
MUM1MUZGMEEyMTY2QzZBMzAwMTI4QkIxIC8qIEZ1bmNBdHRyaWJ1dGUuanMgaW4gUmVzb3VyY2Vz
ICovLAogCQkJCUU5MkQxMTRFMjBGNzA2MEUwMEQ3NzZCMiAvKiBGdW5jRGVmLmpzIGluIFJlc291
cmNlcyAqLywKKwkJCQkxQzUxRkYwRjIxNjZDNkEzMDAxMjhCQjEgLyogRnVuY051bVRocmVhZHNB
dHRyaWJ1dGUuanMgaW4gUmVzb3VyY2VzICovLAogCQkJCUU5MkQxMTUwMjBGNzA2MEUwMEQ3NzZC
MiAvKiBGdW5jUGFyYW1ldGVyLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTE1MTIwRjcw
NjBFMDBENzc2QjIgLyogRnVuY3Rpb25MaWtlQmxvY2suanMgaW4gUmVzb3VyY2VzICovLAogCQkJ
CUU5MkQxMTUyMjBGNzA2MEUwMEQ3NzZCMiAvKiBIaWdoWm9tYmllRmluZGVyLmpzIGluIFJlc291
cmNlcyAqLywKQEAgLTkyNyw2ICs5NjIsNyBAQAogCQkJCUU5MkQxMTc3MjBGNzA2MEUwMEQ3NzZC
MiAvKiBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uanMgaW4gUmVzb3VyY2VzICovLAogCQkJCUU5
MkQxMTc4MjBGNzA2MEUwMEQ3NzZCMiAvKiBQcm9wZXJ0eVJlc29sdmVyLmpzIGluIFJlc291cmNl
cyAqLywKIAkJCQlFOTJEMTE3RDIwRjcwNjBFMDBENzc2QjIgLyogUHRyVHlwZS5qcyBpbiBSZXNv
dXJjZXMgKi8sCisJCQkJMUM1MUZGMEMyMTY2QzZBMzAwMTI4QkIxIC8qIFF1YWxpZmllcnMuanMg
aW4gUmVzb3VyY2VzICovLAogCQkJCUU5MkQxMTdFMjBGNzA2MEUwMEQ3NzZCMiAvKiBSZWFkTW9k
aWZ5V3JpdGVFeHByZXNzaW9uLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTE3RjIwRjcw
NjBFMDBENzc2QjIgLyogUmVjdXJzaW9uQ2hlY2tlci5qcyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJ
RTkyRDExODAyMEY3MDYwRTAwRDc3NkIyIC8qIFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmpzIGluIFJl
c291cmNlcyAqLywKQEAgLTkzNSwxMSArOTcxLDE1IEBACiAJCQkJRTkyRDExODMyMEY3MDYwRTAw
RDc3NkIyIC8qIFJlc29sdmVPdmVybG9hZEltcGwuanMgaW4gUmVzb3VyY2VzICovLAogCQkJCUU5
MkQxMTg0MjBGNzA2MEUwMEQ3NzZCMiAvKiBSZXNvbHZlUHJvcGVydGllcy5qcyBpbiBSZXNvdXJj
ZXMgKi8sCiAJCQkJRTkyRDExODUyMEY3MDYwRTAwRDc3NkIyIC8qIFJlc29sdmVUeXBlRGVmcy5q
cyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJMUM1MUZGMDgyMTY2QzZBMzAwMTI4QkIxIC8qIFJlc291
cmNlU2VtYW50aWMuanMgaW4gUmVzb3VyY2VzICovLAogCQkJCUU5MkQxMTg2MjBGNzA2MEUwMEQ3
NzZCMiAvKiBSZXR1cm4uanMgaW4gUmVzb3VyY2VzICovLAogCQkJCUU5MkQxMTg3MjBGNzA2MEUw
MEQ3NzZCMiAvKiBSZXR1cm5DaGVja2VyLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTE4
ODIwRjcwNjBFMDBENzc2QjIgLyogUmV0dXJuRXhjZXB0aW9uLmpzIGluIFJlc291cmNlcyAqLywK
IAkJCQlFOTJEMTE4OTIwRjcwNjBFMDBENzc2QjIgLyogUmV3cml0ZXIuanMgaW4gUmVzb3VyY2Vz
ICovLAogCQkJCUU5RDdDQkEzMjE0QjgyQjgwMEYxQzkxOCAvKiBTYW1wbGVyLmpzIGluIFJlc291
cmNlcyAqLywKKwkJCQkxQzUxRkYwRDIxNjZDNkEzMDAxMjhCQjEgLyogU2VtYW50aWMuanMgaW4g
UmVzb3VyY2VzICovLAorCQkJCTFDNTFGRjA5MjE2NkM2QTMwMDEyOEJCMSAvKiBTcGVjaWFsaXph
dGlvbkNvbnN0YW50U2VtYW50aWMuanMgaW4gUmVzb3VyY2VzICovLAorCQkJCTFDNTFGRjEwMjE2
NkM2QTMwMDEyOEJCMSAvKiBTdGFnZUluT3V0U2VtYW50aWMuanMgaW4gUmVzb3VyY2VzICovLAog
CQkJCUU5MkQxMThBMjBGNzA2MEUwMEQ3NzZCMiAvKiBTdGFuZGFyZExpYnJhcnkuanMgaW4gUmVz
b3VyY2VzICovLAogCQkJCUU5MkQxMThCMjBGNzA2MEUwMEQ3NzZCMiAvKiBTdGF0ZW1lbnRDbG9u
ZXIuanMgaW4gUmVzb3VyY2VzICovLAogCQkJCUU5MkQxMThDMjBGNzA2MEUwMEQ3NzZCMiAvKiBT
dHJ1Y3RMYXlvdXRCdWlsZGVyLmpzIGluIFJlc291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvUGFyc2UuanMKaW5kZXggY2Q0NGQwM2ZiNjNmMzNiZTk5ZGM0NGRiYmNjNGNmYWJl
MmRhOGM3Yi4uYjZiMjFiNmJmZGMzNzczOTM4YWNiYTFmODkxMGFkMDcxYWU5MzljYyAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMKKysrIGIvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMKQEAgLTMwMSw2ICszMDEsMTcgQEAgZnVu
Y3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0
LCB0ZXh0KQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAorICAgIGZ1bmN0aW9uIHBh
cnNlUXVhbGlmaWVycygpCisgICAgeworICAgICAgICBsZXQgcXVhbGlmaWVycyA9IFtdOworICAg
ICAgICBsZXQgdG9rZW47CisgICAgICAgIHdoaWxlICh0b2tlbiA9IHRyeUNvbnN1bWUoIm5vaW50
ZXJwb2xhdGlvbiIsICJub3BlcnNwZWN0aXZlIiwgInVuaWZvcm0iLCAiY2VudHJvaWQiLCAic2Ft
cGxlIikpCisgICAgICAgICAgICBxdWFsaWZpZXJzLnB1c2godG9rZW4pOworICAgICAgICBpZiAo
cXVhbGlmaWVycy5sZW5ndGggPT0gMCkKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAg
ICByZXR1cm4gbmV3IFF1YWxpZmllcnMocXVhbGlmaWVycyk7CisgICAgfQorCiAgICAgZnVuY3Rp
b24gcGFyc2VUeXBlKCkKICAgICB7CiAgICAgICAgIGxldCB0b2tlbjsKQEAgLTk1MSwxMyArOTYy
LDE0IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51
bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAgICAgIHJldHVybiB0eXBlOwogICAgICAgICBsZXQg
bGlzdCA9IFtdOwogICAgICAgICBkbyB7CisgICAgICAgICAgICBsZXQgcXVhbGlmaWVycyA9IHBh
cnNlUXVhbGlmaWVycygpOwogICAgICAgICAgICAgbGV0IG5hbWUgPSBjb25zdW1lS2luZCgiaWRl
bnRpZmllciIpOwogICAgICAgICAgICAgaWYgKG5hbWUgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3Ip
CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWU7CiAgICAgICAgICAgICBsZXQgaW5pdGlhbGl6
ZXIgPSB0cnlDb25zdW1lKCI9IikgPyBwYXJzZUV4cHJlc3Npb24oKSA6IG51bGw7CiAgICAgICAg
ICAgICBpZiAoaW5pdGlhbGl6ZXIgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGluaXRpYWxpemVyOwotICAgICAgICAgICAgbGlzdC5wdXNoKG5ldyBWYXJp
YWJsZURlY2wobmFtZSwgbmFtZS50ZXh0LCB0eXBlLCBpbml0aWFsaXplcikpOworICAgICAgICAg
ICAgbGlzdC5wdXNoKG5ldyBWYXJpYWJsZURlY2wobmFtZSwgbmFtZS50ZXh0LCB0eXBlLCBpbml0
aWFsaXplciwgcXVhbGlmaWVycykpOwogICAgICAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25z
dW1lKCIsIiwgIjsiKTsKICAgICAgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5
bnRheEVycm9yKQogICAgICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwpAQCAtMTA4MSw2
ICsxMDkzLDcgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBs
aW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogCiAgICAgZnVuY3Rpb24gcGFyc2VQYXJhbWV0ZXIoKQog
ICAgIHsKKyAgICAgICAgbGV0IHF1YWxpZmllcnMgPSBwYXJzZVF1YWxpZmllcnMoKTsKICAgICAg
ICAgbGV0IHR5cGUgPSBwYXJzZVR5cGUoKTsKICAgICAgICAgaWYgKHR5cGUgaW5zdGFuY2VvZiBX
U3ludGF4RXJyb3IpCiAgICAgICAgICAgICByZXR1cm4gdHlwZTsKQEAgLTEwOTEsNyArMTEwNCw3
IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJl
ck9mZnNldCwgdGV4dCkKICAgICAgICAgICAgIGlmIChzZW1hbnRpYyBpbnN0YW5jZW9mIFdTeW50
YXhFcnJvcikKICAgICAgICAgICAgICAgICByZXR1cm4gc2VtYW50aWM7CiAgICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIG5ldyBGdW5jUGFyYW1ldGVyKHR5cGUub3JpZ2luLCBuYW1lID8gbmFtZS50
ZXh0IDogbnVsbCwgdHlwZSwgc2VtYW50aWMpOworICAgICAgICByZXR1cm4gbmV3IEZ1bmNQYXJh
bWV0ZXIodHlwZS5vcmlnaW4sIG5hbWUgPyBuYW1lLnRleHQgOiBudWxsLCB0eXBlLCBxdWFsaWZp
ZXJzLCBzZW1hbnRpYyk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcGFyc2VQYXJhbWV0ZXJzKCkK
QEAgLTEzNzgsNiArMTM5MSw3IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3Jp
Z2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKIAogICAgIGZ1bmN0aW9uIHBhcnNlRmll
bGQoKQogICAgIHsKKyAgICAgICAgbGV0IHF1YWxpZmllcnMgPSBwYXJzZVF1YWxpZmllcnMoKTsK
ICAgICAgICAgbGV0IHR5cGUgPSBwYXJzZVR5cGUoKTsKICAgICAgICAgaWYgKHR5cGUgaW5zdGFu
Y2VvZiBXU3ludGF4RXJyb3IpCiAgICAgICAgICAgICByZXR1cm4gdHlwZTsKQEAgLTEzOTMsNyAr
MTQwNyw3IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGlu
ZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCI7
Iik7CiAgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQogICAg
ICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7Ci0gICAgICAgIHJldHVybiBuZXcgRmllbGQobmFt
ZSwgbmFtZS50ZXh0LCB0eXBlLCBzZW1hbnRpYyk7CisgICAgICAgIHJldHVybiBuZXcgRmllbGQo
bmFtZSwgbmFtZS50ZXh0LCB0eXBlLCBxdWFsaWZpZXJzLCBzZW1hbnRpYyk7CiAgICAgfQogCiAg
ICAgZnVuY3Rpb24gcGFyc2VTdHJ1Y3RUeXBlKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1F1YWxpZmllcnMuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9RdWFsaWZpZXJzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzNjA1NmNjMDMxMjI3OTQ0NjNlOTk0ZTk0
YzU2YzUzMzg4NWVlNzIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9RdWFsaWZpZXJzLmpzCkBAIC0wLDAgKzEsMTA4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworY2xhc3MgUXVhbGlm
aWVycyBleHRlbmRzIE5vZGUgeworICAgIGNvbnN0cnVjdG9yKHRva2VucykKKyAgICB7CisgICAg
ICAgIHN1cGVyKCk7CisgICAgICAgIHRoaXMuX25vaW50ZXJwb2xhdGlvbiA9IG51bGw7CisgICAg
ICAgIHRoaXMuX25vcGVyc3BlY3RpdmUgPSBudWxsOworICAgICAgICB0aGlzLl91bmlmb3JtID0g
bnVsbDsKKyAgICAgICAgdGhpcy5fY2VudHJvaWQgPSBudWxsOworICAgICAgICB0aGlzLl9zYW1w
bGUgPSBudWxsOworICAgICAgICB0aGlzLl9vcmlnaW5TdHJpbmcgPSBudWxsOworCisgICAgICAg
IGlmICh0b2tlbnMubGVuZ3RoID4gMCkKKyAgICAgICAgICAgIHRoaXMuX29yaWdpblN0cmluZyA9
IHRva2Vuc1swXS5vcmlnaW5TdHJpbmc7CisKKyAgICAgICAgZm9yIChsZXQgdG9rZW4gb2YgdG9r
ZW5zKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHRva2VuLnRleHQpIHsKKyAgICAgICAgICAgICAg
ICBjYXNlICJub2ludGVycG9sYXRpb24iOgorICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5u
b2ludGVycG9sYXRpb24pCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgICAgICAgICAgdGhpcy5fbm9pbnRlcnBvbGF0aW9uID0gdG9rZW47CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgIm5vcGVyc3BlY3RpdmUiOgor
ICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ub3BlcnNwZWN0aXZlKQorICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX25vcGVyc3Bl
Y3RpdmUgPSB0b2tlbjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgY2FzZSAidW5pZm9ybSI6CisgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnVuaWZvcm0p
CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAg
dGhpcy5fdW5pZm9ybSA9IHRva2VuOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICBjYXNlICJjZW50cm9pZCI6CisgICAgICAgICAgICAgICAgICAgIGlmICh0aGlz
LmNlbnRyb2lkKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICAgICAgICAgIHRoaXMuX2NlbnRyb2lkID0gdG9rZW47CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIGNhc2UgInNhbXBsZSI6CisgICAgICAgICAgICAgICAgICAg
IGlmICh0aGlzLnNhbXBsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgICAgICAgICB0aGlzLl9zYW1wbGUgPSB0b2tlbjsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHF1YWxpZmllcjogJHt0b2tlbi50ZXh0fWApOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgZ2V0IG5vaW50ZXJwb2xhdGlvbigp
IHsgcmV0dXJuIHRoaXMuX25vaW50ZXJwb2xhdGlvbjsgfQorICAgIGdldCBub3BlcnNwZWN0aXZl
KCkgeyByZXR1cm4gdGhpcy5fbm9wZXJzcGVjdGl2ZTsgfQorICAgIGdldCB1bmlmb3JtKCkgeyBy
ZXR1cm4gdGhpcy5fdW5pZm9ybTsgfQorICAgIGdldCBjZW50cm9pZCgpIHsgcmV0dXJuIHRoaXMu
X2NlbnRyb2lkOyB9CisgICAgZ2V0IHNhbXBsZSgpIHsgcmV0dXJuIHRoaXMuX3NhbXBsZTsgfQor
CisgICAgZ2V0IGlzVmFsaWQoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMubm9pbnRlcnBvbGF0
aW9uICYmIHRoaXMubm9wZXJzcGVjdGl2ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgaWYgKHRoaXMuY2VudHJvaWQgJiYgdGhpcy5zYW1wbGUpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGdldCB0b2tlbnMo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFt0aGlzLm5vaW50ZXJwb2xhdGlvbiwgdGhpcy5ub3Bl
cnNwZWN0aXZlLCB0aGlzLnVuaWZvcm0sIHRoaXMuY2VudHJvaWQsIHRoaXMuc2FtcGxlXS5maWx0
ZXIoeCA9PiB4KTsKKyAgICB9CisKKyAgICBnZXQgbGVuZ3RoKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0aGlzLnRva2Vucy5sZW5ndGg7CisgICAgfQorCisgICAgZ2V0IG9yaWdpblN0cmluZygp
CisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fb3JpZ2luU3RyaW5nOworICAgIH0KKworICAg
IHRvU3RyaW5nKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLnRva2Vucy5tYXAoeCA9PiB4
LnRleHQpLmpvaW4oIiAiKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L1Jld3JpdGVyLmpzCmluZGV4IDQ4YzY5Nzg4ZWM2ODk4ZWMwNzNmYzIxNWYzYWExMzc1MGJlYzA4
NTQuLmVhMWM2NGQzMWNlNDgwZjI5YzYyNzFlMGE4YzUzODEwMjI4NjcwMDMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jld3JpdGVyLmpzCisrKyBiL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jld3JpdGVyLmpzCkBAIC02MCw3ICs2MCw3IEBAIGNsYXNz
IFJld3JpdGVyIHsKICAgICAKICAgICB2aXNpdEZ1bmNQYXJhbWV0ZXIobm9kZSkKICAgICB7Ci0g
ICAgICAgIGxldCByZXN1bHQgPSBuZXcgRnVuY1BhcmFtZXRlcihub2RlLm9yaWdpbiwgbm9kZS5u
YW1lLCBub2RlLnR5cGUudmlzaXQodGhpcyksIE5vZGUudmlzaXQobm9kZS5zZW1hbnRpYywgdGhp
cykpOworICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IEZ1bmNQYXJhbWV0ZXIobm9kZS5vcmlnaW4s
IG5vZGUubmFtZSwgbm9kZS50eXBlLnZpc2l0KHRoaXMpLCBOb2RlLnZpc2l0KG5vZGUucXVhbGlm
aWVycywgdGhpcyksIE5vZGUudmlzaXQobm9kZS5zZW1hbnRpYywgdGhpcykpOwogICAgICAgICB0
aGlzLl9tYXBOb2RlKG5vZGUsIHJlc3VsdCk7CiAgICAgICAgIHJlc3VsdC5lUHRyID0gbm9kZS5l
UHRyOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNzEsNyArNzEsOCBAQCBjbGFzcyBSZXdy
aXRlciB7CiAgICAgICAgIGxldCByZXN1bHQgPSBuZXcgVmFyaWFibGVEZWNsKAogICAgICAgICAg
ICAgbm9kZS5vcmlnaW4sIG5vZGUubmFtZSwKICAgICAgICAgICAgIG5vZGUudHlwZS52aXNpdCh0
aGlzKSwKLSAgICAgICAgICAgIE5vZGUudmlzaXQobm9kZS5pbml0aWFsaXplciwgdGhpcykpOwor
ICAgICAgICAgICAgTm9kZS52aXNpdChub2RlLmluaXRpYWxpemVyLCB0aGlzKSwKKyAgICAgICAg
ICAgIE5vZGUudmlzaXQobm9kZS5xdWFsaWZpZXJzLCB0aGlzKSk7CiAgICAgICAgIHRoaXMuX21h
cE5vZGUobm9kZSwgcmVzdWx0KTsKICAgICAgICAgcmVzdWx0LmVQdHIgPSBub2RlLmVQdHI7CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0xMDUsNyArMTA2LDcgQEAgY2xhc3MgUmV3cml0ZXIg
ewogICAgIAogICAgIHZpc2l0RmllbGQobm9kZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcg
RmllbGQobm9kZS5vcmlnaW4sIG5vZGUubmFtZSwgbm9kZS50eXBlLnZpc2l0KHRoaXMpLCBOb2Rl
LnZpc2l0KG5vZGUuc2VtYW50aWMsIHRoaXMpKTsKKyAgICAgICAgcmV0dXJuIG5ldyBGaWVsZChu
b2RlLm9yaWdpbiwgbm9kZS5uYW1lLCBub2RlLnR5cGUudmlzaXQodGhpcyksIE5vZGUudmlzaXQo
bm9kZS5xdWFsaWZpZXJzLCB0aGlzKSwgTm9kZS52aXNpdChub2RlLnNlbWFudGljLCB0aGlzKSk7
CiAgICAgfQogICAgIAogICAgIHZpc2l0RW51bU1lbWJlcihub2RlKQpAQCAtNDIwLDUgKzQyMSwx
MCBAQCBjbGFzcyBSZXdyaXRlciB7CiAgICAgewogICAgICAgICByZXR1cm4gbmV3IFNwZWNpYWxp
emF0aW9uQ29uc3RhbnRTZW1hbnRpYyhub2RlLm9yaWdpbik7CiAgICAgfQorCisgICAgdmlzaXRR
dWFsaWZpZXJzKG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFF1YWxpZmllcnMobm9k
ZS50b2tlbnMpOworICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvU1BJUlYuaHRtbCBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJW
Lmh0bWwKaW5kZXggY2E0NTBmNzZlNDgzMTFlMGQ2NzVjZGJiZWM2YmJmYjRhNTE0NmEyOS4uMzU2
YTk5MzY1MWYyNWNlYjRjYTBlMzE1MTk4OGVlZjUxNmM1NmQyMCAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRtbAorKysgYi9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9TUElSVi5odG1sCkBAIC01Nyw2ICs1Nyw3IEBAIHRkIHsKICAgICA8c2Ny
aXB0IHNyYz0iRG9XaGlsZUxvb3AuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJEb3RF
eHByZXNzaW9uLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iRGVyZWZlcmVuY2VFeHBy
ZXNzaW9uLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iRGVyaXZlZFR5cGVJbmZvLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iRUFycmF5UmVmLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iRUJ1ZmZlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkVC
dWZmZXJCdWlsZGVyLmpzIj48L3NjcmlwdD4KQEAgLTExOCw2ICsxMTksNyBAQCB0ZCB7CiAgICAg
PHNjcmlwdCBzcmM9IlByb2dyYW0uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm9n
cmFtV2l0aFVubmVjZXNzYXJ5VGhpbmdzUmVtb3ZlZC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9IlB0clR5cGUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJRdWFsaWZpZXJz
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lv
bi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlJlY3Vyc2lvbkNoZWNrZXIuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJSZWN1cnNpdmVUeXBlQ2hlY2tlci5qcyI+PC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwKaW5kZXggYTIwMzE1MmU4
ZDZkNDVkNzk1NDkwN2FjM2RiNTE5ODYzYjFhNGVjZS4uMDBlOTRlMWYyODVkOTQ4YzY5OGI5MjBi
NzBmMWQyNmFhYTNlYjBkZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvVGVzdC5odG1sCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRt
bApAQCAtNTEsNiArNTEsNyBAQAogPHNjcmlwdCBzcmM9IkRvV2hpbGVMb29wLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSJEb3RFeHByZXNzaW9uLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3Jj
PSJEZXJlZmVyZW5jZUV4cHJlc3Npb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkRlcml2
ZWRUeXBlSW5mby5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iRUFycmF5UmVmLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSJFQnVmZmVyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJF
QnVmZmVyQnVpbGRlci5qcyI+PC9zY3JpcHQ+CkBAIC0xMTIsNiArMTEzLDcgQEAKIDxzY3JpcHQg
c3JjPSJQcm9ncmFtLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJQcm9ncmFtV2l0aFVubmVj
ZXNzYXJ5VGhpbmdzUmVtb3ZlZC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUHRyVHlwZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iUXVhbGlmaWVycy5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iUmVjdXJzaW9uQ2hlY2tlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmVjdXJz
aXZlVHlwZUNoZWNrZXIuanMiPjwvc2NyaXB0PgpAQCAtMTY2LDcgKzE2OCw3IEBACiA8c2NyaXB0
PgogZnVuY3Rpb24gZG9UZXN0SW5Ccm93c2VyKCkKIHsKLSAgICB2YXIgdGVzdGVyID0gZG9UZXN0
KC8uKi8pOworICAgIHZhciB0ZXN0ZXIgPSBkb1Rlc3QoL2luY29tcGF0aWJsZVF1YWxpZmllcnMv
KTsKICAgICB2YXIgbGFzdFRpbWU7CiAgICAgZnVuY3Rpb24gbmV4dCgpCiAgICAgewpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcyBiL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMKaW5kZXggMDc3YjEzN2I1YzY1NWE0NTliNWY5NTdk
NDlkNWUzZjZjZmZmNDBlNi4uZmIwZDE4N2Q2NmY1NWNjM2RjZTQ0OTMxNjRhNmJiMWY2MzZkZGNk
MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcworKysg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzCkBAIC05NDUzLDIzICs5NDUz
LDYgQEAgdGVzdHMucmVmZXJlbmNlRXF1YWxpdHkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgKGUp
ID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKIH0KIAotdGVzdHMuY29tbWVudFBhcnNpbmcg
PSBmdW5jdGlvbigpIHsKLSAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcChgCi0gICAgICAgIC8qIHRo
aXMgY29tbWVudAotICAgICAgICBydW5zIG92ZXIgbXVsdGlwbGUgbGluZXMgKi8KLSAgICAgICAg
dGVzdCBib29sIGZvbygpIHsgcmV0dXJuIHRydWU7IH0KLSAgICBgKTsKLSAgICBjaGVja0Jvb2wo
cHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIHRydWUpOwotCi0gICAg
Y2hlY2tGYWlsKAotICAgICAgICAoKSA9PiBkb1ByZXAoYAotICAgICAgICAvKiB0aGlzIGNvbW1l
bnQKLSAgICAgICAgcnVucyBvdmVyIG11bHRpcGxlIGxpbmVzCi0gICAgICAgIGJvb2wgZm9vKCkg
eyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICBgKSwKLSAgICAgICAgKGUpID0+IGUgaW5zdGFuY2Vv
ZiBXTGV4aWNhbEVycm9yKTsKLX0KLQogdGVzdHMuY2FsbEFyZ3VtZW50c0FyZUNvcGllZEltbWVk
aWF0ZWx5QWZ0ZXJFdmFsdWF0aW9uID0gKCkgPT4gewogICAgIGxldCBwcm9ncmFtID0gZG9QcmVw
KGAKICAgICAgICAgdGVzdCBpbnQgZm9vKCkKQEAgLTk3OTAsNyArOTc3Myw4IEBAIHRlc3RzLnNl
dHRpbmdBbkFycmF5SW5zaWRlQVN0cnVjdCA9IGZ1bmN0aW9uKCkKICAgICBjaGVja0ludChwcm9n
cmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgMjEpOwogfQogCi10ZXN0cy50
cmFwQmVjYXVzZU9mSW5kZXhBY2Vzc3MgPSAoKSA9PiB7Cit0ZXN0cy50cmFwQmVjYXVzZU9mSW5k
ZXhBY2Vzc3MgPSBmdW5jdGlvbigpCit7CiAgICAgY29uc3QgcHJvZ3JhbSA9IGRvUHJlcChgCiAg
ICAgICAgIHRlc3QgaW50IGZvbygpCiAgICAgICAgIHsKQEAgLTk4MDIsNyArOTc4Niw4IEBAIHRl
c3RzLnRyYXBCZWNhdXNlT2ZJbmRleEFjZXNzcyA9ICgpID0+IHsKICAgICBjaGVja1RyYXAocHJv
Z3JhbSwgKCkgPT4gY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIGNoZWNrSW50KTsK
IH0KIAotdGVzdHMudHJhcFRyYW5zaXRpdmVseSA9ICgpID0+IHsKK3Rlc3RzLnRyYXBUcmFuc2l0
aXZlbHkgPSBmdW5jdGlvbigpCit7CiAgICAgY29uc3QgcHJvZ3JhbSA9IGRvUHJlcChgCiAgICAg
ICAgIHRlc3QgaW50IGZvbygpCiAgICAgICAgIHsKQEAgLTk4MjMsNiArOTgwOCw4NSBAQCB0ZXN0
cy50cmFwVHJhbnNpdGl2ZWx5ID0gKCkgPT4gewogICAgIGNoZWNrVHJhcChwcm9ncmFtLCAoKSA9
PiBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgY2hlY2tJbnQpOwogfTsKIAordGVz
dHMuaW5jb21wYXRpYmxlUXVhbGlmaWVycyA9IGZ1bmN0aW9uKCkKK3sKKyAgICBkb1ByZXAoYAor
ICAgICAgICBzdHJ1Y3QgRm9vIHsKKyAgICAgICAgICAgIG5vaW50ZXJwb2xhdGlvbiBpbnQgeDsK
KyAgICAgICAgICAgIG5vcGVyc3BlY3RpdmUgaW50IHk7CisgICAgICAgICAgICBjZW50cm9pZCBp
bnQgejsKKyAgICAgICAgICAgIHNhbXBsZSBpbnQgdzsKKyAgICAgICAgICAgIG5vaW50ZXJwb2xh
dGlvbiBjZW50cm9pZCBpbnQgcDsKKyAgICAgICAgICAgIG5vaW50ZXJwb2xhdGlvbiBzYW1wbGUg
aW50IHE7CisgICAgICAgICAgICBub3BlcnNwZWN0aXZlIGNlbnRyb2lkIGludCByOworICAgICAg
ICAgICAgbm9wZXJzcGVjdGl2ZSBzYW1wbGUgaW50IHM7CisgICAgICAgIH0KKyAgICAgICAgdGVz
dCB2b2lkIGJhcihub2ludGVycG9sYXRpb24gaW50IHgsIG5vcGVyc3BlY3RpdmUgaW50IHksIGNl
bnRyb2lkIGludCB6LCBzYW1wbGUgaW50IHcsIG5vaW50ZXJwb2xhdGlvbiBjZW50cm9pZCBpbnQg
cCwgbm9pbnRlcnBvbGF0aW9uIHNhbXBsZSBpbnQgcSwgbm9wZXJzcGVjdGl2ZSBjZW50cm9pZCBp
bnQgciwgbm9wZXJzcGVjdGl2ZSBzYW1wbGUgaW50IHMpIHsKKyAgICAgICAgICAgIGludCBub2lu
dGVycG9sYXRpb24geDIsIG5vaW50ZXJwb2xhdGlvbiB4Mywgbm9pbnRlcnBvbGF0aW9uIGNlbnRy
b2lkIHg0LCBjZW50cm9pZCBub2ludGVycG9sYXRpb24geDU7CisgICAgICAgICAgICBpbnQgbm9w
ZXJzcGVjdGl2ZSB5Miwgbm9wZXJzcGVjdGl2ZSB5Mywgbm9wZXJzcGVjdGl2ZSBjZW50cm9pZCB5
NCwgY2VudHJvaWQgbm9wZXJzcGVjdGl2ZSB5NTsKKyAgICAgICAgICAgIGludCBjZW50cm9pZCB6
MiwgY2VudHJvaWQgejM7CisgICAgICAgICAgICBpbnQgc2FtcGxlIHcyLCBzYW1wbGUgdzM7Cisg
ICAgICAgIH0KKyAgICBgKQorICAgIGNoZWNrRmFpbCgKKyAgICAgICAgKCkgPT4gZG9QcmVwKGAK
KyAgICAgICAgICAgIHN0cnVjdCBGb28geworICAgICAgICAgICAgICAgIG5vaW50ZXJwb2xhdGlv
biBub3BlcnNwZWN0aXZlIGludCB4OworICAgICAgICAgICAgfQorICAgICAgICBgKSwKKyAgICAg
ICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICBjaGVja0ZhaWwoCisgICAg
ICAgICgpID0+IGRvUHJlcChgCisgICAgICAgICAgICBzdHJ1Y3QgRm9vIHsKKyAgICAgICAgICAg
ICAgICBjZW50cm9pZCBzYW1wbGUgaW50IHg7CisgICAgICAgICAgICB9CisgICAgICAgIGApLAor
ICAgICAgICAoZSkgPT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IpOworICAgIGNoZWNrRmFpbCgK
KyAgICAgICAgKCkgPT4gZG9QcmVwKGAKKyAgICAgICAgICAgIHRlc3Qgdm9pZCBmb28obm9pbnRl
cnBvbGF0aW9uIG5vcGVyc3BlY3RpdmUgaW50IHgpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
YCksCisgICAgICAgIChlKSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7CisgICAgY2hlY2tG
YWlsKAorICAgICAgICAoKSA9PiBkb1ByZXAoYAorICAgICAgICAgICAgdGVzdCB2b2lkIGZvbyhj
ZW50cm9pZCBzYW1wbGUgaW50IHgpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgYCksCisgICAg
ICAgIChlKSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7CisgICAgY2hlY2tGYWlsKAorICAg
ICAgICAoKSA9PiBkb1ByZXAoYAorICAgICAgICAgICAgdGVzdCB2b2lkIGZvbygpIHsKKyAgICAg
ICAgICAgICAgICBpbnQgbm9pbnRlcnBvbGF0aW9uIG5vcGVyc3BlY3RpdmUgeDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgYCksCisgICAgICAgIChlKSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJv
cik7CisgICAgY2hlY2tGYWlsKAorICAgICAgICAoKSA9PiBkb1ByZXAoYAorICAgICAgICAgICAg
dGVzdCB2b2lkIGZvbygpIHsKKyAgICAgICAgICAgICAgICBpbnQgY2VudHJvaWQgc2FtcGxlIHg7
CisgICAgICAgICAgICB9CisgICAgICAgIGApLAorICAgICAgICAoZSkgPT4gZSBpbnN0YW5jZW9m
IFdUeXBlRXJyb3IpOworfQorCit0ZXN0cy5jb21tZW50UGFyc2luZyA9IGZ1bmN0aW9uKCkgewor
ICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKKyAgICAgICAgLyogdGhpcyBjb21tZW50CisgICAg
ICAgIHJ1bnMgb3ZlciBtdWx0aXBsZSBsaW5lcyAqLworICAgICAgICB0ZXN0IGJvb2wgZm9vKCkg
eyByZXR1cm4gdHJ1ZTsgfQorICAgIGApOworICAgIGNoZWNrQm9vbChwcm9ncmFtLCBjYWxsRnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgdHJ1ZSk7CisKKyAgICBjaGVja0ZhaWwoCisgICAg
ICAgICgpID0+IGRvUHJlcChgCisgICAgICAgIC8qIHRoaXMgY29tbWVudAorICAgICAgICBydW5z
IG92ZXIgbXVsdGlwbGUgbGluZXMKKyAgICAgICAgYm9vbCBmb28oKSB7IHJldHVybiB0cnVlOyB9
CisgICAgICAgIGApLAorICAgICAgICAoZSkgPT4gZSBpbnN0YW5jZW9mIFdMZXhpY2FsRXJyb3Ip
OworfQorCiBva1RvVGVzdCA9IHRydWU7CiAKIGxldCB0ZXN0RmlsdGVyID0gLy4qLzsgLy8gcnVu
IGV2ZXJ5dGhpbmcgYnkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvVmFyaWFibGVEZWNsLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
VmFyaWFibGVEZWNsLmpzCmluZGV4IDc2OGY4YmFhYWQzYjgyZDRjMzUxN2ViNzFiMmJlYTQ5YTdl
ZWQ4MWQuLmNiYjA3YmE5ZTc0NWU4NGUyNzRmMGQxYmQ1NzU4YmRlOTY0MzA2NTUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1ZhcmlhYmxlRGVjbC5qcworKysgYi9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WYXJpYWJsZURlY2wuanMKQEAgLTI1LDI0ICsy
NSwzMiBAQAogInVzZSBzdHJpY3QiOwogCiBjbGFzcyBWYXJpYWJsZURlY2wgZXh0ZW5kcyBWYWx1
ZSB7Ci0gICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCB0eXBlLCBpbml0aWFsaXplcikKKyAg
ICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUsIHR5cGUsIGluaXRpYWxpemVyID0gbnVsbCwgcXVh
bGlmaWVycyA9IG51bGwpCiAgICAgewogICAgICAgICBzdXBlcigpOwogICAgICAgICB0aGlzLl9v
cmlnaW4gPSBvcmlnaW47CiAgICAgICAgIHRoaXMuX25hbWUgPSBuYW1lOwogICAgICAgICB0aGlz
Ll90eXBlID0gdHlwZTsKICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZXIgPSBpbml0aWFsaXplcjsK
KyAgICAgICAgdGhpcy5fcXVhbGlmaWVycyA9IHF1YWxpZmllcnM7CiAgICAgfQogICAgIAogICAg
IGdldCBvcmlnaW4oKSB7IHJldHVybiB0aGlzLl9vcmlnaW47IH0KICAgICBnZXQgbmFtZSgpIHsg
cmV0dXJuIHRoaXMuX25hbWU7IH0KICAgICBnZXQgdHlwZSgpIHsgcmV0dXJuIHRoaXMuX3R5cGU7
IH0KICAgICBnZXQgaW5pdGlhbGl6ZXIoKSB7IHJldHVybiB0aGlzLl9pbml0aWFsaXplcjsgfQor
ICAgIGdldCBxdWFsaWZpZXJzKCkgeyByZXR1cm4gdGhpcy5fcXVhbGlmaWVyczsgfQogICAgIGdl
dCB2YXJJc0xWYWx1ZSgpIHsgcmV0dXJuIHRydWU7IH0KICAgICAKICAgICB0b1N0cmluZygpCiAg
ICAgewotICAgICAgICByZXR1cm4gdGhpcy50eXBlICsgIiAiICsgdGhpcy5uYW1lICsgKHRoaXMu
aW5pdGlhbGl6ZXIgPyAiID0gIiArIHRoaXMuaW5pdGlhbGl6ZXIgOiAiIik7CisgICAgICAgIGxl
dCByZXN1bHQgPSAiIjsKKyAgICAgICAgaWYgKHRoaXMucXVhbGlmaWVycyAmJiB0aGlzLnF1YWxp
ZmllcnMubGVuZ3RoID4gMCkKKyAgICAgICAgICAgIHJlc3VsdCArPSB0aGlzLnF1YWxpZmllcnMg
KyAiICI7CisgICAgICAgIHJlc3VsdCArPSBge3RoaXMudHlwZX0gJHt0aGlzLm5hbWV9YDsKKyAg
ICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZXIpCisgICAgICAgICAgICByZXN1bHQgKz0gYCA9ICR7
dGhpcy5pbml0aWFsaXplcn1gOworICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcyBiL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0b3IuanMKaW5kZXggNGVhMWI5ZWU0ZmEw
NGQwYTUzZWY2ZTJiMDVhYTUzOGRlODNmMmZhZC4uMjBjZDg4YzRhMzUzNTdjMzhkOGY4NDYwYjNj
NjA4YjM4MTNkZjllZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
VmlzaXRvci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9yLmpz
CkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIFZpc2l0b3IgewogICAgIHZpc2l0RnVuY1BhcmFtZXRl
cihub2RlKQogICAgIHsKICAgICAgICAgbm9kZS50eXBlLnZpc2l0KHRoaXMpOworICAgICAgICBO
b2RlLnZpc2l0KG5vZGUucXVhbGlmaWVycywgdGhpcyk7CiAgICAgICAgIE5vZGUudmlzaXQobm9k
ZS5zZW1hbnRpYywgdGhpcyk7CiAgICAgfQogICAgIApAQCAtOTgsNiArOTksNyBAQCBjbGFzcyBW
aXNpdG9yIHsKICAgICB2aXNpdEZpZWxkKG5vZGUpCiAgICAgewogICAgICAgICBub2RlLnR5cGUu
dmlzaXQodGhpcyk7CisgICAgICAgIE5vZGUudmlzaXQobm9kZS5xdWFsaWZpZXJzLCB0aGlzKTsK
ICAgICAgICAgTm9kZS52aXNpdChub2RlLnNlbWFudGljLCB0aGlzKTsKICAgICB9CiAgICAgCkBA
IC0xNDcsNiArMTQ5LDcgQEAgY2xhc3MgVmlzaXRvciB7CiAgICAgewogICAgICAgICBub2RlLnR5
cGUudmlzaXQodGhpcyk7CiAgICAgICAgIE5vZGUudmlzaXQobm9kZS5pbml0aWFsaXplciwgdGhp
cyk7CisgICAgICAgIE5vZGUudmlzaXQobm9kZS5xdWFsaWZpZXJzLCB0aGlzKTsKICAgICB9CiAg
ICAgCiAgICAgdmlzaXRBc3NpZ25tZW50KG5vZGUpCkBAIC0zNzQsNSArMzc3LDkgQEAgY2xhc3Mg
VmlzaXRvciB7CiAgICAgdmlzaXRTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMobm9kZSkK
ICAgICB7CiAgICAgfQorCisgICAgdmlzaXRRdWFsaWZpZXJzKG5vZGUpCisgICAgeworICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvaW5kZXguaHRt
bCBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWwKaW5kZXggZThkODM1
OGRmZjk2OTZmMmRiZGU0MmY1ZDYxMzdhMTU5YzE5M2Q0Mi4uOWU2MDI3YjU0MjU1MDQxMjkyYWU5
NWI2MmQxNTdjZmM4ZDYyMzRjYyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvaW5kZXguaHRtbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRl
eC5odG1sCkBAIC01MSw2ICs1MSw3IEBACiA8c2NyaXB0IHNyYz0iRG9XaGlsZUxvb3AuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9IkRvdEV4cHJlc3Npb24uanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9IkRlcmVmZXJlbmNlRXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
RGVyaXZlZFR5cGVJbmZvLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJFQXJyYXlSZWYuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkVCdWZmZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9IkVCdWZmZXJCdWlsZGVyLmpzIj48L3NjcmlwdD4KQEAgLTExMiw2ICsxMTMsNyBAQAogPHNj
cmlwdCBzcmM9IlByb2dyYW0uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlByb2dyYW1XaXRo
VW5uZWNlc3NhcnlUaGluZ3NSZW1vdmVkLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJQdHJU
eXBlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJRdWFsaWZpZXJzLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSJSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSJSZWN1cnNpb25DaGVja2VyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJS
ZWN1cnNpdmVUeXBlQ2hlY2tlci5qcyI+PC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351711</attachid>
            <date>2018-10-05 19:35:24 -0700</date>
            <delta_ts>2018-10-09 00:06:59 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-189125-20181005193523.patch</filename>
            <type>text/plain</type>
            <size>50899</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2ODM3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWI4ODdmZGY3ZjI2YzkyZTkzMWY3MzljNzIzZTEwMTM0
OTlhMjY5Ny4uMTNhMTBhZGM0OTg2M2ZlZDQ4MGNjNGY4Y2Q1YmYzYTI4YTU5ZWI0OCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEw
MSBAQAorMjAxOC0xMC0wNSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29t
PgorCisgICAgICAgIFtXSExTTF0gSW1wbGVtZW50IGR5bmFtaWNhbGx5IHVuaWZvcm0gZXhwcmVz
c2lvbiByZXN0cmljdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4OTEyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzOgorICAgICAgICAqIFdl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbG9jYXRlQXRFbnRyeVBvaW50cy5qczoKKyAgICAgICAg
KGFsbG9jYXRlQXRFbnRyeVBvaW50cy51cGRhdGVGdW5jdGlvbi5VcGRhdGVGdW5jdGlvbnMucHJv
dG90eXBlLl9hZGRWYXJpYWJsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9DaGVja2VyLmpzOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUudmlzaXRQ
cm9ncmFtKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLnZpc2l0UXVhbGlmaWVycyk6Cisg
ICAgICAgIChDaGVja2VyKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GaWVs
ZC5qczoKKyAgICAgICAgKEZpZWxkKToKKyAgICAgICAgKEZpZWxkLnByb3RvdHlwZS5nZXQgcXVh
bGlmaWVycyk6CisgICAgICAgIChGaWVsZC5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAq
IFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmNQYXJhbWV0ZXIuanM6CisgICAgICAgIChGdW5j
UGFyYW1ldGVyKToKKyAgICAgICAgKEZ1bmNQYXJhbWV0ZXIucHJvdG90eXBlLmdldCBxdWFsaWZp
ZXJzKToKKyAgICAgICAgKEZ1bmNQYXJhbWV0ZXIucHJvdG90eXBlLmdldCB1bmlmb3JtaXR5KToK
KyAgICAgICAgKEZ1bmNQYXJhbWV0ZXIucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAgKiBX
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9NZXRhbC9XSExTTCBUZXN0cy9XSExTTCBUZXN0cy54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L1BhcnNlLmpzOgorICAgICAgICAocGFyc2VRdWFsaWZpZXJzKToKKyAgICAgICAgKHBhcnNlVmFy
aWFibGVEZWNscyk6CisgICAgICAgIChwYXJzZVBhcmFtZXRlcik6CisgICAgICAgIChwYXJzZUZp
ZWxkKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QcmVwYXJlLmpzOgorICAg
ICAgICAobGV0LnByZXBhcmUpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1F1
YWxpZmllcnMuanM6IEFkZGVkLgorICAgICAgICAoUXVhbGlmaWVycyk6CisgICAgICAgIChRdWFs
aWZpZXJzLnByb3RvdHlwZS5nZXQgbm9pbnRlcnBvbGF0aW9uKToKKyAgICAgICAgKFF1YWxpZmll
cnMucHJvdG90eXBlLmdldCBub3BlcnNwZWN0aXZlKToKKyAgICAgICAgKFF1YWxpZmllcnMucHJv
dG90eXBlLmdldCBjZW50cm9pZCk6CisgICAgICAgIChRdWFsaWZpZXJzLnByb3RvdHlwZS5nZXQg
c2FtcGxlKToKKyAgICAgICAgKFF1YWxpZmllcnMucHJvdG90eXBlLmdldCBpc1ZhbGlkKToKKyAg
ICAgICAgKFF1YWxpZmllcnMucHJvdG90eXBlLmdldCB0b2tlbnMpOgorICAgICAgICAoUXVhbGlm
aWVycy5wcm90b3R5cGUuZ2V0IGxlbmd0aCk6CisgICAgICAgIChRdWFsaWZpZXJzLnByb3RvdHlw
ZS5nZXQgb3JpZ2luU3RyaW5nKToKKyAgICAgICAgKFF1YWxpZmllcnMucHJvdG90eXBlLnRvU3Ry
aW5nKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5qczoKKyAg
ICAgICAgKFJld3JpdGVyLnByb3RvdHlwZS52aXNpdEZ1bmNQYXJhbWV0ZXIpOgorICAgICAgICAo
UmV3cml0ZXIucHJvdG90eXBlLnZpc2l0VmFyaWFibGVEZWNsKToKKyAgICAgICAgKFJld3JpdGVy
LnByb3RvdHlwZS52aXNpdEZpZWxkKToKKyAgICAgICAgKFJld3JpdGVyLnByb3RvdHlwZS52aXNp
dFF1YWxpZmllcnMpOgorICAgICAgICAoUmV3cml0ZXIpOgorICAgICAgICAqIFdlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1NQSVJWLmh0bWw6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvVGVzdC5odG1sOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanM6
CisgICAgICAgICh0ZXN0cy50cmFwQmVjYXVzZU9mSW5kZXhBY2Vzc3MpOgorICAgICAgICAodGVz
dHMudHJhcFRyYW5zaXRpdmVseSk6CisgICAgICAgICh0ZXN0cy5pbmNvbXBhdGlibGVRdWFsaWZp
ZXJzKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Vbmlmb3JtaXR5Q2hlY2tl
ci5qczogQWRkZWQuCisgICAgICAgIChjaGVja1VuaWZvcm1zLkdyYXBoQnVpbGRlcik6CisgICAg
ICAgIChjaGVja1VuaWZvcm1zLkdyYXBoQnVpbGRlci5wcm90b3R5cGUuZ2V0IGVkZ2VzKToKKyAg
ICAgICAgKGNoZWNrVW5pZm9ybXMuR3JhcGhCdWlsZGVyLnByb3RvdHlwZS5nZXQgcmVzdWx0KToK
KyAgICAgICAgKGNoZWNrVW5pZm9ybXMuR3JhcGhCdWlsZGVyLnByb3RvdHlwZS5fYWxsb2NhdGVH
cmFwaE5vZGUpOgorICAgICAgICAoY2hlY2tVbmlmb3Jtcy5HcmFwaEJ1aWxkZXIucHJvdG90eXBl
Ll9wdXNoQ29udHJvbEZsb3cpOgorICAgICAgICAoY2hlY2tVbmlmb3Jtcy5HcmFwaEJ1aWxkZXIu
cHJvdG90eXBlLmNyZWF0ZVBhcmFtZXRlckdyYXBoTm9kZXMpOgorICAgICAgICAoY2hlY2tVbmlm
b3Jtcy5HcmFwaEJ1aWxkZXIucHJvdG90eXBlLnZpc2l0RnVuY1BhcmFtZXRlcik6CisgICAgICAg
IChjaGVja1VuaWZvcm1zLkdyYXBoQnVpbGRlci5wcm90b3R5cGUudmlzaXRGdW5jRGVmKToKKyAg
ICAgICAgKGNoZWNrVW5pZm9ybXMuR3JhcGhCdWlsZGVyLnByb3RvdHlwZS52aXNpdE5hdGl2ZUZ1
bmMpOgorICAgICAgICAoY2hlY2tVbmlmb3Jtcy5HcmFwaEJ1aWxkZXIucHJvdG90eXBlLnZpc2l0
VmFyaWFibGVEZWNsKToKKyAgICAgICAgKGNoZWNrVW5pZm9ybXMuR3JhcGhCdWlsZGVyLnByb3Rv
dHlwZS52aXNpdEFzc2lnbm1lbnQpOgorICAgICAgICAoY2hlY2tVbmlmb3Jtcy5HcmFwaEJ1aWxk
ZXIucHJvdG90eXBlLnZpc2l0UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbik6CisgICAgICAgIChj
aGVja1VuaWZvcm1zLkdyYXBoQnVpbGRlci5wcm90b3R5cGUudmlzaXRUZXJuYXJ5RXhwcmVzc2lv
bik6CisgICAgICAgIChjaGVja1VuaWZvcm1zLkdyYXBoQnVpbGRlci5wcm90b3R5cGUudmlzaXRW
YXJpYWJsZVJlZik6CisgICAgICAgIChjaGVja1VuaWZvcm1zLkdyYXBoQnVpbGRlci5wcm90b3R5
cGUudmlzaXRJZlN0YXRlbWVudCk6CisgICAgICAgIChjaGVja1VuaWZvcm1zLkdyYXBoQnVpbGRl
ci5wcm90b3R5cGUudmlzaXRXaGlsZUxvb3ApOgorICAgICAgICAoY2hlY2tVbmlmb3Jtcy5HcmFw
aEJ1aWxkZXIucHJvdG90eXBlLnZpc2l0RG9XaGlsZUxvb3ApOgorICAgICAgICAoY2hlY2tVbmlm
b3Jtcy5HcmFwaEJ1aWxkZXIucHJvdG90eXBlLnZpc2l0Rm9yTG9vcCk6CisgICAgICAgIChjaGVj
a1VuaWZvcm1zLkdyYXBoQnVpbGRlci5wcm90b3R5cGUudmlzaXRTd2l0Y2hTdGF0ZW1lbnQpOgor
ICAgICAgICAoY2hlY2tVbmlmb3Jtcy5HcmFwaEJ1aWxkZXIucHJvdG90eXBlLnZpc2l0UmV0dXJu
KToKKyAgICAgICAgKGNoZWNrVW5pZm9ybXMuR3JhcGhCdWlsZGVyLnByb3RvdHlwZS52aXNpdENv
bnRpbnVlKToKKyAgICAgICAgKGNoZWNrVW5pZm9ybXMuR3JhcGhCdWlsZGVyLnByb3RvdHlwZS52
aXNpdEJyZWFrKToKKyAgICAgICAgKGNoZWNrVW5pZm9ybXMuR3JhcGhCdWlsZGVyLnByb3RvdHlw
ZS52aXNpdFRyYXBTdGF0ZW1lbnQpOgorICAgICAgICAoY2hlY2tVbmlmb3Jtcy5HcmFwaEJ1aWxk
ZXIucHJvdG90eXBlLnZpc2l0R2VuZXJpY0xpdGVyYWwpOgorICAgICAgICAoY2hlY2tVbmlmb3Jt
cy5HcmFwaEJ1aWxkZXIucHJvdG90eXBlLnZpc2l0TnVsbExpdGVyYWwpOgorICAgICAgICAoY2hl
Y2tVbmlmb3Jtcy5HcmFwaEJ1aWxkZXIucHJvdG90eXBlLnZpc2l0Qm9vbExpdGVyYWwpOgorICAg
ICAgICAoY2hlY2tVbmlmb3Jtcy5HcmFwaEJ1aWxkZXIucHJvdG90eXBlLnZpc2l0QW5vbnltb3Vz
VmFyaWFibGUpOgorICAgICAgICAoY2hlY2tVbmlmb3Jtcy5HcmFwaEJ1aWxkZXIucHJvdG90eXBl
LnZpc2l0Q2FsbEV4cHJlc3Npb24pOgorICAgICAgICAoY2hlY2tVbmlmb3Jtcy5wb2xsdXRlKToK
KyAgICAgICAgKGNoZWNrVW5pZm9ybXMuc2V0VW5pb24pOgorICAgICAgICAoY2hlY2tVbmlmb3Jt
cy5pc05vblVuaWZvcm0pOgorICAgICAgICAoY2hlY2tVbmlmb3Jtcyk6CisgICAgICAgICogV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvVmFyaWFibGVEZWNsLmpzOgorICAgICAgICAoVmFyaWFibGVE
ZWNsKToKKyAgICAgICAgKFZhcmlhYmxlRGVjbC5wcm90b3R5cGUuZ2V0IHVuaWZvcm1pdHkpOgor
ICAgICAgICAoVmFyaWFibGVEZWNsLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgICogV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qczoKKyAgICAgICAgKFZpc2l0b3IucHJvdG90
eXBlLnZpc2l0RnVuY1BhcmFtZXRlcik6CisgICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS52aXNp
dEZpZWxkKToKKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLnZpc2l0UXVhbGlmaWVycyk6Cisg
ICAgICAgIChWaXNpdG9yKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRl
eC5odG1sOgorCiAyMDE4LTEwLTA0ICBCYXN1a2UgU3V6dWtpICA8QmFzdWtlLlN1enVraUBzb255
LmNvbT4KIAogICAgICAgICBbTGF5b3V0VGVzdHNdW1dpbl0gU3RvcCB3cHQgc2VydmVyIGNvcnJl
Y3RseS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcyBi
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcwppbmRleCBiYTY1Y2M1ZDU1MWRk
ZWRlMDE4ZWJmZDM1ZmIwMzNhNTBkYzI5MzYyLi45ZTJjMDIxMWQwMzlkZjFmM2Y0OGY3ZmFkY2Fk
YTJmMGM2ZmIxZDNmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9B
bGwuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzCkBAIC0xMzUs
NiArMTM1LDcgQEAgbG9hZCgiUHJvcGVydHlSZXNvbHZlci5qcyIpOwogbG9hZCgiUHJvZ3JhbS5q
cyIpOwogbG9hZCgiUHJvZ3JhbVdpdGhVbm5lY2Vzc2FyeVRoaW5nc1JlbW92ZWQuanMiKTsKIGxv
YWQoIlB0clR5cGUuanMiKTsKK2xvYWQoIlF1YWxpZmllcnMuanMiKTsKIGxvYWQoIlJlYWRNb2Rp
ZnlXcml0ZUV4cHJlc3Npb24uanMiKTsKIGxvYWQoIlJlY3Vyc2lvbkNoZWNrZXIuanMiKTsKIGxv
YWQoIlJlY3Vyc2l2ZVR5cGVDaGVja2VyLmpzIik7CkBAIC0xNzIsNiArMTczLDcgQEAgbG9hZCgi
VHlwZWRWYWx1ZS5qcyIpOwogbG9hZCgiVWludExpdGVyYWwuanMiKTsKIGxvYWQoIlVpbnRMaXRl
cmFsVHlwZS5qcyIpOwogbG9hZCgiVW5pZmljYXRpb25Db250ZXh0LmpzIik7Citsb2FkKCJVbmlm
b3JtaXR5Q2hlY2tlci5qcyIpOwogbG9hZCgiVW5yZWFjaGFibGVDb2RlQ2hlY2tlci5qcyIpOwog
bG9hZCgiVmFyaWFibGVEZWNsLmpzIik7CiBsb2FkKCJWYXJpYWJsZVJlZi5qcyIpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsb2NhdGVBdEVudHJ5UG9pbnRz
LmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsb2NhdGVBdEVudHJ5UG9pbnRz
LmpzCmluZGV4IDJjZGU1M2ZmMDBkY2VkODI4ODI5Zjk5MTI3NDU5OWU0MTRiNTgyOGMuLjUzOGIy
ZmNiZmRiNjAxZjM0NTY0NzdlZjY3YmIyOGUzMGYzOGU0MjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbG9jYXRlQXRFbnRyeVBvaW50cy5qcworKysgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGxvY2F0ZUF0RW50cnlQb2ludHMuanMKQEAgLTE0
Miw3ICsxNDIsNyBAQCBmdW5jdGlvbiBhbGxvY2F0ZUF0RW50cnlQb2ludHMocHJvZ3JhbSkKIAog
ICAgICAgICAgICAgX2FkZFZhcmlhYmxlRGVjbGFyYXRpb24oKQogICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIHRoaXMuX3ZhcmlhYmxlRGVjbCA9IG5ldyBWYXJpYWJsZURlY2woZnVuYy5v
cmlnaW4sICJnbG9iYWwgc3RydWN0IiwgZ2xvYmFsU3RydWN0VHlwZVJlZiwgbnVsbCk7CisgICAg
ICAgICAgICAgICAgdGhpcy5fdmFyaWFibGVEZWNsID0gbmV3IFZhcmlhYmxlRGVjbChmdW5jLm9y
aWdpbiwgImdsb2JhbCBzdHJ1Y3QiLCBnbG9iYWxTdHJ1Y3RUeXBlUmVmKTsKICAgICAgICAgICAg
ICAgICB0aGlzLm1ha2VHbG9iYWxTdHJ1Y3RWYXJpYWJsZVJlZiA9ICgpID0+IG5ldyBNYWtlUHRy
RXhwcmVzc2lvbihmdW5jLm9yaWdpbiwgVmFyaWFibGVSZWYud3JhcCh0aGlzLl92YXJpYWJsZURl
Y2wpKTsKICAgICAgICAgICAgICAgICBmdW5jLmJvZHkuc3RhdGVtZW50cy51bnNoaWZ0KHRoaXMu
X3ZhcmlhYmxlRGVjbCk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvQ2hlY2tlci5qcwppbmRleCAxZTk5MzI3NDgzOTViMDIyNTk2MDI1MjJkYjhhMjY4MDViMWVl
M2NmLi4xZGY2NGQ5MWM0YmU1ZDI1OGMwOTZiYzQ5OTI0MTc1NWRiMTRhYjY1IDEwMDY0NAotLS0g
YS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzCisrKyBiL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIuanMKQEAgLTU4LDYgKzU4LDE0IEBAIGNsYXNz
IENoZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgICAgIGZvciAobGV0IGZ1bmMgb2Yg
ZnVuY3MpCiAgICAgICAgICAgICAgICAgZG9TdGF0ZW1lbnQoZnVuYyk7CiAgICAgICAgIH0KKyAg
ICAgICAgZm9yIChsZXQgdHlwZSBvZiBub2RlLnR5cGVzLnZhbHVlcygpKSB7CisgICAgICAgICAg
ICBpZiAodHlwZSBpbnN0YW5jZW9mIEFycmF5KSB7CisgICAgICAgICAgICAgICAgZm9yIChsZXQg
dCBvZiB0eXBlKQorICAgICAgICAgICAgICAgICAgICBkb1N0YXRlbWVudCh0KTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBkb1N0YXRlbWVudCh0eXBl
KTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIF9jaGVja1NlbWFudGljcyhub2RlKQpAQCAtOTE0
LDUgKzkyMiwxMSBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAgIGxl
dCByZXN1bHQgPSBub2RlLnJlc29sdmUobm9kZS5wb3NzaWJsZU92ZXJsb2FkcywgdGhpcy5fcHJv
Z3JhbSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQorCisgICAgdmlzaXRRdWFsaWZp
ZXJzKG5vZGUpCisgICAgeworICAgICAgICBpZiAoIW5vZGUuaXNWYWxpZCkKKyAgICAgICAgICAg
IHRocm93IG5ldyBXVHlwZUVycm9yKG5vZGUub3JpZ2luU3RyaW5nLCAiSW5jb21wYXRpYmxlIHF1
YWxpZmllcnMgYXJlIHNwZWNpZmllZCIpOworICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRmllbGQuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9GaWVsZC5qcwppbmRleCAzMTJiMDBkOWUyOGNiM2UzMzZhZTA5ZmMzOTZmZDg5YzE2
MGFiMGE5Li5jMGY4NjFmZTJhZjI3MjgzYzliMzZkOTUzMzk4Yzk4ZjVlOGYwYjNlIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GaWVsZC5qcworKysgYi9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GaWVsZC5qcwpAQCAtMjUsMjMgKzI1LDI4IEBACiAidXNl
IHN0cmljdCI7CiAKIGNsYXNzIEZpZWxkIGV4dGVuZHMgTm9kZSB7Ci0gICAgY29uc3RydWN0b3Io
b3JpZ2luLCBuYW1lLCB0eXBlLCBzZW1hbnRpYyA9IG51bGwpCisgICAgY29uc3RydWN0b3Iob3Jp
Z2luLCBuYW1lLCB0eXBlLCBxdWFsaWZpZXJzID0gbnVsbCwgc2VtYW50aWMgPSBudWxsKQogICAg
IHsKICAgICAgICAgc3VwZXIoKTsKICAgICAgICAgdGhpcy5fb3JpZ2luID0gb3JpZ2luOwogICAg
ICAgICB0aGlzLl9uYW1lID0gbmFtZTsKICAgICAgICAgdGhpcy5fdHlwZSA9IHR5cGU7CisgICAg
ICAgIHRoaXMuX3F1YWxpZmllcnMgPSBxdWFsaWZpZXJzOwogICAgICAgICB0aGlzLl9zZW1hbnRp
YyA9IHNlbWFudGljOwogICAgIH0KICAgICAKICAgICBnZXQgb3JpZ2luKCkgeyByZXR1cm4gdGhp
cy5fb3JpZ2luOyB9CiAgICAgZ2V0IG5hbWUoKSB7IHJldHVybiB0aGlzLl9uYW1lOyB9CiAgICAg
Z2V0IHR5cGUoKSB7IHJldHVybiB0aGlzLl90eXBlOyB9CisgICAgZ2V0IHF1YWxpZmllcnMoKSB7
IHJldHVybiB0aGlzLl9xdWFsaWZpZXJzOyB9CiAgICAgZ2V0IHNlbWFudGljKCkgeyByZXR1cm4g
dGhpcy5fc2VtYW50aWM7IH0KICAgICAKICAgICB0b1N0cmluZygpCiAgICAgewotICAgICAgICBs
ZXQgcmVzdWx0ID0gdGhpcy50eXBlICsgIiAiICsgdGhpcy5uYW1lOworICAgICAgICBsZXQgcmVz
dWx0ID0gIiI7CisgICAgICAgIGlmICh0aGlzLnF1YWxpZmllcnMgJiYgdGhpcy5xdWFsaWZpZXJz
Lmxlbmd0aCA+IDApCisgICAgICAgICAgICByZXN1bHQgKz0gdGhpcy5xdWFsaWZpZXJzICsgIiAi
OworICAgICAgICByZXN1bHQgKz0gYCR7dGhpcy50eXBlfSAke3RoaXMubmFtZX1gOwogICAgICAg
ICBpZiAodGhpcy5zZW1hbnRpYykKICAgICAgICAgICAgIHJlc3VsdCArPSAiOiAiICsgdGhpcy5z
ZW1hbnRpYzsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmNQYXJhbWV0ZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9GdW5jUGFyYW1ldGVyLmpzCmluZGV4IDA1Y2RiNTJmZGUzOTBkYjI1MGVjNmMy
NmJjNjdlOWY1MGIxZjFmNDcuLmIyY2ZiNWEwMDllNjQ2NjRhMDIwZjcwMDc5ZWQzYTY2MGIyYjQ0
ZjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmNQYXJhbWV0
ZXIuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuY1BhcmFtZXRlci5q
cwpAQCAtMjYsMjggKzI2LDM0IEBACiAKIGNsYXNzIEZ1bmNQYXJhbWV0ZXIgZXh0ZW5kcyBWYWx1
ZSB7CiAgICAgLy8gVGhlIG5hbWUgaXMgb3B0aW9uYWwuIEl0J3MgT0sgZm9yIGl0IHRvIGJlIG51
bGwhCi0gICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCB0eXBlLCBzZW1hbnRpYyA9IG51bGwp
CisgICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCB0eXBlLCBxdWFsaWZpZXJzID0gbnVsbCwg
dW5pZm9ybWl0eSA9IG51bGwsIHNlbWFudGljID0gbnVsbCkKICAgICB7CiAgICAgICAgIHN1cGVy
KCk7CiAgICAgICAgIHRoaXMuX29yaWdpbiA9IG9yaWdpbjsKICAgICAgICAgdGhpcy5fbmFtZSA9
IG5hbWU7CiAgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlOworICAgICAgICB0aGlzLl9xdWFsaWZp
ZXJzID0gcXVhbGlmaWVyczsKKyAgICAgICAgdGhpcy5fdW5pZm9ybWl0eSA9IHVuaWZvcm1pdHk7
CiAgICAgICAgIHRoaXMuX3NlbWFudGljID0gc2VtYW50aWM7CiAgICAgfQogICAgIAogICAgIGdl
dCBvcmlnaW4oKSB7IHJldHVybiB0aGlzLl9vcmlnaW47IH0KICAgICBnZXQgbmFtZSgpIHsgcmV0
dXJuIHRoaXMuX25hbWU7IH0KICAgICBnZXQgdHlwZSgpIHsgcmV0dXJuIHRoaXMuX3R5cGU7IH0K
KyAgICBnZXQgcXVhbGlmaWVycygpIHsgcmV0dXJuIHRoaXMuX3F1YWxpZmllcnM7IH0KKyAgICBn
ZXQgdW5pZm9ybWl0eSgpIHsgcmV0dXJuIHRoaXMuX3VuaWZvcm1pdHk7IH0KICAgICBnZXQgc2Vt
YW50aWMoKSB7IHJldHVybiB0aGlzLl9zZW1hbnRpYzsgfQogICAgIGdldCB2YXJJc0xWYWx1ZSgp
IHsgcmV0dXJuIHRydWU7IH0KICAgICAKICAgICB0b1N0cmluZygpCiAgICAgewotICAgICAgICBs
ZXQgcmVzdWx0OworICAgICAgICBsZXQgcmVzdWx0ID0gIiI7CisgICAgICAgIGlmICh0aGlzLnF1
YWxpZmllcnMgJiYgdGhpcy5xdWFsaWZpZXJzLmxlbmd0aCA+IDApCisgICAgICAgICAgICByZXN1
bHQgKz0gdGhpcy5xdWFsaWZpZXJzICsgIiAiOwogICAgICAgICBpZiAoIXRoaXMubmFtZSkKLSAg
ICAgICAgICAgIHJlc3VsdCA9ICIiICsgdGhpcy50eXBlOworICAgICAgICAgICAgcmVzdWx0ICs9
ICIiICsgdGhpcy50eXBlOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSB0aGlz
LnR5cGUgKyAiICIgKyB0aGlzLm5hbWU7CisgICAgICAgICAgICByZXN1bHQgKz0gdGhpcy50eXBl
ICsgIiAiICsgdGhpcy5uYW1lOwogICAgICAgICBpZiAodGhpcy5zZW1hbnRpYykKICAgICAgICAg
ICAgIHJlc3VsdCArPSAiOiAiICsgdGhpcy5zZW1hbnRpYzsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL01ldGFsL1dITFNM
IFRlc3RzL1dITFNMIFRlc3RzLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9NZXRhbC9XSExTTCBUZXN0cy9XSExTTCBUZXN0cy54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDllZjhhZTAxNWE4MWVkOWE2NWIwYzk1NTM1YWEzZjBk
MjhjYzllYjcuLjhlZjJlMDljMWE0ODY5OGZmMGExYTg4ZDE2YjRiMWU4M2MwY2E4YzkgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL01ldGFsL1dITFNMIFRlc3RzL1dI
TFNMIFRlc3RzLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJCisrKyBiL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL01ldGFsL1dITFNMIFRlc3RzL1dITFNMIFRlc3RzLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJCkBAIC03LDYgKzcsMTYgQEAKIAlvYmplY3RzID0gewogCiAvKiBCZWdp
biBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLworCQkxQzUxRkYwODIxNjZDNkEzMDAxMjhCQjEgLyog
UmVzb3VyY2VTZW1hbnRpYy5qcyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUM1MUZFRkYyMTY2QzZBMjAwMTI4QkIxIC8qIFJlc291cmNlU2VtYW50aWMu
anMgKi87IH07CisJCTFDNTFGRjA5MjE2NkM2QTMwMDEyOEJCMSAvKiBTcGVjaWFsaXphdGlvbkNv
bnN0YW50U2VtYW50aWMuanMgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFDNTFGRjAwMjE2NkM2QTIwMDEyOEJCMSAvKiBTcGVjaWFsaXphdGlvbkNvbnN0
YW50U2VtYW50aWMuanMgKi87IH07CisJCTFDNTFGRjBBMjE2NkM2QTMwMDEyOEJCMSAvKiBGdW5j
QXR0cmlidXRlLmpzIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQzUxRkYwMTIxNjZDNkEyMDAxMjhCQjEgLyogRnVuY0F0dHJpYnV0ZS5qcyAqLzsgfTsK
KwkJMUM1MUZGMEIyMTY2QzZBMzAwMTI4QkIxIC8qIENoZWNrTmF0aXZlRnVuY1N0YWdlcy5qcyBp
biBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1MUZGMDIy
MTY2QzZBMjAwMTI4QkIxIC8qIENoZWNrTmF0aXZlRnVuY1N0YWdlcy5qcyAqLzsgfTsKKwkJMUM1
MUZGMEMyMTY2QzZBMzAwMTI4QkIxIC8qIFF1YWxpZmllcnMuanMgaW4gUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNTFGRjAzMjE2NkM2QTIwMDEyOEJCMSAv
KiBRdWFsaWZpZXJzLmpzICovOyB9OworCQkxQzUxRkYwRDIxNjZDNkEzMDAxMjhCQjEgLyogU2Vt
YW50aWMuanMgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDNTFGRjA0MjE2NkM2QTIwMDEyOEJCMSAvKiBTZW1hbnRpYy5qcyAqLzsgfTsKKwkJMUM1MUZG
MEUyMTY2QzZBMzAwMTI4QkIxIC8qIEJ1aWx0SW5TZW1hbnRpYy5qcyBpbiBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1MUZGMDUyMTY2QzZBMjAwMTI4QkIx
IC8qIEJ1aWx0SW5TZW1hbnRpYy5qcyAqLzsgfTsKKwkJMUM1MUZGMEYyMTY2QzZBMzAwMTI4QkIx
IC8qIEZ1bmNOdW1UaHJlYWRzQXR0cmlidXRlLmpzIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzUxRkYwNjIxNjZDNkEyMDAxMjhCQjEgLyogRnVuY051
bVRocmVhZHNBdHRyaWJ1dGUuanMgKi87IH07CisJCTFDNTFGRjEwMjE2NkM2QTMwMDEyOEJCMSAv
KiBTdGFnZUluT3V0U2VtYW50aWMuanMgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDNTFGRjA3MjE2NkM2QTIwMDEyOEJCMSAvKiBTdGFnZUluT3V0U2Vt
YW50aWMuanMgKi87IH07CisJCTFDNTFGRjE2MjE2ODE3QjkwMDEyOEJCMSAvKiBVbmlmb3JtaXR5
Q2hlY2tlci5qcyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUM1MUZGMTUyMTY4MTdCODAwMTI4QkIxIC8qIFVuaWZvcm1pdHlDaGVja2VyLmpzICovOyB9
OwogCQlFOTA2QjA0NjIxMTM5Qjc3MDBBRDFDNUUgLyogSnVsaWEud2hsc2wgaW4gUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU5MDZCMDQ1MjExMzlCNzcwMEFE
MUM1RSAvKiBKdWxpYS53aGxzbCAqLzsgfTsKIAkJRTkyMUQ2MzYyMTM4QzAyNjAwNzc1MDk5IC8q
IE9wZXJhdG9yQW5kZXJJbmRleGVyLmpzIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFOTIxRDYzMjIxMzhDMDI2MDA3NzUwOTkgLyogT3BlcmF0b3JBbmRl
ckluZGV4ZXIuanMgKi87IH07CiAJCUU5MjFENjM3MjEzOEMwMjYwMDc3NTA5OSAvKiBNYXRyaXhU
eXBlLmpzIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
OTIxRDYzMzIxMzhDMDI2MDA3NzUwOTkgLyogTWF0cml4VHlwZS5qcyAqLzsgfTsKQEAgLTIxMCw2
ICsyMjAsMTYgQEAKIC8qIEVuZCBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwogCiAv
KiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKwkJMUM1MUZFRkYyMTY2QzZBMjAw
MTI4QkIxIC8qIFJlc291cmNlU2VtYW50aWMuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFz
Y3JpcHQ7IG5hbWUgPSBSZXNvdXJjZVNlbWFudGljLmpzOyBwYXRoID0gLi4vLi4vLi4vUmVzb3Vy
Y2VTZW1hbnRpYy5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MUZGMDAyMTY2
QzZBMjAwMTI4QkIxIC8qIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5qcyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgbmFtZSA9IFNwZWNpYWxpemF0aW9uQ29uc3RhbnRT
ZW1hbnRpYy5qczsgcGF0aCA9IC4uLy4uLy4uL1NwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRp
Yy5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MUZGMDEyMTY2QzZBMjAwMTI4
QkIxIC8qIEZ1bmNBdHRyaWJ1dGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7
IG5hbWUgPSBGdW5jQXR0cmlidXRlLmpzOyBwYXRoID0gLi4vLi4vLi4vRnVuY0F0dHJpYnV0ZS5q
czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MUZGMDIyMTY2QzZBMjAwMTI4QkIx
IC8qIENoZWNrTmF0aXZlRnVuY1N0YWdlcy5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNj
cmlwdDsgbmFtZSA9IENoZWNrTmF0aXZlRnVuY1N0YWdlcy5qczsgcGF0aCA9IC4uLy4uLy4uL0No
ZWNrTmF0aXZlRnVuY1N0YWdlcy5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1
MUZGMDMyMTY2QzZBMjAwMTI4QkIxIC8qIFF1YWxpZmllcnMuanMgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmphdmFzY3JpcHQ7IG5hbWUgPSBRdWFsaWZpZXJzLmpzOyBwYXRoID0gLi4vLi4vLi4vUXVh
bGlmaWVycy5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MUZGMDQyMTY2QzZB
MjAwMTI4QkIxIC8qIFNlbWFudGljLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0
OyBuYW1lID0gU2VtYW50aWMuanM7IHBhdGggPSAuLi8uLi8uLi9TZW1hbnRpYy5qczsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MUZGMDUyMTY2QzZBMjAwMTI4QkIxIC8qIEJ1aWx0
SW5TZW1hbnRpYy5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgbmFtZSA9IEJ1
aWx0SW5TZW1hbnRpYy5qczsgcGF0aCA9IC4uLy4uLy4uL0J1aWx0SW5TZW1hbnRpYy5qczsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MUZGMDYyMTY2QzZBMjAwMTI4QkIxIC8qIEZ1
bmNOdW1UaHJlYWRzQXR0cmlidXRlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0
OyBuYW1lID0gRnVuY051bVRocmVhZHNBdHRyaWJ1dGUuanM7IHBhdGggPSAuLi8uLi8uLi9GdW5j
TnVtVGhyZWFkc0F0dHJpYnV0ZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1
MUZGMDcyMTY2QzZBMjAwMTI4QkIxIC8qIFN0YWdlSW5PdXRTZW1hbnRpYy5qcyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgbmFtZSA9IFN0YWdlSW5PdXRTZW1hbnRpYy5qczsgcGF0
aCA9IC4uLy4uLy4uL1N0YWdlSW5PdXRTZW1hbnRpYy5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMUM1MUZGMTUyMTY4MTdCODAwMTI4QkIxIC8qIFVuaWZvcm1pdHlDaGVja2VyLmpz
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0gVW5pZm9ybWl0eUNoZWNr
ZXIuanM7IHBhdGggPSAuLi8uLi8uLi9Vbmlmb3JtaXR5Q2hlY2tlci5qczsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTkwNkIwNDUyMTEzOUI3NzAwQUQxQzVFIC8qIEp1bGlhLndobHNs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEp1bGlhLndobHNsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFOTIxRDYzMjIxMzhDMDI2MDA3NzUwOTkgLyogT3BlcmF0b3JBbmRlckluZGV4
ZXIuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUgPSBPcGVyYXRvckFu
ZGVySW5kZXhlci5qczsgcGF0aCA9IC4uLy4uLy4uL09wZXJhdG9yQW5kZXJJbmRleGVyLmpzOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFOTIxRDYzMzIxMzhDMDI2MDA3NzUwOTkgLyog
TWF0cml4VHlwZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgbmFtZSA9IE1h
dHJpeFR5cGUuanM7IHBhdGggPSAuLi8uLi8uLi9NYXRyaXhUeXBlLmpzOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNTY4LDYgKzU4OCw3IEBACiAJCQkJRTk1NTY5QjAyMEY1NkNENjAw
RjVDRjM0IC8qIEJyZWFrLmpzICovLAogCQkJCUU5MjFENjM0MjEzOEMwMjYwMDc3NTA5OSAvKiBC
dWlsdGluTWF0cml4R2V0dGVyLmpzICovLAogCQkJCUU5MjFENjM1MjEzOEMwMjYwMDc3NTA5OSAv
KiBCdWlsdGluTWF0cml4U2V0dGVyLmpzICovLAorCQkJCTFDNTFGRjA1MjE2NkM2QTIwMDEyOEJC
MSAvKiBCdWlsdEluU2VtYW50aWMuanMgKi8sCiAJCQkJRTk0MUFDQjkyMTM0QTVCQjAwMzkyQkE5
IC8qIEJ1aWx0aW5WZWN0b3JHZXR0ZXIuanMgKi8sCiAJCQkJRTk0MUFDQkMyMTM0QTVCQjAwMzky
QkE5IC8qIEJ1aWx0aW5WZWN0b3JTZXR0ZXIuanMgKi8sCiAJCQkJRTk1NTY5QkYyMEY1NkNENzAw
RjVDRjM0IC8qIENhbGxFeHByZXNzaW9uLmpzICovLApAQCAtNTc3LDYgKzU5OCw3IEBACiAJCQkJ
RTk1NTY5QzEyMEY1NkNENzAwRjVDRjM0IC8qIENoZWNrZXIuanMgKi8sCiAJCQkJRTk1NTY5QjYy
MEY1NkNENjAwRjVDRjM0IC8qIENoZWNrTGl0ZXJhbFR5cGVzLmpzICovLAogCQkJCUU5NTU2OUIz
MjBGNTZDRDYwMEY1Q0YzNCAvKiBDaGVja0xvb3BzLmpzICovLAorCQkJCTFDNTFGRjAyMjE2NkM2
QTIwMDEyOEJCMSAvKiBDaGVja05hdGl2ZUZ1bmNTdGFnZXMuanMgKi8sCiAJCQkJRTk0QzA2RkEy
MEY1NkNBMzAwNjcyOTkyIC8qIENoZWNrUmVjdXJzaW9uLmpzICovLAogCQkJCUU5NTU2OUJCMjBG
NTZDRDYwMEY1Q0YzNCAvKiBDaGVja1JlY3Vyc2l2ZVR5cGVzLmpzICovLAogCQkJCUU5NTU2OUIy
MjBGNTZDRDYwMEY1Q0YzNCAvKiBDaGVja1JldHVybnMuanMgKi8sCkBAIC02MTMsNyArNjM1LDkg
QEAKIAkJCQlFOTU1NjlFQjIwRjU2RDA1MDBGNUNGMzQgLyogRm9sZENvbnN0ZXhwcnMuanMgKi8s
CiAJCQkJRTlGQ0VCNUEyMEY1NkQ5MzAwOUIzNjI5IC8qIEZvckxvb3AuanMgKi8sCiAJCQkJRTlG
Q0VCNTUyMEY1NkQ5MjAwOUIzNjI5IC8qIEZ1bmMuanMgKi8sCisJCQkJMUM1MUZGMDEyMTY2QzZB
MjAwMTI4QkIxIC8qIEZ1bmNBdHRyaWJ1dGUuanMgKi8sCiAJCQkJRTk1NTY5RTgyMEY1NkQwNTAw
RjVDRjM0IC8qIEZ1bmNEZWYuanMgKi8sCisJCQkJMUM1MUZGMDYyMTY2QzZBMjAwMTI4QkIxIC8q
IEZ1bmNOdW1UaHJlYWRzQXR0cmlidXRlLmpzICovLAogCQkJCUU5NTU2OUU5MjBGNTZEMDUwMEY1
Q0YzNCAvKiBGdW5jUGFyYW1ldGVyLmpzICovLAogCQkJCUU5NTU2OUU2MjBGNTZEMDUwMEY1Q0Yz
NCAvKiBGdW5jdGlvbkxpa2VCbG9jay5qcyAqLywKIAkJCQlFOTRDMDZGQjIwRjU2Q0EzMDA2NzI5
OTIgLyogSGlnaFpvbWJpZUZpbmRlci5qcyAqLywKQEAgLTY2OSw2ICs2OTMsNyBAQAogCQkJCUU5
MkQxMDIzMjBGNTZFMkYwMEQ3NzZCMiAvKiBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uanMgKi8s
CiAJCQkJRTkyRDEwMjAyMEY1NkUyRjAwRDc3NkIyIC8qIFByb3BlcnR5UmVzb2x2ZXIuanMgKi8s
CiAJCQkJRTkyRDEwMkIyMEY1NkUzRjAwRDc3NkIyIC8qIFB0clR5cGUuanMgKi8sCisJCQkJMUM1
MUZGMDMyMTY2QzZBMjAwMTI4QkIxIC8qIFF1YWxpZmllcnMuanMgKi8sCiAJCQkJRTkyRDEwMkEy
MEY1NkUzRjAwRDc3NkIyIC8qIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uanMgKi8sCiAJCQkJ
RTkyRDEwMkMyMEY1NkUzRjAwRDc3NkIyIC8qIFJlY3Vyc2lvbkNoZWNrZXIuanMgKi8sCiAJCQkJ
RTkyRDEwMkUyMEY1NkU0MDAwRDc3NkIyIC8qIFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmpzICovLApA
QCAtNjc3LDExICs3MDIsMTUgQEAKIAkJCQlFOTJEMTAzODIwRjU2RTRGMDBENzc2QjIgLyogUmVz
b2x2ZU92ZXJsb2FkSW1wbC5qcyAqLywKIAkJCQlFOTJEMTAzNjIwRjU2RTRGMDBENzc2QjIgLyog
UmVzb2x2ZVByb3BlcnRpZXMuanMgKi8sCiAJCQkJRTkyRDEwMzcyMEY1NkU0RjAwRDc3NkIyIC8q
IFJlc29sdmVUeXBlRGVmcy5qcyAqLywKKwkJCQkxQzUxRkVGRjIxNjZDNkEyMDAxMjhCQjEgLyog
UmVzb3VyY2VTZW1hbnRpYy5qcyAqLywKIAkJCQlFOTJEMTAzRTIwRjU2RTYxMDBENzc2QjIgLyog
UmV0dXJuLmpzICovLAogCQkJCUU5MkQxMDQwMjBGNTZFNjIwMEQ3NzZCMiAvKiBSZXR1cm5DaGVj
a2VyLmpzICovLAogCQkJCUU5MkQxMDQyMjBGNTZFNjIwMEQ3NzZCMiAvKiBSZXR1cm5FeGNlcHRp
b24uanMgKi8sCiAJCQkJRTkyRDEwNDEyMEY1NkU2MjAwRDc3NkIyIC8qIFJld3JpdGVyLmpzICov
LAogCQkJCUU5RDdDQjlEMjE0QjgyQjgwMEYxQzkxOCAvKiBTYW1wbGVyLmpzICovLAorCQkJCTFD
NTFGRjA0MjE2NkM2QTIwMDEyOEJCMSAvKiBTZW1hbnRpYy5qcyAqLywKKwkJCQkxQzUxRkYwMDIx
NjZDNkEyMDAxMjhCQjEgLyogU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmpzICovLAor
CQkJCTFDNTFGRjA3MjE2NkM2QTIwMDEyOEJCMSAvKiBTdGFnZUluT3V0U2VtYW50aWMuanMgKi8s
CiAJCQkJRTkyRDEwM0YyMEY1NkU2MjAwRDc3NkIyIC8qIFN0YW5kYXJkTGlicmFyeS5qcyAqLywK
IAkJCQlFOTJEMTA0ODIwRjU2RTczMDBENzc2QjIgLyogU3RhdGVtZW50Q2xvbmVyLmpzICovLAog
CQkJCUU5MkQxMDQ5MjBGNTZFNzMwMEQ3NzZCMiAvKiBTdHJ1Y3RMYXlvdXRCdWlsZGVyLmpzICov
LApAQCAtNzA4LDYgKzczNyw3IEBACiAJCQkJRTkyRDEwNjgyMEY1NkVBNDAwRDc3NkIyIC8qIFVp
bnRMaXRlcmFsLmpzICovLAogCQkJCUU5MkQxMDY3MjBGNTZFQTQwMEQ3NzZCMiAvKiBVaW50TGl0
ZXJhbFR5cGUuanMgKi8sCiAJCQkJRTkyRDEwNzIyMEY1NkVCQjAwRDc3NkIyIC8qIFVuaWZpY2F0
aW9uQ29udGV4dC5qcyAqLywKKwkJCQkxQzUxRkYxNTIxNjgxN0I4MDAxMjhCQjEgLyogVW5pZm9y
bWl0eUNoZWNrZXIuanMgKi8sCiAJCQkJRTkyRDEwNzMyMEY1NkVCQzAwRDc3NkIyIC8qIFVucmVh
Y2hhYmxlQ29kZUNoZWNrZXIuanMgKi8sCiAJCQkJRTkyRDEwNzQyMEY1NkVCQzAwRDc3NkIyIC8q
IFZhbHVlLmpzICovLAogCQkJCUU5MkQxMDcwMjBGNTZFQkIwMEQ3NzZCMiAvKiBWYXJpYWJsZURl
Y2wuanMgKi8sCkBAIC04MjIsNiArODUyLDcgQEAKIAkJCQlFOTJEMTExRjIwRjcwNjBFMDBENzc2
QjIgLyogQnJlYWsuanMgaW4gUmVzb3VyY2VzICovLAogCQkJCUU5MjFENjM4MjEzOEMwMjYwMDc3
NTA5OSAvKiBCdWlsdGluTWF0cml4R2V0dGVyLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTIx
RDYzOTIxMzhDMDI2MDA3NzUwOTkgLyogQnVpbHRpbk1hdHJpeFNldHRlci5qcyBpbiBSZXNvdXJj
ZXMgKi8sCisJCQkJMUM1MUZGMEUyMTY2QzZBMzAwMTI4QkIxIC8qIEJ1aWx0SW5TZW1hbnRpYy5q
cyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJRTk0MUFDQ0EyMTM0QTVCQzAwMzkyQkE5IC8qIEJ1aWx0
aW5WZWN0b3JHZXR0ZXIuanMgaW4gUmVzb3VyY2VzICovLAogCQkJCUU5NDFBQ0NEMjEzNEE1QkMw
MDM5MkJBOSAvKiBCdWlsdGluVmVjdG9yU2V0dGVyLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlF
OTJEMTEyMDIwRjcwNjBFMDBENzc2QjIgLyogQ2FsbEV4cHJlc3Npb24uanMgaW4gUmVzb3VyY2Vz
ICovLApAQCAtODMxLDYgKzg2Miw3IEBACiAJCQkJRTkyRDExMjMyMEY3MDYwRTAwRDc3NkIyIC8q
IENoZWNrZXIuanMgaW4gUmVzb3VyY2VzICovLAogCQkJCUU5MkQxMTI0MjBGNzA2MEUwMEQ3NzZC
MiAvKiBDaGVja0xpdGVyYWxUeXBlcy5qcyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJRTkyRDExMjUy
MEY3MDYwRTAwRDc3NkIyIC8qIENoZWNrTG9vcHMuanMgaW4gUmVzb3VyY2VzICovLAorCQkJCTFD
NTFGRjBCMjE2NkM2QTMwMDEyOEJCMSAvKiBDaGVja05hdGl2ZUZ1bmNTdGFnZXMuanMgaW4gUmVz
b3VyY2VzICovLAogCQkJCUU5MkQxMTI2MjBGNzA2MEUwMEQ3NzZCMiAvKiBDaGVja1JlY3Vyc2lv
bi5qcyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJRTkyRDExMjcyMEY3MDYwRTAwRDc3NkIyIC8qIENo
ZWNrUmVjdXJzaXZlVHlwZXMuanMgaW4gUmVzb3VyY2VzICovLAogCQkJCUU5MkQxMTI4MjBGNzA2
MEUwMEQ3NzZCMiAvKiBDaGVja1JldHVybnMuanMgaW4gUmVzb3VyY2VzICovLApAQCAtODY4LDcg
KzkwMCw5IEBACiAJCQkJRTkyRDExNEIyMEY3MDYwRTAwRDc3NkIyIC8qIEZvbGRDb25zdGV4cHJz
LmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTE0QzIwRjcwNjBFMDBENzc2QjIgLyogRm9y
TG9vcC5qcyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJRTkyRDExNEQyMEY3MDYwRTAwRDc3NkIyIC8q
IEZ1bmMuanMgaW4gUmVzb3VyY2VzICovLAorCQkJCTFDNTFGRjBBMjE2NkM2QTMwMDEyOEJCMSAv
KiBGdW5jQXR0cmlidXRlLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTE0RTIwRjcwNjBF
MDBENzc2QjIgLyogRnVuY0RlZi5qcyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJMUM1MUZGMEYyMTY2
QzZBMzAwMTI4QkIxIC8qIEZ1bmNOdW1UaHJlYWRzQXR0cmlidXRlLmpzIGluIFJlc291cmNlcyAq
LywKIAkJCQlFOTJEMTE1MDIwRjcwNjBFMDBENzc2QjIgLyogRnVuY1BhcmFtZXRlci5qcyBpbiBS
ZXNvdXJjZXMgKi8sCiAJCQkJRTkyRDExNTEyMEY3MDYwRTAwRDc3NkIyIC8qIEZ1bmN0aW9uTGlr
ZUJsb2NrLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTE1MjIwRjcwNjBFMDBENzc2QjIg
LyogSGlnaFpvbWJpZUZpbmRlci5qcyBpbiBSZXNvdXJjZXMgKi8sCkBAIC05MjcsNiArOTYxLDcg
QEAKIAkJCQlFOTJEMTE3NzIwRjcwNjBFMDBENzc2QjIgLyogUHJvcGVydHlBY2Nlc3NFeHByZXNz
aW9uLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTE3ODIwRjcwNjBFMDBENzc2QjIgLyog
UHJvcGVydHlSZXNvbHZlci5qcyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJRTkyRDExN0QyMEY3MDYw
RTAwRDc3NkIyIC8qIFB0clR5cGUuanMgaW4gUmVzb3VyY2VzICovLAorCQkJCTFDNTFGRjBDMjE2
NkM2QTMwMDEyOEJCMSAvKiBRdWFsaWZpZXJzLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJE
MTE3RTIwRjcwNjBFMDBENzc2QjIgLyogUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5qcyBpbiBS
ZXNvdXJjZXMgKi8sCiAJCQkJRTkyRDExN0YyMEY3MDYwRTAwRDc3NkIyIC8qIFJlY3Vyc2lvbkNo
ZWNrZXIuanMgaW4gUmVzb3VyY2VzICovLAogCQkJCUU5MkQxMTgwMjBGNzA2MEUwMEQ3NzZCMiAv
KiBSZWN1cnNpdmVUeXBlQ2hlY2tlci5qcyBpbiBSZXNvdXJjZXMgKi8sCkBAIC05MzUsMTEgKzk3
MCwxNSBAQAogCQkJCUU5MkQxMTgzMjBGNzA2MEUwMEQ3NzZCMiAvKiBSZXNvbHZlT3ZlcmxvYWRJ
bXBsLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTE4NDIwRjcwNjBFMDBENzc2QjIgLyog
UmVzb2x2ZVByb3BlcnRpZXMuanMgaW4gUmVzb3VyY2VzICovLAogCQkJCUU5MkQxMTg1MjBGNzA2
MEUwMEQ3NzZCMiAvKiBSZXNvbHZlVHlwZURlZnMuanMgaW4gUmVzb3VyY2VzICovLAorCQkJCTFD
NTFGRjA4MjE2NkM2QTMwMDEyOEJCMSAvKiBSZXNvdXJjZVNlbWFudGljLmpzIGluIFJlc291cmNl
cyAqLywKIAkJCQlFOTJEMTE4NjIwRjcwNjBFMDBENzc2QjIgLyogUmV0dXJuLmpzIGluIFJlc291
cmNlcyAqLywKIAkJCQlFOTJEMTE4NzIwRjcwNjBFMDBENzc2QjIgLyogUmV0dXJuQ2hlY2tlci5q
cyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJRTkyRDExODgyMEY3MDYwRTAwRDc3NkIyIC8qIFJldHVy
bkV4Y2VwdGlvbi5qcyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJRTkyRDExODkyMEY3MDYwRTAwRDc3
NkIyIC8qIFJld3JpdGVyLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOUQ3Q0JBMzIxNEI4MkI4
MDBGMUM5MTggLyogU2FtcGxlci5qcyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJMUM1MUZGMEQyMTY2
QzZBMzAwMTI4QkIxIC8qIFNlbWFudGljLmpzIGluIFJlc291cmNlcyAqLywKKwkJCQkxQzUxRkYw
OTIxNjZDNkEzMDAxMjhCQjEgLyogU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmpzIGlu
IFJlc291cmNlcyAqLywKKwkJCQkxQzUxRkYxMDIxNjZDNkEzMDAxMjhCQjEgLyogU3RhZ2VJbk91
dFNlbWFudGljLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTE4QTIwRjcwNjBFMDBENzc2
QjIgLyogU3RhbmRhcmRMaWJyYXJ5LmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTE4QjIw
RjcwNjBFMDBENzc2QjIgLyogU3RhdGVtZW50Q2xvbmVyLmpzIGluIFJlc291cmNlcyAqLywKIAkJ
CQlFOTJEMTE4QzIwRjcwNjBFMDBENzc2QjIgLyogU3RydWN0TGF5b3V0QnVpbGRlci5qcyBpbiBS
ZXNvdXJjZXMgKi8sCkBAIC05NjYsNiArMTAwNSw3IEBACiAJCQkJRTkyRDExOUQyMEY3MDYwRTAw
RDc3NkIyIC8qIFVpbnRMaXRlcmFsLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTE5RTIw
RjcwNjBFMDBENzc2QjIgLyogVWludExpdGVyYWxUeXBlLmpzIGluIFJlc291cmNlcyAqLywKIAkJ
CQlFOTJEMTE5RjIwRjcwNjBFMDBENzc2QjIgLyogVW5pZmljYXRpb25Db250ZXh0LmpzIGluIFJl
c291cmNlcyAqLywKKwkJCQkxQzUxRkYxNjIxNjgxN0I5MDAxMjhCQjEgLyogVW5pZm9ybWl0eUNo
ZWNrZXIuanMgaW4gUmVzb3VyY2VzICovLAogCQkJCUU5MkQxMUEwMjBGNzA2MEUwMEQ3NzZCMiAv
KiBVbnJlYWNoYWJsZUNvZGVDaGVja2VyLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTFB
MTIwRjcwNjBFMDBENzc2QjIgLyogVmFsdWUuanMgaW4gUmVzb3VyY2VzICovLAogCQkJCUU5MkQx
MUEyMjBGNzA2MEUwMEQ3NzZCMiAvKiBWYXJpYWJsZURlY2wuanMgaW4gUmVzb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcwppbmRleCBjZDQ0ZDAzZmI2M2YzM2Jl
OTlkYzQ0ZGJiY2M0Y2ZhYmUyZGE4YzdiLi4xODM4MmY0MmEzNzdiNDZmZGFmMzdiMGY2Y2RkMDUx
MTg0OGE1ODNhIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJz
ZS5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcwpAQCAtMzAx
LDYgKzMwMSwxNyBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQs
IGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQog
CisgICAgZnVuY3Rpb24gcGFyc2VRdWFsaWZpZXJzKCkKKyAgICB7CisgICAgICAgIGxldCBxdWFs
aWZpZXJzID0gW107CisgICAgICAgIGxldCB0b2tlbjsKKyAgICAgICAgd2hpbGUgKHRva2VuID0g
dHJ5Q29uc3VtZSgibm9pbnRlcnBvbGF0aW9uIiwgIm5vcGVyc3BlY3RpdmUiLCAiY2VudHJvaWQi
LCAic2FtcGxlIikpCisgICAgICAgICAgICBxdWFsaWZpZXJzLnB1c2godG9rZW4pOworICAgICAg
ICBpZiAocXVhbGlmaWVycy5sZW5ndGggPT0gMCkKKyAgICAgICAgICAgIHJldHVybiBudWxsOwor
ICAgICAgICByZXR1cm4gbmV3IFF1YWxpZmllcnMocXVhbGlmaWVycyk7CisgICAgfQorCiAgICAg
ZnVuY3Rpb24gcGFyc2VUeXBlKCkKICAgICB7CiAgICAgICAgIGxldCB0b2tlbjsKQEAgLTk0Niw2
ICs5NTcsOSBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxp
bmVOdW1iZXJPZmZzZXQsIHRleHQpCiAKICAgICBmdW5jdGlvbiBwYXJzZVZhcmlhYmxlRGVjbHMo
KQogICAgIHsKKyAgICAgICAgbGV0IHVuaWZvcm1pdHkgPSB0cnlDb25zdW1lKCJ1bmlmb3JtIik7
CisgICAgICAgIGlmICh1bmlmb3JtaXR5KQorICAgICAgICAgICAgdW5pZm9ybWl0eSA9IHVuaWZv
cm1pdHkudGV4dDsKICAgICAgICAgbGV0IHR5cGUgPSBwYXJzZVR5cGUoKTsKICAgICAgICAgaWYg
KHR5cGUgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCiAgICAgICAgICAgICByZXR1cm4gdHlwZTsK
QEAgLTk1Nyw3ICs5NzEsNyBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdp
bktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgICAgICBsZXQgaW5pdGlhbGl6
ZXIgPSB0cnlDb25zdW1lKCI9IikgPyBwYXJzZUV4cHJlc3Npb24oKSA6IG51bGw7CiAgICAgICAg
ICAgICBpZiAoaW5pdGlhbGl6ZXIgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGluaXRpYWxpemVyOwotICAgICAgICAgICAgbGlzdC5wdXNoKG5ldyBWYXJp
YWJsZURlY2wobmFtZSwgbmFtZS50ZXh0LCB0eXBlLCBpbml0aWFsaXplcikpOworICAgICAgICAg
ICAgbGlzdC5wdXNoKG5ldyBWYXJpYWJsZURlY2wobmFtZSwgbmFtZS50ZXh0LCB0eXBlLCBpbml0
aWFsaXplciwgdW5pZm9ybWl0eSkpOwogICAgICAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25z
dW1lKCIsIiwgIjsiKTsKICAgICAgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5
bnRheEVycm9yKQogICAgICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwpAQCAtMTA4MSw2
ICsxMDk1LDEwIEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwg
bGluZU51bWJlck9mZnNldCwgdGV4dCkKIAogICAgIGZ1bmN0aW9uIHBhcnNlUGFyYW1ldGVyKCkK
ICAgICB7CisgICAgICAgIGxldCBxdWFsaWZpZXJzID0gcGFyc2VRdWFsaWZpZXJzKCk7CisgICAg
ICAgIGxldCB1bmlmb3JtaXR5ID0gdHJ5Q29uc3VtZSgidW5pZm9ybSIpOworICAgICAgICBpZiAo
dW5pZm9ybWl0eSkKKyAgICAgICAgICAgIHVuaWZvcm1pdHkgPSB1bmlmb3JtaXR5LnRleHQ7CiAg
ICAgICAgIGxldCB0eXBlID0gcGFyc2VUeXBlKCk7CiAgICAgICAgIGlmICh0eXBlIGluc3RhbmNl
b2YgV1N5bnRheEVycm9yKQogICAgICAgICAgICAgcmV0dXJuIHR5cGU7CkBAIC0xMDkxLDcgKzEx
MDksNyBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVO
dW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgICAgICBpZiAoc2VtYW50aWMgaW5zdGFuY2VvZiBX
U3ludGF4RXJyb3IpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbWFudGljOwogICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBuZXcgRnVuY1BhcmFtZXRlcih0eXBlLm9yaWdpbiwgbmFtZSA/IG5h
bWUudGV4dCA6IG51bGwsIHR5cGUsIHNlbWFudGljKTsKKyAgICAgICAgcmV0dXJuIG5ldyBGdW5j
UGFyYW1ldGVyKHR5cGUub3JpZ2luLCBuYW1lID8gbmFtZS50ZXh0IDogbnVsbCwgdHlwZSwgcXVh
bGlmaWVycywgdW5pZm9ybWl0eSwgc2VtYW50aWMpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHBh
cnNlUGFyYW1ldGVycygpCkBAIC0xMzc4LDYgKzEzOTYsNyBAQCBmdW5jdGlvbiBwYXJzZShwcm9n
cmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAKICAgICBm
dW5jdGlvbiBwYXJzZUZpZWxkKCkKICAgICB7CisgICAgICAgIGxldCBxdWFsaWZpZXJzID0gcGFy
c2VRdWFsaWZpZXJzKCk7CiAgICAgICAgIGxldCB0eXBlID0gcGFyc2VUeXBlKCk7CiAgICAgICAg
IGlmICh0eXBlIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQogICAgICAgICAgICAgcmV0dXJuIHR5
cGU7CkBAIC0xMzkzLDcgKzE0MTIsNyBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4s
IG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgIGxldCBtYXliZUVy
cm9yID0gY29uc3VtZSgiOyIpOwogICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdT
eW50YXhFcnJvcikKICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwotICAgICAgICByZXR1
cm4gbmV3IEZpZWxkKG5hbWUsIG5hbWUudGV4dCwgdHlwZSwgc2VtYW50aWMpOworICAgICAgICBy
ZXR1cm4gbmV3IEZpZWxkKG5hbWUsIG5hbWUudGV4dCwgdHlwZSwgcXVhbGlmaWVycywgc2VtYW50
aWMpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHBhcnNlU3RydWN0VHlwZSgpCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QcmVwYXJlLmpzIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvUHJlcGFyZS5qcwppbmRleCBkNzhmOTc0Zjg3ZTY0Zjg4ZGU2ZmEx
YzhmMDFlZWRkZjFmOGMxOTVmLi4wNTRiOWRkMDBlZjJkNGQ3YzI2YjQxMDE5NWI1Njg1NjFkOThj
M2EwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QcmVwYXJlLmpz
CisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1ByZXBhcmUuanMKQEAgLTU1LDYg
KzU1LDcgQEAgbGV0IHByZXBhcmUgPSAoKCkgPT4gewogICAgICAgICBjaGVja1R5cGVzV2l0aEFy
Z3VtZW50cyhwcm9ncmFtKTsKIAogICAgICAgICBjaGVjayhwcm9ncmFtKTsKKyAgICAgICAgY2hl
Y2tVbmlmb3Jtcyhwcm9ncmFtKTsKICAgICAgICAgY2hlY2tMaXRlcmFsVHlwZXMocHJvZ3JhbSk7
CiAgICAgICAgIHJlc29sdmVQcm9wZXJ0aWVzKHByb2dyYW0pOwogICAgICAgICBmaW5kSGlnaFpv
bWJpZXMocHJvZ3JhbSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9RdWFsaWZpZXJzLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUXVhbGlmaWVy
cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kMGQ4MzNjZTU4YmU3MGM4N2U1OWY3ODdmYWMxZjU2ZjJkOTlhZTky
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUXVhbGlm
aWVycy5qcwpAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisidXNlIHN0cmljdCI7CisKK2NsYXNzIFF1YWxpZmllcnMgZXh0ZW5kcyBO
b2RlIHsKKyAgICBjb25zdHJ1Y3Rvcih0b2tlbnMpCisgICAgeworICAgICAgICBzdXBlcigpOwor
ICAgICAgICB0aGlzLl9ub2ludGVycG9sYXRpb24gPSBudWxsOworICAgICAgICB0aGlzLl9ub3Bl
cnNwZWN0aXZlID0gbnVsbDsKKyAgICAgICAgdGhpcy5fY2VudHJvaWQgPSBudWxsOworICAgICAg
ICB0aGlzLl9zYW1wbGUgPSBudWxsOworICAgICAgICB0aGlzLl9vcmlnaW5TdHJpbmcgPSBudWxs
OworCisgICAgICAgIGlmICh0b2tlbnMubGVuZ3RoID4gMCkKKyAgICAgICAgICAgIHRoaXMuX29y
aWdpblN0cmluZyA9IHRva2Vuc1swXS5vcmlnaW5TdHJpbmc7CisKKyAgICAgICAgZm9yIChsZXQg
dG9rZW4gb2YgdG9rZW5zKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHRva2VuLnRleHQpIHsKKyAg
ICAgICAgICAgICAgICBjYXNlICJub2ludGVycG9sYXRpb24iOgorICAgICAgICAgICAgICAgICAg
ICBpZiAodGhpcy5ub2ludGVycG9sYXRpb24pCisgICAgICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm9pbnRlcnBvbGF0aW9uID0gdG9rZW47
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgIm5vcGVy
c3BlY3RpdmUiOgorICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ub3BlcnNwZWN0aXZlKQor
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIHRo
aXMuX25vcGVyc3BlY3RpdmUgPSB0b2tlbjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSAiY2VudHJvaWQiOgorICAgICAgICAgICAgICAgICAgICBpZiAo
dGhpcy5jZW50cm9pZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgICAgICAgICB0aGlzLl9jZW50cm9pZCA9IHRva2VuOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICJzYW1wbGUiOgorICAgICAgICAgICAgICAg
ICAgICBpZiAodGhpcy5zYW1wbGUpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2FtcGxlID0gdG9rZW47CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBxdWFsaWZpZXI6ICR7dG9rZW4udGV4dH1gKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGdldCBub2ludGVycG9sYXRp
b24oKSB7IHJldHVybiB0aGlzLl9ub2ludGVycG9sYXRpb247IH0KKyAgICBnZXQgbm9wZXJzcGVj
dGl2ZSgpIHsgcmV0dXJuIHRoaXMuX25vcGVyc3BlY3RpdmU7IH0KKyAgICBnZXQgY2VudHJvaWQo
KSB7IHJldHVybiB0aGlzLl9jZW50cm9pZDsgfQorICAgIGdldCBzYW1wbGUoKSB7IHJldHVybiB0
aGlzLl9zYW1wbGU7IH0KKworICAgIGdldCBpc1ZhbGlkKCkKKyAgICB7CisgICAgICAgIGlmICh0
aGlzLm5vaW50ZXJwb2xhdGlvbiAmJiB0aGlzLm5vcGVyc3BlY3RpdmUpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICh0aGlzLmNlbnRyb2lkICYmIHRoaXMuc2FtcGxlKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisK
KyAgICBnZXQgdG9rZW5zKCkKKyAgICB7CisgICAgICAgIHJldHVybiBbdGhpcy5ub2ludGVycG9s
YXRpb24sIHRoaXMubm9wZXJzcGVjdGl2ZSwgdGhpcy5jZW50cm9pZCwgdGhpcy5zYW1wbGVdLmZp
bHRlcih4ID0+IHgpOworICAgIH0KKworICAgIGdldCBsZW5ndGgoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMudG9rZW5zLmxlbmd0aDsKKyAgICB9CisKKyAgICBnZXQgb3JpZ2luU3RyaW5n
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9vcmlnaW5TdHJpbmc7CisgICAgfQorCisg
ICAgdG9TdHJpbmcoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudG9rZW5zLm1hcCh4ID0+
IHgudGV4dCkuam9pbigiICIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1Jld3JpdGVyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvUmV3cml0ZXIuanMKaW5kZXggNDhjNjk3ODhlYzY4OThlYzA3M2ZjMjE1ZjNhYTEzNzUwYmVj
MDg1NC4uOTNhOGY2MTU0MTU1NWI3ZDc3M2FmMmFhOTk1ZjA4ZTFjNjRlNGE4NCAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMKKysrIGIvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMKQEAgLTYwLDcgKzYwLDExIEBAIGNs
YXNzIFJld3JpdGVyIHsKICAgICAKICAgICB2aXNpdEZ1bmNQYXJhbWV0ZXIobm9kZSkKICAgICB7
Ci0gICAgICAgIGxldCByZXN1bHQgPSBuZXcgRnVuY1BhcmFtZXRlcihub2RlLm9yaWdpbiwgbm9k
ZS5uYW1lLCBub2RlLnR5cGUudmlzaXQodGhpcyksIE5vZGUudmlzaXQobm9kZS5zZW1hbnRpYywg
dGhpcykpOworICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IEZ1bmNQYXJhbWV0ZXIobm9kZS5vcmln
aW4sIG5vZGUubmFtZSwKKyAgICAgICAgICAgIG5vZGUudHlwZS52aXNpdCh0aGlzKSwKKyAgICAg
ICAgICAgIE5vZGUudmlzaXQobm9kZS5xdWFsaWZpZXJzLCB0aGlzKSwKKyAgICAgICAgICAgIG5v
ZGUudW5pZm9ybWl0eSwKKyAgICAgICAgICAgIE5vZGUudmlzaXQobm9kZS5zZW1hbnRpYywgdGhp
cykpOwogICAgICAgICB0aGlzLl9tYXBOb2RlKG5vZGUsIHJlc3VsdCk7CiAgICAgICAgIHJlc3Vs
dC5lUHRyID0gbm9kZS5lUHRyOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNzEsNyArNzUs
OCBAQCBjbGFzcyBSZXdyaXRlciB7CiAgICAgICAgIGxldCByZXN1bHQgPSBuZXcgVmFyaWFibGVE
ZWNsKAogICAgICAgICAgICAgbm9kZS5vcmlnaW4sIG5vZGUubmFtZSwKICAgICAgICAgICAgIG5v
ZGUudHlwZS52aXNpdCh0aGlzKSwKLSAgICAgICAgICAgIE5vZGUudmlzaXQobm9kZS5pbml0aWFs
aXplciwgdGhpcykpOworICAgICAgICAgICAgTm9kZS52aXNpdChub2RlLmluaXRpYWxpemVyLCB0
aGlzKSwKKyAgICAgICAgICAgIG5vZGUudW5pZm9ybWl0eSk7CiAgICAgICAgIHRoaXMuX21hcE5v
ZGUobm9kZSwgcmVzdWx0KTsKICAgICAgICAgcmVzdWx0LmVQdHIgPSBub2RlLmVQdHI7CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CkBAIC0xMDUsNyArMTEwLDcgQEAgY2xhc3MgUmV3cml0ZXIgewog
ICAgIAogICAgIHZpc2l0RmllbGQobm9kZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgRmll
bGQobm9kZS5vcmlnaW4sIG5vZGUubmFtZSwgbm9kZS50eXBlLnZpc2l0KHRoaXMpLCBOb2RlLnZp
c2l0KG5vZGUuc2VtYW50aWMsIHRoaXMpKTsKKyAgICAgICAgcmV0dXJuIG5ldyBGaWVsZChub2Rl
Lm9yaWdpbiwgbm9kZS5uYW1lLCBub2RlLnR5cGUudmlzaXQodGhpcyksIE5vZGUudmlzaXQobm9k
ZS5xdWFsaWZpZXJzLCB0aGlzKSwgTm9kZS52aXNpdChub2RlLnNlbWFudGljLCB0aGlzKSk7CiAg
ICAgfQogICAgIAogICAgIHZpc2l0RW51bU1lbWJlcihub2RlKQpAQCAtNDIwLDUgKzQyNSwxMCBA
QCBjbGFzcyBSZXdyaXRlciB7CiAgICAgewogICAgICAgICByZXR1cm4gbmV3IFNwZWNpYWxpemF0
aW9uQ29uc3RhbnRTZW1hbnRpYyhub2RlLm9yaWdpbik7CiAgICAgfQorCisgICAgdmlzaXRRdWFs
aWZpZXJzKG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFF1YWxpZmllcnMobm9kZS50
b2tlbnMpOworICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvU1BJUlYuaHRtbCBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0
bWwKaW5kZXggY2E0NTBmNzZlNDgzMTFlMGQ2NzVjZGJiZWM2YmJmYjRhNTE0NmEyOS4uYjZmNDk3
ZWI2ZjkyNjlhMDdiMTRjZTk5YjkxNjJiZjJhOTZkMmUwOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRtbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9TUElSVi5odG1sCkBAIC0xMTgsNiArMTE4LDcgQEAgdGQgewogICAgIDxzY3Jp
cHQgc3JjPSJQcm9ncmFtLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUHJvZ3JhbVdp
dGhVbm5lY2Vzc2FyeVRoaW5nc1JlbW92ZWQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJQdHJUeXBlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iUXVhbGlmaWVycy5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJSZWN1cnNpb25DaGVja2VyLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iUmVjdXJzaXZlVHlwZUNoZWNrZXIuanMiPjwvc2NyaXB0PgpA
QCAtMTU1LDYgKzE1Niw3IEBAIHRkIHsKICAgICA8c2NyaXB0IHNyYz0iVWludExpdGVyYWwuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJVaW50TGl0ZXJhbFR5cGUuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJVbmlmaWNhdGlvbkNvbnRleHQuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSJVbmlmb3JtaXR5Q2hlY2tlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9IlVucmVhY2hhYmxlQ29kZUNoZWNrZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJWYXJpYWJsZURlY2wuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWYXJpYWJs
ZVJlZi5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9UZXN0Lmh0bWwgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwK
aW5kZXggYTIwMzE1MmU4ZDZkNDVkNzk1NDkwN2FjM2RiNTE5ODYzYjFhNGVjZS4uZmEwZmQ3NGVi
NmM0MTZlNTRjMmM3OTk3MjY2MDU2MDlhY2I1Mzk0NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1Rlc3QuaHRtbApAQCAtMTEyLDYgKzExMiw3IEBACiA8c2NyaXB0IHNyYz0iUHJvZ3Jh
bS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUHJvZ3JhbVdpdGhVbm5lY2Vzc2FyeVRoaW5n
c1JlbW92ZWQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlB0clR5cGUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9IlF1YWxpZmllcnMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlJl
YWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlJlY3Vy
c2lvbkNoZWNrZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlJlY3Vyc2l2ZVR5cGVDaGVj
a2VyLmpzIj48L3NjcmlwdD4KQEAgLTE0OSw2ICsxNTAsNyBAQAogPHNjcmlwdCBzcmM9IlVpbnRM
aXRlcmFsLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJVaW50TGl0ZXJhbFR5cGUuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9IlVuaWZpY2F0aW9uQ29udGV4dC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iVW5pZm9ybWl0eUNoZWNrZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
IlVucmVhY2hhYmxlQ29kZUNoZWNrZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlZhcmlh
YmxlRGVjbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iVmFyaWFibGVSZWYuanMiPjwvc2Ny
aXB0PgpAQCAtMTY2LDcgKzE2OCw3IEBACiA8c2NyaXB0PgogZnVuY3Rpb24gZG9UZXN0SW5Ccm93
c2VyKCkKIHsKLSAgICB2YXIgdGVzdGVyID0gZG9UZXN0KC8uKi8pOworICAgIHZhciB0ZXN0ZXIg
PSBkb1Rlc3QoL2luY29tcGF0aWJsZVF1YWxpZmllcnMvKTsKICAgICB2YXIgbGFzdFRpbWU7CiAg
ICAgZnVuY3Rpb24gbmV4dCgpCiAgICAgewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvVGVzdC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3Qu
anMKaW5kZXggMDc3YjEzN2I1YzY1NWE0NTliNWY5NTdkNDlkNWUzZjZjZmZmNDBlNi4uZWYyM2Vi
NzQ2ZDJhZGExMjU2YmRiNDcxOTM2N2NmNWNlYTk5MGFiZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9UZXN0LmpzCkBAIC05NDUzLDIzICs5NDUzLDYgQEAgdGVzdHMucmVmZXJlbmNlRXF1
YWxpdHkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVy
cm9yKTsKIH0KIAotdGVzdHMuY29tbWVudFBhcnNpbmcgPSBmdW5jdGlvbigpIHsKLSAgICBsZXQg
cHJvZ3JhbSA9IGRvUHJlcChgCi0gICAgICAgIC8qIHRoaXMgY29tbWVudAotICAgICAgICBydW5z
IG92ZXIgbXVsdGlwbGUgbGluZXMgKi8KLSAgICAgICAgdGVzdCBib29sIGZvbygpIHsgcmV0dXJu
IHRydWU7IH0KLSAgICBgKTsKLSAgICBjaGVja0Jvb2wocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28iLCBbXSksIHRydWUpOwotCi0gICAgY2hlY2tGYWlsKAotICAgICAgICAoKSA9
PiBkb1ByZXAoYAotICAgICAgICAvKiB0aGlzIGNvbW1lbnQKLSAgICAgICAgcnVucyBvdmVyIG11
bHRpcGxlIGxpbmVzCi0gICAgICAgIGJvb2wgZm9vKCkgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAg
ICBgKSwKLSAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXTGV4aWNhbEVycm9yKTsKLX0KLQog
dGVzdHMuY2FsbEFyZ3VtZW50c0FyZUNvcGllZEltbWVkaWF0ZWx5QWZ0ZXJFdmFsdWF0aW9uID0g
KCkgPT4gewogICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKICAgICAgICAgdGVzdCBpbnQgZm9v
KCkKQEAgLTk3OTAsNyArOTc3Myw4IEBAIHRlc3RzLnNldHRpbmdBbkFycmF5SW5zaWRlQVN0cnVj
dCA9IGZ1bmN0aW9uKCkKICAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbyIsIFtdKSwgMjEpOwogfQogCi10ZXN0cy50cmFwQmVjYXVzZU9mSW5kZXhBY2Vzc3Mg
PSAoKSA9PiB7Cit0ZXN0cy50cmFwQmVjYXVzZU9mSW5kZXhBY2Vzc3MgPSBmdW5jdGlvbigpCit7
CiAgICAgY29uc3QgcHJvZ3JhbSA9IGRvUHJlcChgCiAgICAgICAgIHRlc3QgaW50IGZvbygpCiAg
ICAgICAgIHsKQEAgLTk4MDIsNyArOTc4Niw4IEBAIHRlc3RzLnRyYXBCZWNhdXNlT2ZJbmRleEFj
ZXNzcyA9ICgpID0+IHsKICAgICBjaGVja1RyYXAocHJvZ3JhbSwgKCkgPT4gY2FsbEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbXSksIGNoZWNrSW50KTsKIH0KIAotdGVzdHMudHJhcFRyYW5zaXRp
dmVseSA9ICgpID0+IHsKK3Rlc3RzLnRyYXBUcmFuc2l0aXZlbHkgPSBmdW5jdGlvbigpCit7CiAg
ICAgY29uc3QgcHJvZ3JhbSA9IGRvUHJlcChgCiAgICAgICAgIHRlc3QgaW50IGZvbygpCiAgICAg
ICAgIHsKQEAgLTk4MjMsNiArOTgwOCw3MSBAQCB0ZXN0cy50cmFwVHJhbnNpdGl2ZWx5ID0gKCkg
PT4gewogICAgIGNoZWNrVHJhcChwcm9ncmFtLCAoKSA9PiBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwg
ImZvbyIsIFtdKSwgY2hlY2tJbnQpOwogfTsKIAordGVzdHMuaW5jb21wYXRpYmxlUXVhbGlmaWVy
cyA9IGZ1bmN0aW9uKCkKK3sKKyAgICBkb1ByZXAoYAorICAgICAgICBzdHJ1Y3QgRm9vIHsKKyAg
ICAgICAgICAgIG5vaW50ZXJwb2xhdGlvbiBpbnQgeDsKKyAgICAgICAgICAgIG5vcGVyc3BlY3Rp
dmUgaW50IHk7CisgICAgICAgICAgICBjZW50cm9pZCBpbnQgejsKKyAgICAgICAgICAgIHNhbXBs
ZSBpbnQgdzsKKyAgICAgICAgICAgIG5vaW50ZXJwb2xhdGlvbiBjZW50cm9pZCBpbnQgcDsKKyAg
ICAgICAgICAgIG5vaW50ZXJwb2xhdGlvbiBzYW1wbGUgaW50IHE7CisgICAgICAgICAgICBub3Bl
cnNwZWN0aXZlIGNlbnRyb2lkIGludCByOworICAgICAgICAgICAgbm9wZXJzcGVjdGl2ZSBzYW1w
bGUgaW50IHM7CisgICAgICAgIH0KKyAgICAgICAgdGVzdCB2b2lkIGJhcihub2ludGVycG9sYXRp
b24gaW50IHgsIG5vcGVyc3BlY3RpdmUgaW50IHksIGNlbnRyb2lkIGludCB6LCBzYW1wbGUgaW50
IHcsIG5vaW50ZXJwb2xhdGlvbiBjZW50cm9pZCBpbnQgcCwgbm9pbnRlcnBvbGF0aW9uIHNhbXBs
ZSBpbnQgcSwgbm9wZXJzcGVjdGl2ZSBjZW50cm9pZCBpbnQgciwgbm9wZXJzcGVjdGl2ZSBzYW1w
bGUgaW50IHMpIHsKKyAgICAgICAgfQorICAgIGApCisgICAgY2hlY2tGYWlsKAorICAgICAgICAo
KSA9PiBkb1ByZXAoYAorICAgICAgICAgICAgc3RydWN0IEZvbyB7CisgICAgICAgICAgICAgICAg
bm9pbnRlcnBvbGF0aW9uIG5vcGVyc3BlY3RpdmUgaW50IHg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICB0ZXN0IHZvaWQgYmFyKCkgeworICAgICAgICAgICAgfQorICAgICAgICBgKSwKKyAg
ICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICBjaGVja0ZhaWwoCisg
ICAgICAgICgpID0+IGRvUHJlcChgCisgICAgICAgICAgICBzdHJ1Y3QgRm9vIHsKKyAgICAgICAg
ICAgICAgICBjZW50cm9pZCBzYW1wbGUgaW50IHg7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICB0ZXN0IHZvaWQgYmFyKCkgeworICAgICAgICAgICAgfQorICAgICAgICBgKSwKKyAgICAgICAg
KGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICBjaGVja0ZhaWwoCisgICAgICAg
ICgpID0+IGRvUHJlcChgCisgICAgICAgICAgICB0ZXN0IHZvaWQgZm9vKG5vaW50ZXJwb2xhdGlv
biBub3BlcnNwZWN0aXZlIGludCB4KSB7CisgICAgICAgICAgICB9CisgICAgICAgIGApLAorICAg
ICAgICAoZSkgPT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IpOworICAgIGNoZWNrRmFpbCgKKyAg
ICAgICAgKCkgPT4gZG9QcmVwKGAKKyAgICAgICAgICAgIHRlc3Qgdm9pZCBmb28oY2VudHJvaWQg
c2FtcGxlIGludCB4KSB7CisgICAgICAgICAgICB9CisgICAgICAgIGApLAorICAgICAgICAoZSkg
PT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IpOworfQorCit0ZXN0cy5jb21tZW50UGFyc2luZyA9
IGZ1bmN0aW9uKCkgeworICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKKyAgICAgICAgLyogdGhp
cyBjb21tZW50CisgICAgICAgIHJ1bnMgb3ZlciBtdWx0aXBsZSBsaW5lcyAqLworICAgICAgICB0
ZXN0IGJvb2wgZm9vKCkgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGApOworICAgIGNoZWNrQm9vbChw
cm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgdHJ1ZSk7CisKKyAgICBj
aGVja0ZhaWwoCisgICAgICAgICgpID0+IGRvUHJlcChgCisgICAgICAgIC8qIHRoaXMgY29tbWVu
dAorICAgICAgICBydW5zIG92ZXIgbXVsdGlwbGUgbGluZXMKKyAgICAgICAgYm9vbCBmb28oKSB7
IHJldHVybiB0cnVlOyB9CisgICAgICAgIGApLAorICAgICAgICAoZSkgPT4gZSBpbnN0YW5jZW9m
IFdMZXhpY2FsRXJyb3IpOworfQorCiBva1RvVGVzdCA9IHRydWU7CiAKIGxldCB0ZXN0RmlsdGVy
ID0gLy4qLzsgLy8gcnVuIGV2ZXJ5dGhpbmcgYnkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVW5pZm9ybWl0eUNoZWNrZXIuanMgYi9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9Vbmlmb3JtaXR5Q2hlY2tlci5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YjM4
NzIwMmFhZTE4M2Y4NWU1OTZhYzU2OWEyOTkzOTJmNjRlY2ZjCi0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVW5pZm9ybWl0eUNoZWNrZXIuanMKQEAgLTAs
MCArMSwyNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
InVzZSBzdHJpY3QiOworCitmdW5jdGlvbiBjaGVja1VuaWZvcm1zKHByb2dyYW0pCit7CisgICAg
Ly8gVmFyaWFibGVEZWNscyBhbmQgRnVuY1BhcmFtZXRlcnMgaGF2ZSB0aGUgY29uY2VwdCBvZiB1
bmlmb3JtaXR5LgorICAgIC8vIFdpdGhvdXQgc3BlY2lmeWluZyB0aGUgInVuaWZvcm0iIGtleXdv
cmQsIHVuaWZvcm1pdHkgaXMgaW5mZXJyZWQgZm9yIGV2ZXJ5IFZhcmlhYmxlRGVjbCBhbmQgRnVu
Y1BhcmFtZXRlciBpbiBhIGNvbnRleHQtc2Vuc2l0aXZlIG1hbm5lci4KKyAgICAvLyBDb25zaWRl
cjoKKyAgICAvLyBpbnQgZm9vKGludCB4KSB7CisgICAgLy8gICAgIHJldHVybiB4ICsgMjsKKyAg
ICAvLyB9CisgICAgLy8gLi4uCisgICAgLy8gdW5pZm9ybSBpbnQgeSA9IGZvbyg3KTsKKyAgICAv
LyBpbnQgeiA9IGZvbyh0aWQpOyAvLyBOb3QgdW5pZm9ybSEKKyAgICAvLworICAgIC8vIFdoZW4g
Zm9vKCkgaXMgY2FsbGVkIHdpdGggNywgd2UgZGV0ZXJtaW5lIHRoYXQgdGhlIGZ1bmN0aW9uJ3Mg
cmV0dXJuIHR5cGUgaXMgdW5pZm9ybSwgc28gYXNzaWduaW5nIHRoZSByZXN1bHQgdG8gYSB1bmlm
b3JtIHZhcmlhYmxlIGlzIGxlZ2FsLgorICAgIC8vIEhvd2V2ZXIsIHdoZW4gZm9vKCkgaXMgY2Fs
bGVkIHdpdGggdGlkLCB3ZSBkZXRlcm1pbmUgdGhhdCB0aGUgZnVuY3Rpb24ncyByZXR1cm4gdHlw
ZSBpcyBub251bmlmb3JtLCBzbyBhc3NpZ25pbmcgdGhlIHJlc3VsdCB0byBhIHVuaWZvcm0gdmFy
aWFibGUgaXMgaWxsZWdhbC4KKyAgICAvLyBXaGVuIHdlIGVtaXQgY29kZSwgd2Ugd2lsbCBzcGVj
aWFsaXplIGVhY2ggV0hMU0wgZnVuY3Rpb24gdG8gcG90ZW50aWFsbHkgbXVsdGlwbGUgb3VwdXR0
ZWQgZnVuY3Rpb25zLCBlYWNoIHdpdGggYSBkaWZmZXJlbnQgY29tYmluYXRpb24gb2YgdW5pZm9y
bWl0eSBmb3IgZWFjaCBwYXJhbWV0ZXIuCisKKyAgICAvLyBXZSBpbmZlciB3aGljaCBWYXJpYWJs
ZURlY2xzIGFuZCBGdW5jUGFyYW1ldGVycyBhcmUgdW5pZm9ybSBieSB1c2luZyB0aGUgZm9sbG93
aW5nIGFsZ29yaXRobS4KKyAgICAvLyBGaXJzdCwgYnVpbGQgYSBncmFwaC4gVGhlIG5vZGVzIGlu
IHRoaXMgZ3JhcGggYXJlIFZhcmlhYmxlRGVjbHMgYW5kIEZ1bmNQYXJhbWV0ZXJzLgorICAgIC8v
IEJlY2F1c2Ugb2YgdGhlIGNvbnRleHQtc2Vuc2l0aXZpdHksIGEgc2luZ2xlIFZhcmlhYmxlRGVj
bCBhbmQgRnVuY1BhcmFtZXRlciBtYXkgYXBwZWFyIGFzIG11bHRpcGxlIG5vZGVzIGluIHRoZSBn
cmFwaCwgZGVwZW5kaW5nIG9uIGhvdyBpdCB3YXMgcmVhY2hlZC4KKyAgICAvLyBBZGRpdGlvbmFs
IG5vZGVzIGFyZSBhbHNvIGFkZGVkIGZvcjoKKyAgICAvLyAgICAgRnVuY3Rpb25zLCB3aGVyZSB0
aGUgbm9kZSByZXByZXNlbnRzIHdoZXRoZXIgdGhlIHJldHVybiB2YWx1ZSBpcyB1bmlmb3JtCisg
ICAgLy8gICAgIEFkZGl0aW9uYWwgdmFyaWFibGUgc2NvcGVzIChlLmcuIEZ1bmN0aW9uIGJvZGll
cywgbG9vcHMsIGNvbmRpdGlvbmFscywgZXRjLiksIHdoZXJlIHRoZSBub2RlIHJlcHJlc2VudHMg
d2hldGhlciB0aGUgc2NvcGUgaXMgdW5pZm9ybSBjb250cm9sIGZsb3cKKyAgICAvLyBUaGUgZWRn
ZXMgaW4gdGhlIGdyYXBoIHJlcHJlc2VudCBjb25zdHJhaW50cyBvZiB0aGUgZm9ybSAiQSBpcyBh
ZGphY2VudCB0byBCIGlmZiBBIGJlaW5nIG5vbnVuaWZvcm0gcmVxdWlyZXMgQiBhbHNvIGJlaW5n
IG5vbnVuaWZvcm0uIgorICAgIC8vIEVkZ2VzIGFyZSBhZGRlZCBpbiB0aGUgZm9sbG93aW5nIGNh
c2VzOgorICAgIC8vICAgICBBc3NpZ25tZW50IG9wZXJhdGlvbnMsIGZyb20gZXZlcnkgVmFyaWFi
bGVSZWYgb24gdGhlIFJIUyB0byBldmVyeSBWYXJpYWJsZVJlZiBvbiB0aGUgTEhTIC8vIFRoaXMg
aXNuJ3QgcXVpdGUgcmlnaHQsIGNvbnNpZGVyIGFycmF5W3RpZF0gPSA3LCBhbHNvIGNvbnNpZGVy
IHkgPSBmb28oeCwgdW51c2VkKQorICAgIC8vICAgICBBc3NpZ25tZW50IG9wZXJhdGlvbnMsIGZy
b20gdGhlIGlubmVybW9zdCBzY29wZSdzIHByZWRpY2F0ZSB0byBldmVyeSB2YXJpYWJsZSBvbiB0
aGUgTEhTCisgICAgLy8gICAgIEJyZWFrICYgY29udGludWUsIGZyb20gdGhlIGlubmVybW9zdCBz
Y29wZSB0byB0aGUgaW5uZXJtb3N0IGxvb3AKKyAgICAvLyAgICAgUmV0dXJuLCBmcm9tIHRoZSBp
bm5lcm1vc3Qgc2NvcGUgdG8gdGhlIGZ1bmN0aW9uCisgICAgLy8gICAgIFJldHVybiwgZnJvbSBl
dmVyeSBWYXJpYWJsZVJlZiBpbiB0aGUgZXhwcmVzc2lvbiB0byB0aGUgZnVuY3Rpb24gY2FsbCBp
dHNlbGYKKyAgICAvLyBUaGVuLCBtYXJrIGV2ZXJ5IG5vZGUgaW4gdGhlIGdyYXBoIGFzIHVuaWZv
cm0gZXhjZXB0IGZvciB2YXJpYWJsZXMgdGhhdCBhcmUgZXhwbGljaXRseSBub251bmlmb3JtLCBs
aWtlIHRpZC4KKyAgICAvLyBTdGFydGluZyBmcm9tIHRob3NlIHJvb3RzLCBmbG9vZC1maWxsIHRo
ZSBncmFwaCwgbWFraW5nIHRoZSBub251bmlmb3JtaXR5IHNwcmVhZCB0cmFuc2l0aXZlbHkgdGhy
b3VnaCB0aGUgYWRqYWNlbnQgbm9kZXMsIHVudGlsIGl0IGNhbiBzcHJlYWQgbm8gbG9uZ2VyLgor
ICAgIC8vIFdlIG5vdyBrbm93LCBmb3IgZXZlcnkgc2NvcGUsIHdoZXRoZXIgaXQgaXMgdW5pZm9y
bSBjb250cm9sIGZsb3csIGFuZCBmb3IgZXZlcnkgVmFyaWFibGVEZWNsIGFuZCBGdW5jUGFyYW1l
dGVyLCB3aGV0aGVyIGl0IGlzIHVuaWZvcm0uCisgICAgLy8gV2UgY2FuIG5vdyBlbmZvcmNlIG91
ciB2YXJpb3VzIHJlc3RyaWN0aW9ucyAoc3VjaCBhcyAibm9udW5pZm9ybSB2YXJpYWJsZXMgY2Fu
J3QgYmUgbWFya2VkIGJ5IHRoZSBhdXRob3IgYXMgdW5pZm9ybSIpIGluIGEgbmV3IHBhc3MuCisK
KyAgICBjbGFzcyBHcmFwaEJ1aWxkZXIgZXh0ZW5kcyBWaXNpdG9yIHsKKyAgICAgICAgY29uc3Ry
dWN0b3IoKQorICAgICAgICB7CisgICAgICAgICAgICBzdXBlcigpOworICAgICAgICAgICAgdGhp
cy5fZWRnZXMgPSBuZXcgTWFwKCk7IC8vIEdyYXBoTm9kZSA9PiBbR3JhcGhOb2RlXQorICAgICAg
ICAgICAgdGhpcy5fcmVzdWx0ID0gbmV3IE1hcCgpOyAvLyBGdW5jRGVmID0+IChbR3JhcGhOb2Rl
XSwgQVNUTm9kZSA9PiBHcmFwaE5vZGUpCisgICAgICAgIH0KKworICAgICAgICBnZXQgZWRnZXMo
KSB7IHJldHVybiB0aGlzLl9lZGdlczsgfQorICAgICAgICBnZXQgcmVzdWx0KCkgeyByZXR1cm4g
dGhpcy5fcmVzdWx0OyB9CisKKyAgICAgICAgX2FsbG9jYXRlR3JhcGhOb2RlKCkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIHRoaXMuX25vZGVDb3VudCsrOworICAgICAgICB9CisKKyAg
ICAgICAgX3B1c2hDb250cm9sRmxvdyhub2RlKQorICAgICAgICB7CisgICAgICAgICAgICB0aGlz
Ll9jb250cm9sRmxvd1N0YWNrLnB1c2gobm9kZSk7CisgICAgICAgIH0KKworICAgICAgICBjcmVh
dGVQYXJhbWV0ZXJHcmFwaE5vZGVzKGZ1bmMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxldCBy
ZXN1bHQgPSBbXTsKKyAgICAgICAgICAgIGZvciAobGV0IHBhcmFtZXRlciBvZiBub2RlLnBhcmFt
ZXRlcnMpCisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh0aGlzLl9hbGxvY2F0ZUdyYXBo
Tm9kZSgpKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAg
ICB2aXNpdEZ1bmNQYXJhbWV0ZXIobm9kZSkKKyAgICAgICAgeworICAgICAgICAgICAgc3VwZXIu
dmlzaXRGdW5jUGFyYW1ldGVyKG5vZGUpOworICAgICAgICAgICAgbGV0IGdyYXBoTm9kZSA9IHRo
aXMuX2FsbG9jYXRlTm9kZSgpOworICAgICAgICAgICAgdGhpcy5fZ3JhcGhBc3NvY2lhdGlvbi5z
ZXQobm9kZSwgZ3JhcGhOb2RlKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpc2l0RnVuY0RlZihu
b2RlKQorICAgICAgICB7CisgICAgICAgICAgICBzdXBlci52aXNpdEZ1bmNEZWYobm9kZSk7Cisg
ICAgICAgICAgICBsZXQgZ3JhcGhOb2RlID0gdGhpcy5fYWxsb2NhdGVOb2RlKCk7CisgICAgICAg
ICAgICB0aGlzLl9ncmFwaEFzc29jaWF0aW9uLnNldChub2RlLCBncmFwaE5vZGUpOworICAgICAg
ICB9CisKKyAgICAgICAgdmlzaXROYXRpdmVGdW5jKG5vZGUpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KKyAgICAgICAgfQorCisgICAgICAgIHZpc2l0
VmFyaWFibGVEZWNsKG5vZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN1cGVyLnZpc2l0VmFy
aWFibGVEZWNsKG5vZGUpOworICAgICAgICAgICAgbGV0IGdyYXBoTm9kZSA9IHRoaXMuX2FsbG9j
YXRlTm9kZSgpOworICAgICAgICAgICAgdGhpcy5fZ3JhcGhBc3NvY2lhdGlvbi5zZXQobm9kZSwg
Z3JhcGhOb2RlKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpc2l0QXNzaWdubWVudChub2RlKQor
ICAgICAgICB7CisgICAgICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAgICAg
IH0KKworICAgICAgICB2aXNpdFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24obm9kZSkKKyAgICAg
ICAgeworICAgICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgICAgICB9CisK
KyAgICAgICAgdmlzaXRUZXJuYXJ5RXhwcmVzc2lvbihub2RlKQorICAgICAgICB7CisgICAgICAg
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAgICAgIH0KKworICAgICAgICB2aXNp
dFZhcmlhYmxlUmVmKG5vZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgdGhpcy4KKyAgICAgICAgfQorCisgICAgICAgIHZpc2l0SWZTdGF0ZW1lbnQobm9kZSkK
KyAgICAgICAgeworICAgICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgICAg
ICB9CisgICAgCisgICAgICAgIHZpc2l0V2hpbGVMb29wKG5vZGUpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgdmlzaXREb1doaWxlTG9vcChub2RlKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZpc2l0
Rm9yTG9vcChub2RlKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50
IHRoaXMuCisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZpc2l0U3dpdGNoU3RhdGVtZW50
KG5vZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4K
KyAgICAgICAgfQorCisgICAgICAgIHZpc2l0UmV0dXJuKG5vZGUpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KKyAgICAgICAgfQorCisgICAgICAgIHZp
c2l0Q29udGludWUobm9kZSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gRklYTUU6IEltcGxl
bWVudCB0aGlzLgorICAgICAgICB9CisKKyAgICAgICAgdmlzaXRCcmVhayhub2RlKQorICAgICAg
ICB7CisgICAgICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAgICAgIH0KKwor
ICAgICAgICB2aXNpdFRyYXBTdGF0ZW1lbnQobm9kZSkKKyAgICAgICAgeworICAgICAgICAgICAg
Ly8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgICAgICB9CisgICAgCisgICAgICAgIHZpc2l0
R2VuZXJpY0xpdGVyYWwobm9kZSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gRklYTUU6IElt
cGxlbWVudCB0aGlzLgorICAgICAgICB9CisgICAgCisgICAgICAgIHZpc2l0TnVsbExpdGVyYWwo
bm9kZSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgor
ICAgICAgICB9CisgICAgCisgICAgICAgIHZpc2l0Qm9vbExpdGVyYWwobm9kZSkKKyAgICAgICAg
eworICAgICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgICAgICB9CisgICAg
CisgICAgICAgIHZpc2l0QW5vbnltb3VzVmFyaWFibGUobm9kZSkKKyAgICAgICAgeworICAgICAg
ICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgICAgICB9CisKKyAgICAgICAgdmlz
aXRDYWxsRXhwcmVzc2lvbihub2RlKQorICAgICAgICB7CisgICAgICAgICAgICBzdXBlci52aXNp
dENhbGxFeHByZXNzaW9uKG5vZGUpOworICAgICAgICAgICAgbGV0IGdyYXBoTm9kZSA9IHRoaXMu
X2FsbG9jYXRlTm9kZSgpOworICAgICAgICAgICAgdGhpcy5fZ3JhcGhBc3NvY2lhdGlvbi5zZXQo
bm9kZSwgZ3JhcGhOb2RlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIHBvbGx1
dGUoZWRnZXMsIGdyYXBoTm9kZSkKKyAgICB7CisgICAgICAgIGxldCByZXN1bHQgPSBuZXcgU2V0
KCk7CisgICAgICAgIGxldCB3b3JrTGlzdCA9IFtncmFwaE5vZGVdOworICAgICAgICB3aGlsZSAo
d29ya0xpc3QubGVuZ3RoICE9IDApIHsKKyAgICAgICAgICAgIGxldCB3b3JrSXRlbSA9IHdvcmtM
aXN0LnNoaWZ0KCk7CisgICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXMod29ya0l0ZW0pKSB7Cisg
ICAgICAgICAgICAgICAgcmVzdWx0LmFkZCh3b3JrSXRlbSk7CisgICAgICAgICAgICAgICAgaWYg
KGVkZ2VzLmhhcyh3b3JrSXRlbSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgYWRq
YWNlbnROb2RlIG9mIGVkZ2VzLmdldCh3b3JrSXRlbSkpCisgICAgICAgICAgICAgICAgICAgICAg
ICB3b3JrTGlzdC5wdXNoKGFkamFjZW50Tm9kZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gc2V0VW5pb24oYSwgYikKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgU2V0KFsu
Li5hLCAuLi5iXSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gaXNOb25Vbmlmb3JtKHBhcmFtZXRl
cikKKyAgICB7CisgICAgICAgIGlmICghcGFyYW1ldGVyLnNlbWFudGljKQorICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJObyBzZW1hbnRpYyBvbiBwYXJhbWV0ZXIhIik7CisgICAgICAgIGlm
IChwYXJhbWV0ZXIuc2VtYW50aWMgaW5zdGFuY2VvZiBTdGFnZUluT3V0U2VtYW50aWMpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKHBhcmFtZXRlci5zZW1hbnRpYyBpbnN0
YW5jZW9mIFJlc291cmNlU2VtYW50aWMpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gRklY
TUU6IFRoaW5ncyB0aGF0IGxpdmUgaW4gdGhlIGNvbnN0YW50IGFkZHJlc3Mgc3BhY2Ugc2hvdWxk
IGJlCisgICAgfQorCisgICAgZm9yIChsZXQgZnVuY3Rpb25zIGluIHByb2dyYW0uZnVuY3Rpb25z
LnZhbHVlcygpKSB7CisgICAgICAgIGZvciAobGV0IGZ1bmMgaW4gZnVuY3Rpb25zKSB7CisgICAg
ICAgICAgICBpZiAoZnVuYy5zaGFkZXJUeXBlKSB7CisgICAgICAgICAgICAgICAgbGV0IGdyYXBo
QnVpbGRlciA9IG5ldyBHcmFwaEJ1aWxkZXIoKTsKKyAgICAgICAgICAgICAgICBsZXQgZW50cnlQ
b2ludFBhcmFtZXRlckdyYXBoTm9kZXMgPSBncmFwaEJ1aWxkZXIuY3JlYXRlUGFyYW1ldGVyR3Jh
cGhOb2RlcyhmdW5jKTsKKyAgICAgICAgICAgICAgICBmdW5jLnZpc2l0KGdyYXBoQnVpbGRlcik7
CisgICAgICAgICAgICAgICAgbGV0IGVkZ2VzID0gZ3JhcGhCdWlsZGVyLmVkZ2VzOworICAgICAg
ICAgICAgICAgIGxldCBub25Vbmlmb3JtR3JhcGhOb2RlcyA9IG5ldyBTZXQoKTsKKyAgICAgICAg
ICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZ1bmMucGFyYW1ldGVycy5sZW5ndGg7ICsraSkg
eworICAgICAgICAgICAgICAgICAgICBpZiAoaXNOb25Vbmlmb3JtKGZ1bmMucGFyYW1ldGVyc1tp
XSkpCisgICAgICAgICAgICAgICAgICAgICAgICBub25Vbmlmb3JtR3JhcGhOb2RlcyA9IHNldFVu
aW9uKG5vblVuaWZvcm1HcmFwaE5vZGVzLCBwb2xsdXRlKGVkZ2VzLCBlbnRyeVBvaW50UGFyYW1l
dGVyR3JhcGhOb2Rlc1tpXSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL1ZhcmlhYmxlRGVjbC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1ZhcmlhYmxlRGVjbC5qcwppbmRleCA3NjhmOGJhYWFkM2I4MmQ0YzM1MTdl
YjcxYjJiZWE0OWE3ZWVkODFkLi44Y2YzZDAxMzNiNGFhOGQ3NmVhZDZmOGUwOGVjYWJjODhkOGU5
OTMxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WYXJpYWJsZURl
Y2wuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmFyaWFibGVEZWNsLmpz
CkBAIC0yNSwyNCArMjUsMzIgQEAKICJ1c2Ugc3RyaWN0IjsKIAogY2xhc3MgVmFyaWFibGVEZWNs
IGV4dGVuZHMgVmFsdWUgewotICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwgbmFtZSwgdHlwZSwgaW5p
dGlhbGl6ZXIpCisgICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCB0eXBlLCBpbml0aWFsaXpl
ciA9IG51bGwsIHVuaWZvcm1pdHkgPSBudWxsKQogICAgIHsKICAgICAgICAgc3VwZXIoKTsKICAg
ICAgICAgdGhpcy5fb3JpZ2luID0gb3JpZ2luOwogICAgICAgICB0aGlzLl9uYW1lID0gbmFtZTsK
ICAgICAgICAgdGhpcy5fdHlwZSA9IHR5cGU7CiAgICAgICAgIHRoaXMuX2luaXRpYWxpemVyID0g
aW5pdGlhbGl6ZXI7CisgICAgICAgIHRoaXMuX3VuaWZvcm1pdHkgPSB1bmlmb3JtaXR5OwogICAg
IH0KICAgICAKICAgICBnZXQgb3JpZ2luKCkgeyByZXR1cm4gdGhpcy5fb3JpZ2luOyB9CiAgICAg
Z2V0IG5hbWUoKSB7IHJldHVybiB0aGlzLl9uYW1lOyB9CiAgICAgZ2V0IHR5cGUoKSB7IHJldHVy
biB0aGlzLl90eXBlOyB9CiAgICAgZ2V0IGluaXRpYWxpemVyKCkgeyByZXR1cm4gdGhpcy5faW5p
dGlhbGl6ZXI7IH0KKyAgICBnZXQgdW5pZm9ybWl0eSgpIHsgcmV0dXJuIHRoaXMuX3VuaWZvcm1p
dHk7IH0KICAgICBnZXQgdmFySXNMVmFsdWUoKSB7IHJldHVybiB0cnVlOyB9CiAgICAgCiAgICAg
dG9TdHJpbmcoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudHlwZSArICIgIiArIHRoaXMu
bmFtZSArICh0aGlzLmluaXRpYWxpemVyID8gIiA9ICIgKyB0aGlzLmluaXRpYWxpemVyIDogIiIp
OworICAgICAgICBsZXQgcmVzdWx0ID0gIiI7CisgICAgICAgIGlmICh0aGlzLnVuaWZvcm1pdHkp
CisgICAgICAgICAgICByZXN1bHQgKz0gYCR7dW5pZm9ybWl0eX0gYDsKKyAgICAgICAgcmVzdWx0
ICs9IGAke3RoaXMudHlwZX0gJHt0aGlzLm5hbWV9YDsKKyAgICAgICAgaWYgKHRoaXMuaW5pdGlh
bGl6ZXIpCisgICAgICAgICAgICByZXN1bHQgKz0gYCA9ICR7dGhpcy5pbml0aWFsaXplcn1gOwor
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1Zpc2l0b3IuanMKaW5kZXggNGVhMWI5ZWU0ZmEwNGQwYTUzZWY2ZTJiMDVhYTUzOGRl
ODNmMmZhZC4uNTRmNDQ0ZmQzMTA5ZmNhZDVhMTQzZWFmMjU3MTEyMWM3Yjg4M2Y4OSAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcworKysgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9yLmpzCkBAIC00Niw2ICs0Niw3IEBAIGNs
YXNzIFZpc2l0b3IgewogICAgIHZpc2l0RnVuY1BhcmFtZXRlcihub2RlKQogICAgIHsKICAgICAg
ICAgbm9kZS50eXBlLnZpc2l0KHRoaXMpOworICAgICAgICBOb2RlLnZpc2l0KG5vZGUucXVhbGlm
aWVycywgdGhpcyk7CiAgICAgICAgIE5vZGUudmlzaXQobm9kZS5zZW1hbnRpYywgdGhpcyk7CiAg
ICAgfQogICAgIApAQCAtOTgsNiArOTksNyBAQCBjbGFzcyBWaXNpdG9yIHsKICAgICB2aXNpdEZp
ZWxkKG5vZGUpCiAgICAgewogICAgICAgICBub2RlLnR5cGUudmlzaXQodGhpcyk7CisgICAgICAg
IE5vZGUudmlzaXQobm9kZS5xdWFsaWZpZXJzLCB0aGlzKTsKICAgICAgICAgTm9kZS52aXNpdChu
b2RlLnNlbWFudGljLCB0aGlzKTsKICAgICB9CiAgICAgCkBAIC0zNzQsNSArMzc2LDkgQEAgY2xh
c3MgVmlzaXRvciB7CiAgICAgdmlzaXRTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMobm9k
ZSkKICAgICB7CiAgICAgfQorCisgICAgdmlzaXRRdWFsaWZpZXJzKG5vZGUpCisgICAgeworICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvaW5kZXgu
aHRtbCBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWwKaW5kZXggZThk
ODM1OGRmZjk2OTZmMmRiZGU0MmY1ZDYxMzdhMTU5YzE5M2Q0Mi4uOWJmNTE4MjI3NGEwNDAzMjYx
NzdiODM0MTg4M2I5Njc1MDZjNjYzNiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvaW5kZXguaHRtbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9p
bmRleC5odG1sCkBAIC0xMTIsNiArMTEyLDcgQEAKIDxzY3JpcHQgc3JjPSJQcm9ncmFtLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJQcm9ncmFtV2l0aFVubmVjZXNzYXJ5VGhpbmdzUmVtb3Zl
ZC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUHRyVHlwZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iUXVhbGlmaWVycy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmVhZE1vZGlm
eVdyaXRlRXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmVjdXJzaW9uQ2hl
Y2tlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmVjdXJzaXZlVHlwZUNoZWNrZXIuanMi
Pjwvc2NyaXB0PgpAQCAtMTQ5LDYgKzE1MCw3IEBACiA8c2NyaXB0IHNyYz0iVWludExpdGVyYWwu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlVpbnRMaXRlcmFsVHlwZS5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0iVW5pZmljYXRpb25Db250ZXh0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJVbmlmb3JtaXR5Q2hlY2tlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iVW5yZWFj
aGFibGVDb2RlQ2hlY2tlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iVmFyaWFibGVEZWNs
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJWYXJpYWJsZVJlZi5qcyI+PC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351866</attachid>
            <date>2018-10-09 00:07:01 -0700</date>
            <delta_ts>2018-10-09 00:25:45 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-189125-20181009000700.patch</filename>
            <type>text/plain</type>
            <size>80971</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2OTM3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjY3NGI5YWM3NGFmZGFmYmNkOTZlYzI4MmU2NzQyNjEy
NWViOWRhYi4uNDI3YzUxODZhOTg0NjAzNTljMmQ0MDI5OWNjZjY5YzY4NDdiMWQwNiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEw
MSBAQAorMjAxOC0xMC0wOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29t
PgorCisgICAgICAgIFtXSExTTF0gSW1wbGVtZW50IGR5bmFtaWNhbGx5IHVuaWZvcm0gZXhwcmVz
c2lvbiByZXN0cmljdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4OTEyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzOgorICAgICAgICAqIFdl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbG9jYXRlQXRFbnRyeVBvaW50cy5qczoKKyAgICAgICAg
KGFsbG9jYXRlQXRFbnRyeVBvaW50cy51cGRhdGVGdW5jdGlvbi5VcGRhdGVGdW5jdGlvbnMucHJv
dG90eXBlLl9hZGRWYXJpYWJsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9DaGVja2VyLmpzOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUudmlzaXRQ
cm9ncmFtKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLnZpc2l0UXVhbGlmaWVycyk6Cisg
ICAgICAgIChDaGVja2VyKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GaWVs
ZC5qczoKKyAgICAgICAgKEZpZWxkKToKKyAgICAgICAgKEZpZWxkLnByb3RvdHlwZS5nZXQgcXVh
bGlmaWVycyk6CisgICAgICAgIChGaWVsZC5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAq
IFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmNQYXJhbWV0ZXIuanM6CisgICAgICAgIChGdW5j
UGFyYW1ldGVyKToKKyAgICAgICAgKEZ1bmNQYXJhbWV0ZXIucHJvdG90eXBlLmdldCBxdWFsaWZp
ZXJzKToKKyAgICAgICAgKEZ1bmNQYXJhbWV0ZXIucHJvdG90eXBlLmdldCB1bmlmb3JtaXR5KToK
KyAgICAgICAgKEZ1bmNQYXJhbWV0ZXIucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAgKiBX
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9NZXRhbC9XSExTTCBUZXN0cy9XSExTTCBUZXN0cy54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L1BhcnNlLmpzOgorICAgICAgICAocGFyc2VRdWFsaWZpZXJzKToKKyAgICAgICAgKHBhcnNlVmFy
aWFibGVEZWNscyk6CisgICAgICAgIChwYXJzZVBhcmFtZXRlcik6CisgICAgICAgIChwYXJzZUZp
ZWxkKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QcmVwYXJlLmpzOgorICAg
ICAgICAobGV0LnByZXBhcmUpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1F1
YWxpZmllcnMuanM6IEFkZGVkLgorICAgICAgICAoUXVhbGlmaWVycyk6CisgICAgICAgIChRdWFs
aWZpZXJzLnByb3RvdHlwZS5nZXQgbm9pbnRlcnBvbGF0aW9uKToKKyAgICAgICAgKFF1YWxpZmll
cnMucHJvdG90eXBlLmdldCBub3BlcnNwZWN0aXZlKToKKyAgICAgICAgKFF1YWxpZmllcnMucHJv
dG90eXBlLmdldCBjZW50cm9pZCk6CisgICAgICAgIChRdWFsaWZpZXJzLnByb3RvdHlwZS5nZXQg
c2FtcGxlKToKKyAgICAgICAgKFF1YWxpZmllcnMucHJvdG90eXBlLmdldCBpc1ZhbGlkKToKKyAg
ICAgICAgKFF1YWxpZmllcnMucHJvdG90eXBlLmdldCB0b2tlbnMpOgorICAgICAgICAoUXVhbGlm
aWVycy5wcm90b3R5cGUuZ2V0IGxlbmd0aCk6CisgICAgICAgIChRdWFsaWZpZXJzLnByb3RvdHlw
ZS5nZXQgb3JpZ2luU3RyaW5nKToKKyAgICAgICAgKFF1YWxpZmllcnMucHJvdG90eXBlLnRvU3Ry
aW5nKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5qczoKKyAg
ICAgICAgKFJld3JpdGVyLnByb3RvdHlwZS52aXNpdEZ1bmNQYXJhbWV0ZXIpOgorICAgICAgICAo
UmV3cml0ZXIucHJvdG90eXBlLnZpc2l0VmFyaWFibGVEZWNsKToKKyAgICAgICAgKFJld3JpdGVy
LnByb3RvdHlwZS52aXNpdEZpZWxkKToKKyAgICAgICAgKFJld3JpdGVyLnByb3RvdHlwZS52aXNp
dFF1YWxpZmllcnMpOgorICAgICAgICAoUmV3cml0ZXIpOgorICAgICAgICAqIFdlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1NQSVJWLmh0bWw6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvVGVzdC5odG1sOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanM6
CisgICAgICAgICh0ZXN0cy50cmFwQmVjYXVzZU9mSW5kZXhBY2Vzc3MpOgorICAgICAgICAodGVz
dHMudHJhcFRyYW5zaXRpdmVseSk6CisgICAgICAgICh0ZXN0cy5pbmNvbXBhdGlibGVRdWFsaWZp
ZXJzKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Vbmlmb3JtaXR5Q2hlY2tl
ci5qczogQWRkZWQuCisgICAgICAgIChjaGVja1VuaWZvcm1zLkdyYXBoQnVpbGRlcik6CisgICAg
ICAgIChjaGVja1VuaWZvcm1zLkdyYXBoQnVpbGRlci5wcm90b3R5cGUuZ2V0IGVkZ2VzKToKKyAg
ICAgICAgKGNoZWNrVW5pZm9ybXMuR3JhcGhCdWlsZGVyLnByb3RvdHlwZS5nZXQgcmVzdWx0KToK
KyAgICAgICAgKGNoZWNrVW5pZm9ybXMuR3JhcGhCdWlsZGVyLnByb3RvdHlwZS5fYWxsb2NhdGVH
cmFwaE5vZGUpOgorICAgICAgICAoY2hlY2tVbmlmb3Jtcy5HcmFwaEJ1aWxkZXIucHJvdG90eXBl
Ll9wdXNoQ29udHJvbEZsb3cpOgorICAgICAgICAoY2hlY2tVbmlmb3Jtcy5HcmFwaEJ1aWxkZXIu
cHJvdG90eXBlLmNyZWF0ZVBhcmFtZXRlckdyYXBoTm9kZXMpOgorICAgICAgICAoY2hlY2tVbmlm
b3Jtcy5HcmFwaEJ1aWxkZXIucHJvdG90eXBlLnZpc2l0RnVuY1BhcmFtZXRlcik6CisgICAgICAg
IChjaGVja1VuaWZvcm1zLkdyYXBoQnVpbGRlci5wcm90b3R5cGUudmlzaXRGdW5jRGVmKToKKyAg
ICAgICAgKGNoZWNrVW5pZm9ybXMuR3JhcGhCdWlsZGVyLnByb3RvdHlwZS52aXNpdE5hdGl2ZUZ1
bmMpOgorICAgICAgICAoY2hlY2tVbmlmb3Jtcy5HcmFwaEJ1aWxkZXIucHJvdG90eXBlLnZpc2l0
VmFyaWFibGVEZWNsKToKKyAgICAgICAgKGNoZWNrVW5pZm9ybXMuR3JhcGhCdWlsZGVyLnByb3Rv
dHlwZS52aXNpdEFzc2lnbm1lbnQpOgorICAgICAgICAoY2hlY2tVbmlmb3Jtcy5HcmFwaEJ1aWxk
ZXIucHJvdG90eXBlLnZpc2l0UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbik6CisgICAgICAgIChj
aGVja1VuaWZvcm1zLkdyYXBoQnVpbGRlci5wcm90b3R5cGUudmlzaXRUZXJuYXJ5RXhwcmVzc2lv
bik6CisgICAgICAgIChjaGVja1VuaWZvcm1zLkdyYXBoQnVpbGRlci5wcm90b3R5cGUudmlzaXRW
YXJpYWJsZVJlZik6CisgICAgICAgIChjaGVja1VuaWZvcm1zLkdyYXBoQnVpbGRlci5wcm90b3R5
cGUudmlzaXRJZlN0YXRlbWVudCk6CisgICAgICAgIChjaGVja1VuaWZvcm1zLkdyYXBoQnVpbGRl
ci5wcm90b3R5cGUudmlzaXRXaGlsZUxvb3ApOgorICAgICAgICAoY2hlY2tVbmlmb3Jtcy5HcmFw
aEJ1aWxkZXIucHJvdG90eXBlLnZpc2l0RG9XaGlsZUxvb3ApOgorICAgICAgICAoY2hlY2tVbmlm
b3Jtcy5HcmFwaEJ1aWxkZXIucHJvdG90eXBlLnZpc2l0Rm9yTG9vcCk6CisgICAgICAgIChjaGVj
a1VuaWZvcm1zLkdyYXBoQnVpbGRlci5wcm90b3R5cGUudmlzaXRTd2l0Y2hTdGF0ZW1lbnQpOgor
ICAgICAgICAoY2hlY2tVbmlmb3Jtcy5HcmFwaEJ1aWxkZXIucHJvdG90eXBlLnZpc2l0UmV0dXJu
KToKKyAgICAgICAgKGNoZWNrVW5pZm9ybXMuR3JhcGhCdWlsZGVyLnByb3RvdHlwZS52aXNpdENv
bnRpbnVlKToKKyAgICAgICAgKGNoZWNrVW5pZm9ybXMuR3JhcGhCdWlsZGVyLnByb3RvdHlwZS52
aXNpdEJyZWFrKToKKyAgICAgICAgKGNoZWNrVW5pZm9ybXMuR3JhcGhCdWlsZGVyLnByb3RvdHlw
ZS52aXNpdFRyYXBTdGF0ZW1lbnQpOgorICAgICAgICAoY2hlY2tVbmlmb3Jtcy5HcmFwaEJ1aWxk
ZXIucHJvdG90eXBlLnZpc2l0R2VuZXJpY0xpdGVyYWwpOgorICAgICAgICAoY2hlY2tVbmlmb3Jt
cy5HcmFwaEJ1aWxkZXIucHJvdG90eXBlLnZpc2l0TnVsbExpdGVyYWwpOgorICAgICAgICAoY2hl
Y2tVbmlmb3Jtcy5HcmFwaEJ1aWxkZXIucHJvdG90eXBlLnZpc2l0Qm9vbExpdGVyYWwpOgorICAg
ICAgICAoY2hlY2tVbmlmb3Jtcy5HcmFwaEJ1aWxkZXIucHJvdG90eXBlLnZpc2l0QW5vbnltb3Vz
VmFyaWFibGUpOgorICAgICAgICAoY2hlY2tVbmlmb3Jtcy5HcmFwaEJ1aWxkZXIucHJvdG90eXBl
LnZpc2l0Q2FsbEV4cHJlc3Npb24pOgorICAgICAgICAoY2hlY2tVbmlmb3Jtcy5wb2xsdXRlKToK
KyAgICAgICAgKGNoZWNrVW5pZm9ybXMuc2V0VW5pb24pOgorICAgICAgICAoY2hlY2tVbmlmb3Jt
cy5pc05vblVuaWZvcm0pOgorICAgICAgICAoY2hlY2tVbmlmb3Jtcyk6CisgICAgICAgICogV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvVmFyaWFibGVEZWNsLmpzOgorICAgICAgICAoVmFyaWFibGVE
ZWNsKToKKyAgICAgICAgKFZhcmlhYmxlRGVjbC5wcm90b3R5cGUuZ2V0IHVuaWZvcm1pdHkpOgor
ICAgICAgICAoVmFyaWFibGVEZWNsLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgICogV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qczoKKyAgICAgICAgKFZpc2l0b3IucHJvdG90
eXBlLnZpc2l0RnVuY1BhcmFtZXRlcik6CisgICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS52aXNp
dEZpZWxkKToKKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLnZpc2l0UXVhbGlmaWVycyk6Cisg
ICAgICAgIChWaXNpdG9yKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRl
eC5odG1sOgorCiAyMDE4LTEwLTA4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIFdLQnVuZGxlRmlsZUhhbmRsZVJlZgpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzCmluZGV4IGJhNjVjYzVkNTUxZGRlZGUwMThlYmZkMzVm
YjAzM2E1MGRjMjkzNjIuLmZmOTUzYjY1NDk0YzI5M2JlOWEzMDg1NDYyMTE1MmUzNzMyZjVmNzgg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcworKysgYi9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMKQEAgLTc4LDYgKzc4LDcgQEAgbG9h
ZCgiRUFycmF5UmVmLmpzIik7CiBsb2FkKCJFQnVmZmVyLmpzIik7CiBsb2FkKCJFQnVmZmVyQnVp
bGRlci5qcyIpOwogbG9hZCgiRVB0ci5qcyIpOworbG9hZCgiRW50cnlQb2ludFBhcmFtZXRlckdh
dGhlcmVyLmpzIik7CiBsb2FkKCJFbnVtTGl0ZXJhbC5qcyIpOwogbG9hZCgiRW51bU1lbWJlci5q
cyIpOwogbG9hZCgiRW51bVR5cGUuanMiKTsKQEAgLTEzNSw2ICsxMzYsNyBAQCBsb2FkKCJQcm9w
ZXJ0eVJlc29sdmVyLmpzIik7CiBsb2FkKCJQcm9ncmFtLmpzIik7CiBsb2FkKCJQcm9ncmFtV2l0
aFVubmVjZXNzYXJ5VGhpbmdzUmVtb3ZlZC5qcyIpOwogbG9hZCgiUHRyVHlwZS5qcyIpOworbG9h
ZCgiUXVhbGlmaWVycy5qcyIpOwogbG9hZCgiUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5qcyIp
OwogbG9hZCgiUmVjdXJzaW9uQ2hlY2tlci5qcyIpOwogbG9hZCgiUmVjdXJzaXZlVHlwZUNoZWNr
ZXIuanMiKTsKQEAgLTE3Miw2ICsxNzQsNyBAQCBsb2FkKCJUeXBlZFZhbHVlLmpzIik7CiBsb2Fk
KCJVaW50TGl0ZXJhbC5qcyIpOwogbG9hZCgiVWludExpdGVyYWxUeXBlLmpzIik7CiBsb2FkKCJV
bmlmaWNhdGlvbkNvbnRleHQuanMiKTsKK2xvYWQoIlVuaWZvcm1pdHlDaGVja2VyLmpzIik7CiBs
b2FkKCJVbnJlYWNoYWJsZUNvZGVDaGVja2VyLmpzIik7CiBsb2FkKCJWYXJpYWJsZURlY2wuanMi
KTsKIGxvYWQoIlZhcmlhYmxlUmVmLmpzIik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9BbGxvY2F0ZUF0RW50cnlQb2ludHMuanMgYi9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9BbGxvY2F0ZUF0RW50cnlQb2ludHMuanMKaW5kZXggMmNkZTUzZmYwMGRj
ZWQ4Mjg4MjlmOTkxMjc0NTk5ZTQxNGI1ODI4Yy4uNTM4YjJmY2JmZGI2MDFmMzQ1NjQ3N2VmNjdi
YjI4ZTMwZjM4ZTQyNiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
QWxsb2NhdGVBdEVudHJ5UG9pbnRzLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0FsbG9jYXRlQXRFbnRyeVBvaW50cy5qcwpAQCAtMTQyLDcgKzE0Miw3IEBAIGZ1bmN0aW9u
IGFsbG9jYXRlQXRFbnRyeVBvaW50cyhwcm9ncmFtKQogCiAgICAgICAgICAgICBfYWRkVmFyaWFi
bGVEZWNsYXJhdGlvbigpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fdmFy
aWFibGVEZWNsID0gbmV3IFZhcmlhYmxlRGVjbChmdW5jLm9yaWdpbiwgImdsb2JhbCBzdHJ1Y3Qi
LCBnbG9iYWxTdHJ1Y3RUeXBlUmVmLCBudWxsKTsKKyAgICAgICAgICAgICAgICB0aGlzLl92YXJp
YWJsZURlY2wgPSBuZXcgVmFyaWFibGVEZWNsKGZ1bmMub3JpZ2luLCAiZ2xvYmFsIHN0cnVjdCIs
IGdsb2JhbFN0cnVjdFR5cGVSZWYpOwogICAgICAgICAgICAgICAgIHRoaXMubWFrZUdsb2JhbFN0
cnVjdFZhcmlhYmxlUmVmID0gKCkgPT4gbmV3IE1ha2VQdHJFeHByZXNzaW9uKGZ1bmMub3JpZ2lu
LCBWYXJpYWJsZVJlZi53cmFwKHRoaXMuX3ZhcmlhYmxlRGVjbCkpOwogICAgICAgICAgICAgICAg
IGZ1bmMuYm9keS5zdGF0ZW1lbnRzLnVuc2hpZnQodGhpcy5fdmFyaWFibGVEZWNsKTsKICAgICAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNr
ZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzCmluZGV4IDFl
OTkzMjc0ODM5NWIwMjI1OTYwMjUyMmRiOGEyNjgwNWIxZWUzY2YuLjM4NjA1MzY4OGQxMTEzYWI3
MDFmYjMxMzMzYzFlZTcxZjkwNzE2ZTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL0NoZWNrZXIuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
Q2hlY2tlci5qcwpAQCAtNTgsMTExICs1OCw0NCBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlz
aXRvciB7CiAgICAgICAgICAgICBmb3IgKGxldCBmdW5jIG9mIGZ1bmNzKQogICAgICAgICAgICAg
ICAgIGRvU3RhdGVtZW50KGZ1bmMpOwogICAgICAgICB9CisgICAgICAgIGZvciAobGV0IHR5cGUg
b2Ygbm9kZS50eXBlcy52YWx1ZXMoKSkgeworICAgICAgICAgICAgaWYgKHR5cGUgaW5zdGFuY2Vv
ZiBBcnJheSkgeworICAgICAgICAgICAgICAgIGZvciAobGV0IHQgb2YgdHlwZSkKKyAgICAgICAg
ICAgICAgICAgICAgZG9TdGF0ZW1lbnQodCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgZG9TdGF0ZW1lbnQodHlwZSk7CisgICAgICAgIH0KICAgICB9
CiAKICAgICBfY2hlY2tTZW1hbnRpY3Mobm9kZSkKICAgICB7Ci0gICAgICAgIGNsYXNzIEl0ZW0g
ewotICAgICAgICAgICAgY29uc3RydWN0b3IodHlwZSwgc2VtYW50aWMpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUuc2hhZGVyVHlwZSAhPSAidGVzdCIgJiYgIXNlbWFu
dGljKQotICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdp
bi5vcmlnaW5TdHJpbmcsICJBbiBlbnRyeS1wb2ludCBpbnB1dC9vdXRwdXQgZXhpc3RzIHdoaWNo
IGRvZXNuJ3QgaGF2ZSBhIHNlbWFudGljIik7Ci0gICAgICAgICAgICAgICAgdGhpcy5fdHlwZSA9
IHR5cGU7Ci0gICAgICAgICAgICAgICAgdGhpcy5fc2VtYW50aWMgPSBzZW1hbnRpYzsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgZ2V0IHR5cGUoKSB7IHJldHVybiB0aGlzLl90eXBlOyB9
Ci0gICAgICAgICAgICBnZXQgc2VtYW50aWMoKSB7IHJldHVybiB0aGlzLl9zZW1hbnRpYzsgfQot
ICAgICAgICB9Ci0KLSAgICAgICAgbGV0IHByb2dyYW0gPSB0aGlzLl9wcm9ncmFtOwotICAgICAg
ICBjbGFzcyBHYXRoZXJlciBleHRlbmRzIFZpc2l0b3IgewotICAgICAgICAgICAgY29uc3RydWN0
b3IoY3VycmVudFNlbWFudGljID0gbnVsbCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBzdXBlcigpOwotICAgICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRTZW1hbnRpYyA9IGN1cnJl
bnRTZW1hbnRpYzsKLSAgICAgICAgICAgICAgICB0aGlzLl9yZXN1bHQgPSBbXTsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgcmVzZXQoY3VycmVudFNlbWFudGljID0gbnVsbCkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRTZW1hbnRpYyA9IGN1cnJlbnRT
ZW1hbnRpYzsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc2V0IGN1cnJlbnRTZW1hbnRp
Yyh2YWx1ZSkgeyB0aGlzLl9jdXJyZW50U2VtYW50aWMgPSB2YWx1ZTsgfQotICAgICAgICAgICAg
Z2V0IGN1cnJlbnRTZW1hbnRpYygpIHsgcmV0dXJuIHRoaXMuX2N1cnJlbnRTZW1hbnRpYzsgfQot
ICAgICAgICAgICAgZ2V0IHJlc3VsdCgpIHsgcmV0dXJuIHRoaXMuX3Jlc3VsdDsgfQotCi0gICAg
ICAgICAgICB2aXNpdEVudW1UeXBlKG5vZGUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgdGhpcy5yZXN1bHQucHVzaChuZXcgSXRlbShub2RlLCB0aGlzLmN1cnJlbnRTZW1hbnRpYykp
OwotICAgICAgICAgICAgfQorICAgICAgICBsZXQgW2lucHV0UGFyYW1ldGVycywgb3V0cHV0UGFy
YW1ldGVyc10gPSBnYXRoZXJFbnRyeVBvaW50UGFyYW1ldGVycyhub2RlKTsKIAotICAgICAgICAg
ICAgdmlzaXRWZWN0b3JUeXBlKG5vZGUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
dGhpcy5yZXN1bHQucHVzaChuZXcgSXRlbShub2RlLCB0aGlzLmN1cnJlbnRTZW1hbnRpYykpOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2aXNpdE1hdHJpeFR5cGUobm9kZSkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdC5wdXNoKG5ldyBJdGVtKG5vZGUs
IHRoaXMuY3VycmVudFNlbWFudGljKSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZp
c2l0TmF0aXZlVHlwZShub2RlKQorICAgICAgICBpZiAobm9kZS5zaGFkZXJUeXBlICE9ICJ0ZXN0
IikgeworICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tNaXNzaW5nU2VtYW50aWMoaXRlbXMpCiAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKHByb2dyYW0uaW50cmluc2ljcy52b2lk
LmVxdWFscyhub2RlKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50U2Vt
YW50aWMpCi0gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2Rl
Lm9yaWdpbi5vcmlnaW5TdHJpbmcsICJWb2lkIGNhbid0IGhhdmUgYSBzZW1hbnRpYyIpOwotICAg
ICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdC5wdXNo
KG5ldyBJdGVtKG5vZGUsIHRoaXMuY3VycmVudFNlbWFudGljKSk7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIHZpc2l0U3RydWN0VHlwZShub2RlKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRTZW1hbnRpYyAhPSBudWxsKQotICAgICAgICAgICAg
ICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJT
dHJ1Y3RzIGluc2lkZSBlbnRyeSBwb2ludCBzaWduYXR1cmVzIGNhbid0IGhhdmUgc2VtYW50aWNz
LiIpOwotICAgICAgICAgICAgICAgIGZvciAobGV0IGZpZWxkIG9mIG5vZGUuZmllbGRzKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFNlbWFudGljID0gZmllbGQuc2VtYW50aWM7
Ci0gICAgICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUudmlzaXQodGhpcyk7CisgICAgICAgICAg
ICAgICAgZm9yIChsZXQgaXRlbSBvZiBpdGVtcykgeworICAgICAgICAgICAgICAgICAgICBpZiAo
IWl0ZW0uc2VtYW50aWMpCisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVF
cnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJBbiBlbnRyeS1wb2ludCBpbnB1dC9vdXRw
dXQgZXhpc3RzIHdoaWNoIGRvZXNuJ3QgaGF2ZSBhIHNlbWFudGljIik7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2aXNpdFR5cGVSZWYobm9kZSkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBub2RlLnR5cGUudmlzaXQodGhpcyk7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZpc2l0UHRyVHlwZShub2RlKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIHRoaXMucmVzdWx0LnB1c2gobmV3IEl0ZW0obm9kZSwgdGhpcy5j
dXJyZW50U2VtYW50aWMpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdmlzaXRBcnJh
eVJlZlR5cGUobm9kZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0aGlzLnJlc3Vs
dC5wdXNoKG5ldyBJdGVtKG5vZGUsIHRoaXMuY3VycmVudFNlbWFudGljKSk7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIHZpc2l0QXJyYXlUeXBlKG5vZGUpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgdGhpcy5yZXN1bHQucHVzaChuZXcgSXRlbShub2RlLCB0aGlzLmN1cnJl
bnRTZW1hbnRpYykpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2aXNpdEZ1bmNQYXJh
bWV0ZXIobm9kZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9jdXJyZW50
U2VtYW50aWMgPSBub2RlLnNlbWFudGljOwotICAgICAgICAgICAgICAgIG5vZGUudHlwZS52aXNp
dCh0aGlzKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNoZWNrTWlzc2luZ1NlbWFudGlj
KGlucHV0UGFyYW1ldGVycyk7CisgICAgICAgICAgICBjaGVja01pc3NpbmdTZW1hbnRpYyhvdXRw
dXRQYXJhbWV0ZXJzKTsKICAgICAgICAgfQogCi0gICAgICAgIGxldCBpbnB1dEdhdGhlcmVyID0g
bmV3IEdhdGhlcmVyKCk7Ci0gICAgICAgIGZvciAobGV0IHBhcmFtZXRlciBvZiBub2RlLnBhcmFt
ZXRlcnMpIHsKLSAgICAgICAgICAgIGlucHV0R2F0aGVyZXIucmVzZXQoKTsKLSAgICAgICAgICAg
IHBhcmFtZXRlci52aXNpdChpbnB1dEdhdGhlcmVyKTsKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tT
dHJ1Y3RTZW1hbnRpY3MoaXRlbXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAobGV0IGl0
ZW0gb2YgaXRlbXMpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXRlbS50eXBlIGluc3RhbmNlb2Yg
U3RydWN0VHlwZSAmJiBpdGVtLnNlbWFudGljKQorICAgICAgICAgICAgICAgICAgICB0aHJvdyBu
ZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJBIHN0cnVjdCBoYXMgYSBz
ZW1hbnRpYyIpOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGxldCBvdXRwdXRH
YXRoZXJlciA9IG5ldyBHYXRoZXJlcihub2RlLnNlbWFudGljKTsKLSAgICAgICAgbm9kZS5yZXR1
cm5UeXBlLnZpc2l0KG91dHB1dEdhdGhlcmVyKTsKKyAgICAgICAgY2hlY2tTdHJ1Y3RTZW1hbnRp
Y3MoaW5wdXRQYXJhbWV0ZXJzKTsKKyAgICAgICAgY2hlY2tTdHJ1Y3RTZW1hbnRpY3Mob3V0cHV0
UGFyYW1ldGVycyk7CiAKLSAgICAgICAgZnVuY3Rpb24gY2hlY2tEdXBsaWNhdGVTZW1hbnRpY3Mo
aXRlbXMpIHsKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tEdXBsaWNhdGVTZW1hbnRpY3MoaXRlbXMp
CisgICAgICAgIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgZmFzdGVyIHRoYW4g
TyhuXjIpCiAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgKytp
KSB7CiAgICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgaXRlbXMubGVuZ3Ro
OyArK2opIHsKQEAgLTE3MSwyNiArMTA0LDI5IEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBWaXNp
dG9yIHsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAg
ICAgY2hlY2tEdXBsaWNhdGVTZW1hbnRpY3MoaW5wdXRHYXRoZXJlci5yZXN1bHQpOwotICAgICAg
ICBjaGVja0R1cGxpY2F0ZVNlbWFudGljcyhvdXRwdXRHYXRoZXJlci5yZXN1bHQpOworICAgICAg
ICBjaGVja0R1cGxpY2F0ZVNlbWFudGljcyhpbnB1dFBhcmFtZXRlcnMpOworICAgICAgICBjaGVj
a0R1cGxpY2F0ZVNlbWFudGljcyhvdXRwdXRQYXJhbWV0ZXJzKTsKIAotICAgICAgICBmdW5jdGlv
biBjaGVja1NlbWFudGljVHlwZXMoaXRlbXMpIHsKKyAgICAgICAgbGV0IHByb2dyYW0gPSB0aGlz
Ll9wcm9ncmFtOworICAgICAgICBmdW5jdGlvbiBjaGVja1NlbWFudGljVHlwZXMoaXRlbXMpCisg
ICAgICAgIHsKICAgICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgaXRlbXMpIHsKICAgICAgICAg
ICAgICAgICBpZiAoaXRlbS5zZW1hbnRpYyAmJiAhaXRlbS5zZW1hbnRpYy5pc0FjY2VwdGFibGVU
eXBlKGl0ZW0udHlwZSwgcHJvZ3JhbSkpCiAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBX
VHlwZUVycm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgYFNlbWFudGljICR7aXRlbS5zZW1h
bnRpY30gaXMgdW5uYWNjZXB0YWJsZSB0eXBlICR7aXRlbS50eXBlfWApOwogICAgICAgICAgICAg
fQogICAgICAgICB9Ci0gICAgICAgIGNoZWNrU2VtYW50aWNUeXBlcyhpbnB1dEdhdGhlcmVyLnJl
c3VsdCk7Ci0gICAgICAgIGNoZWNrU2VtYW50aWNUeXBlcyhvdXRwdXRHYXRoZXJlci5yZXN1bHQp
OworICAgICAgICBjaGVja1NlbWFudGljVHlwZXMoaW5wdXRQYXJhbWV0ZXJzKTsKKyAgICAgICAg
Y2hlY2tTZW1hbnRpY1R5cGVzKG91dHB1dFBhcmFtZXRlcnMpOwogCi0gICAgICAgIGZ1bmN0aW9u
IGNoZWNrU2VtYW50aWNGb3JTaGFkZXJUeXBlKGl0ZW1zLCBkaXJlY3Rpb24pIHsKKyAgICAgICAg
ZnVuY3Rpb24gY2hlY2tTZW1hbnRpY0ZvclNoYWRlclR5cGUoaXRlbXMsIGRpcmVjdGlvbikKKyAg
ICAgICAgewogICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBpdGVtcykgewogICAgICAgICAg
ICAgICAgIGlmIChpdGVtLnNlbWFudGljICYmICFpdGVtLnNlbWFudGljLmlzQWNjZXB0YWJsZUZv
clNoYWRlclR5cGUoZGlyZWN0aW9uLCBub2RlLnNoYWRlclR5cGUpKQogICAgICAgICAgICAgICAg
ICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsIGBTZW1h
bnRpYyAke2l0ZW0uc2VtYW50aWN9IGlzIHVubmFjY2VwdGFibGUgYXMgYW4gJHtkaXJlY3Rpb259
IG9mIHNoYWRlciB0eXBlICR7bm9kZS5zaGFkZXJUeXBlfWApOwogICAgICAgICAgICAgfQogICAg
ICAgICB9Ci0gICAgICAgIGNoZWNrU2VtYW50aWNGb3JTaGFkZXJUeXBlKGlucHV0R2F0aGVyZXIu
cmVzdWx0LCAiaW5wdXQiKTsKLSAgICAgICAgY2hlY2tTZW1hbnRpY0ZvclNoYWRlclR5cGUob3V0
cHV0R2F0aGVyZXIucmVzdWx0LCAib3V0cHV0Iik7CisgICAgICAgIGNoZWNrU2VtYW50aWNGb3JT
aGFkZXJUeXBlKGlucHV0UGFyYW1ldGVycywgImlucHV0Iik7CisgICAgICAgIGNoZWNrU2VtYW50
aWNGb3JTaGFkZXJUeXBlKG91dHB1dFBhcmFtZXRlcnMsICJvdXRwdXQiKTsKIAogICAgICAgICBj
bGFzcyBQT0RDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAgICAgICB2aXNpdEVudW1U
eXBlKG5vZGUpCkBAIC0yNDksOCArMTg1LDggQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0
b3IgewogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAg
ICBjaGVja1BPRERhdGEoaW5wdXRHYXRoZXJlci5yZXN1bHQpOwotICAgICAgICBjaGVja1BPRERh
dGEob3V0cHV0R2F0aGVyZXIucmVzdWx0KTsKKyAgICAgICAgY2hlY2tQT0REYXRhKGlucHV0UGFy
YW1ldGVycyk7CisgICAgICAgIGNoZWNrUE9ERGF0YShvdXRwdXRQYXJhbWV0ZXJzKTsKICAgICB9
CiAKICAgICBfY2hlY2tTaGFkZXJUeXBlKG5vZGUpCkBAIC05MTQsNSArODUwLDExIEBAIGNsYXNz
IENoZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgbGV0IHJlc3VsdCA9IG5vZGUucmVz
b2x2ZShub2RlLnBvc3NpYmxlT3ZlcmxvYWRzLCB0aGlzLl9wcm9ncmFtKTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CisKKyAgICB2aXNpdFF1YWxpZmllcnMobm9kZSkKKyAgICB7Cisg
ICAgICAgIGlmICghbm9kZS5pc1ZhbGlkKQorICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJy
b3Iobm9kZS5vcmlnaW5TdHJpbmcsICJJbmNvbXBhdGlibGUgcXVhbGlmaWVycyBhcmUgc3BlY2lm
aWVkIik7CisgICAgfQogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9FbnRyeVBvaW50UGFyYW1ldGVyR2F0aGVyZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9FbnRyeVBvaW50UGFyYW1ldGVyR2F0aGVyZXIuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQy
YjM0MmFhYTc1YjYwODBlMTlhNTVmNGUyMDY5NTIyMjA0NjNkMgotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0VudHJ5UG9pbnRQYXJhbWV0ZXJHYXRoZXJl
ci5qcwpAQCAtMCwwICsxLDEyNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisidXNlIHN0cmljdCI7CisKK2NsYXNzIEVudHJ5UG9pbnRQYXJhbWV0ZXIgewor
ICAgIGNvbnN0cnVjdG9yKGluZGV4LCB0eXBlLCBzZW1hbnRpYykKKyAgICB7CisgICAgICAgIHRo
aXMuX2luZGV4ID0gaW5kZXg7CisgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlOworICAgICAgICB0
aGlzLl9zZW1hbnRpYyA9IHNlbWFudGljOworICAgIH0KKworICAgIGdldCBpbmRleCgpIHsgcmV0
dXJuIHRoaXMuX2luZGV4OyB9CisgICAgZ2V0IHR5cGUoKSB7IHJldHVybiB0aGlzLl90eXBlOyB9
CisgICAgZ2V0IHNlbWFudGljKCkgeyByZXR1cm4gdGhpcy5fc2VtYW50aWM7IH0KK30KKworY2xh
c3MgRW50cnlQb2ludFBhcmFtZXRlckdhdGhlcmVyIGV4dGVuZHMgVmlzaXRvciB7CisgICAgY29u
c3RydWN0b3IoY3VycmVudFNlbWFudGljID0gbnVsbCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7
CisgICAgICAgIHRoaXMuX2N1cnJlbnRTZW1hbnRpYyA9IGN1cnJlbnRTZW1hbnRpYzsKKyAgICAg
ICAgdGhpcy5fcmVzdWx0ID0gW107CisgICAgICAgIHRoaXMuX2luZGV4ID0gMDsKKyAgICB9CisK
KyAgICByZXNldChpbmRleCkKKyAgICB7CisgICAgICAgIHRoaXMuX2luZGV4ID0gaW5kZXg7Cisg
ICAgICAgIHRoaXMuX2N1cnJlbnRTZW1hbnRpYyA9IG51bGw7CisgICAgfQorICAgIGdldCByZXN1
bHQoKSB7IHJldHVybiB0aGlzLl9yZXN1bHQ7IH0KKworICAgIHZpc2l0RW51bVR5cGUobm9kZSkK
KyAgICB7CisgICAgICAgIHRoaXMucmVzdWx0LnB1c2gobmV3IEVudHJ5UG9pbnRQYXJhbWV0ZXIo
dGhpcy5faW5kZXgsIG5vZGUsIHRoaXMuX2N1cnJlbnRTZW1hbnRpYykpOworICAgIH0KKworICAg
IHZpc2l0VmVjdG9yVHlwZShub2RlKQorICAgIHsKKyAgICAgICAgdGhpcy5yZXN1bHQucHVzaChu
ZXcgRW50cnlQb2ludFBhcmFtZXRlcih0aGlzLl9pbmRleCwgbm9kZSwgdGhpcy5fY3VycmVudFNl
bWFudGljKSk7CisgICAgfQorCisgICAgdmlzaXRNYXRyaXhUeXBlKG5vZGUpCisgICAgeworICAg
ICAgICB0aGlzLnJlc3VsdC5wdXNoKG5ldyBFbnRyeVBvaW50UGFyYW1ldGVyKHRoaXMuX2luZGV4
LCBub2RlLCB0aGlzLl9jdXJyZW50U2VtYW50aWMpKTsKKyAgICB9CisKKyAgICB2aXNpdE5hdGl2
ZVR5cGUobm9kZSkKKyAgICB7CisgICAgICAgIHRoaXMucmVzdWx0LnB1c2gobmV3IEVudHJ5UG9p
bnRQYXJhbWV0ZXIodGhpcy5faW5kZXgsIG5vZGUsIHRoaXMuX2N1cnJlbnRTZW1hbnRpYykpOwor
ICAgIH0KKworICAgIHZpc2l0U3RydWN0VHlwZShub2RlKQorICAgIHsKKyAgICAgICAgaWYgKHRo
aXMuX2N1cnJlbnRTZW1hbnRpYyAhPSBudWxsKQorICAgICAgICAgICAgdGhpcy5yZXN1bHQucHVz
aChuZXcgRW50cnlQb2ludFBhcmFtZXRlcih0aGlzLl9pbmRleCwgbm9kZSwgdGhpcy5fY3VycmVu
dFNlbWFudGljKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZm9yIChsZXQgZmllbGQg
b2Ygbm9kZS5maWVsZHMpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9jdXJyZW50U2VtYW50aWMg
PSBmaWVsZC5zZW1hbnRpYzsKKyAgICAgICAgICAgICAgICBmaWVsZC50eXBlLnZpc2l0KHRoaXMp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgdmlzaXRUeXBlUmVmKG5v
ZGUpCisgICAgeworICAgICAgICBub2RlLnR5cGUudmlzaXQodGhpcyk7CisgICAgfQorCisgICAg
dmlzaXRQdHJUeXBlKG5vZGUpCisgICAgeworICAgICAgICB0aGlzLnJlc3VsdC5wdXNoKG5ldyBF
bnRyeVBvaW50UGFyYW1ldGVyKHRoaXMuX2luZGV4LCBub2RlLCB0aGlzLl9jdXJyZW50U2VtYW50
aWMpKTsKKyAgICB9CisKKyAgICB2aXNpdEFycmF5UmVmVHlwZShub2RlKQorICAgIHsKKyAgICAg
ICAgdGhpcy5yZXN1bHQucHVzaChuZXcgRW50cnlQb2ludFBhcmFtZXRlcih0aGlzLl9pbmRleCwg
bm9kZSwgdGhpcy5fY3VycmVudFNlbWFudGljKSk7CisgICAgfQorCisgICAgdmlzaXRBcnJheVR5
cGUobm9kZSkKKyAgICB7CisgICAgICAgIHRoaXMucmVzdWx0LnB1c2gobmV3IEVudHJ5UG9pbnRQ
YXJhbWV0ZXIodGhpcy5faW5kZXgsIG5vZGUsIHRoaXMuX2N1cnJlbnRTZW1hbnRpYykpOworICAg
IH0KKworICAgIHZpc2l0RnVuY1BhcmFtZXRlcihub2RlKQorICAgIHsKKyAgICAgICAgdGhpcy5f
Y3VycmVudFNlbWFudGljID0gbm9kZS5zZW1hbnRpYzsKKyAgICAgICAgbm9kZS50eXBlLnZpc2l0
KHRoaXMpOworICAgIH0KK30KKworZnVuY3Rpb24gZ2F0aGVyRW50cnlQb2ludFBhcmFtZXRlcnMo
ZW50cnlQb2ludCkKK3sKKyAgICBsZXQgaW5wdXRHYXRoZXJlciA9IG5ldyBFbnRyeVBvaW50UGFy
YW1ldGVyR2F0aGVyZXIoKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVudHJ5UG9pbnQucGFy
YW1ldGVycy5sZW5ndGg7ICsraSkgeworICAgICAgICBpbnB1dEdhdGhlcmVyLnJlc2V0KGkpOwor
ICAgICAgICBlbnRyeVBvaW50LnBhcmFtZXRlcnNbaV0udmlzaXQoaW5wdXRHYXRoZXJlcik7Cisg
ICAgfQorICAgIGxldCBvdXRwdXRHYXRoZXJlciA9IG5ldyBFbnRyeVBvaW50UGFyYW1ldGVyR2F0
aGVyZXIoZW50cnlQb2ludC5zZW1hbnRpYyk7CisgICAgZW50cnlQb2ludC5yZXR1cm5UeXBlLnZp
c2l0KG91dHB1dEdhdGhlcmVyKTsKKyAgICByZXR1cm4gW2lucHV0R2F0aGVyZXIucmVzdWx0LCBv
dXRwdXRHYXRoZXJlci5yZXN1bHRdOworfQorCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9GaWVsZC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Zp
ZWxkLmpzCmluZGV4IDMxMmIwMGQ5ZTI4Y2IzZTMzNmFlMDlmYzM5NmZkODljMTYwYWIwYTkuLmMw
Zjg2MWZlMmFmMjcyODNjOWIzNmQ5NTMzOThjOThmNWU4ZjBiM2UgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ZpZWxkLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL0ZpZWxkLmpzCkBAIC0yNSwyMyArMjUsMjggQEAKICJ1c2Ugc3RyaWN0IjsK
IAogY2xhc3MgRmllbGQgZXh0ZW5kcyBOb2RlIHsKLSAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5h
bWUsIHR5cGUsIHNlbWFudGljID0gbnVsbCkKKyAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUs
IHR5cGUsIHF1YWxpZmllcnMgPSBudWxsLCBzZW1hbnRpYyA9IG51bGwpCiAgICAgewogICAgICAg
ICBzdXBlcigpOwogICAgICAgICB0aGlzLl9vcmlnaW4gPSBvcmlnaW47CiAgICAgICAgIHRoaXMu
X25hbWUgPSBuYW1lOwogICAgICAgICB0aGlzLl90eXBlID0gdHlwZTsKKyAgICAgICAgdGhpcy5f
cXVhbGlmaWVycyA9IHF1YWxpZmllcnM7CiAgICAgICAgIHRoaXMuX3NlbWFudGljID0gc2VtYW50
aWM7CiAgICAgfQogICAgIAogICAgIGdldCBvcmlnaW4oKSB7IHJldHVybiB0aGlzLl9vcmlnaW47
IH0KICAgICBnZXQgbmFtZSgpIHsgcmV0dXJuIHRoaXMuX25hbWU7IH0KICAgICBnZXQgdHlwZSgp
IHsgcmV0dXJuIHRoaXMuX3R5cGU7IH0KKyAgICBnZXQgcXVhbGlmaWVycygpIHsgcmV0dXJuIHRo
aXMuX3F1YWxpZmllcnM7IH0KICAgICBnZXQgc2VtYW50aWMoKSB7IHJldHVybiB0aGlzLl9zZW1h
bnRpYzsgfQogICAgIAogICAgIHRvU3RyaW5nKCkKICAgICB7Ci0gICAgICAgIGxldCByZXN1bHQg
PSB0aGlzLnR5cGUgKyAiICIgKyB0aGlzLm5hbWU7CisgICAgICAgIGxldCByZXN1bHQgPSAiIjsK
KyAgICAgICAgaWYgKHRoaXMucXVhbGlmaWVycyAmJiB0aGlzLnF1YWxpZmllcnMubGVuZ3RoID4g
MCkKKyAgICAgICAgICAgIHJlc3VsdCArPSB0aGlzLnF1YWxpZmllcnMgKyAiICI7CisgICAgICAg
IHJlc3VsdCArPSBgJHt0aGlzLnR5cGV9ICR7dGhpcy5uYW1lfWA7CiAgICAgICAgIGlmICh0aGlz
LnNlbWFudGljKQogICAgICAgICAgICAgcmVzdWx0ICs9ICI6ICIgKyB0aGlzLnNlbWFudGljOwog
ICAgICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvRnVuY1BhcmFtZXRlci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0Z1bmNQYXJhbWV0ZXIuanMKaW5kZXggMDVjZGI1MmZkZTM5MGRiMjUwZWM2YzI2YmM2N2U5ZjUw
YjFmMWY0Ny4uYjJjZmI1YTAwOWU2NDY2NGEwMjBmNzAwNzllZDNhNjYwYjJiNDRmNiAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuY1BhcmFtZXRlci5qcworKysg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jUGFyYW1ldGVyLmpzCkBAIC0yNiwy
OCArMjYsMzQgQEAKIAogY2xhc3MgRnVuY1BhcmFtZXRlciBleHRlbmRzIFZhbHVlIHsKICAgICAv
LyBUaGUgbmFtZSBpcyBvcHRpb25hbC4gSXQncyBPSyBmb3IgaXQgdG8gYmUgbnVsbCEKLSAgICBj
b25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUsIHR5cGUsIHNlbWFudGljID0gbnVsbCkKKyAgICBjb25z
dHJ1Y3RvcihvcmlnaW4sIG5hbWUsIHR5cGUsIHF1YWxpZmllcnMgPSBudWxsLCB1bmlmb3JtaXR5
ID0gbnVsbCwgc2VtYW50aWMgPSBudWxsKQogICAgIHsKICAgICAgICAgc3VwZXIoKTsKICAgICAg
ICAgdGhpcy5fb3JpZ2luID0gb3JpZ2luOwogICAgICAgICB0aGlzLl9uYW1lID0gbmFtZTsKICAg
ICAgICAgdGhpcy5fdHlwZSA9IHR5cGU7CisgICAgICAgIHRoaXMuX3F1YWxpZmllcnMgPSBxdWFs
aWZpZXJzOworICAgICAgICB0aGlzLl91bmlmb3JtaXR5ID0gdW5pZm9ybWl0eTsKICAgICAgICAg
dGhpcy5fc2VtYW50aWMgPSBzZW1hbnRpYzsKICAgICB9CiAgICAgCiAgICAgZ2V0IG9yaWdpbigp
IHsgcmV0dXJuIHRoaXMuX29yaWdpbjsgfQogICAgIGdldCBuYW1lKCkgeyByZXR1cm4gdGhpcy5f
bmFtZTsgfQogICAgIGdldCB0eXBlKCkgeyByZXR1cm4gdGhpcy5fdHlwZTsgfQorICAgIGdldCBx
dWFsaWZpZXJzKCkgeyByZXR1cm4gdGhpcy5fcXVhbGlmaWVyczsgfQorICAgIGdldCB1bmlmb3Jt
aXR5KCkgeyByZXR1cm4gdGhpcy5fdW5pZm9ybWl0eTsgfQogICAgIGdldCBzZW1hbnRpYygpIHsg
cmV0dXJuIHRoaXMuX3NlbWFudGljOyB9CiAgICAgZ2V0IHZhcklzTFZhbHVlKCkgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIAogICAgIHRvU3RyaW5nKCkKICAgICB7Ci0gICAgICAgIGxldCByZXN1bHQ7
CisgICAgICAgIGxldCByZXN1bHQgPSAiIjsKKyAgICAgICAgaWYgKHRoaXMucXVhbGlmaWVycyAm
JiB0aGlzLnF1YWxpZmllcnMubGVuZ3RoID4gMCkKKyAgICAgICAgICAgIHJlc3VsdCArPSB0aGlz
LnF1YWxpZmllcnMgKyAiICI7CiAgICAgICAgIGlmICghdGhpcy5uYW1lKQotICAgICAgICAgICAg
cmVzdWx0ID0gIiIgKyB0aGlzLnR5cGU7CisgICAgICAgICAgICByZXN1bHQgKz0gIiIgKyB0aGlz
LnR5cGU7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMudHlwZSArICIg
IiArIHRoaXMubmFtZTsKKyAgICAgICAgICAgIHJlc3VsdCArPSB0aGlzLnR5cGUgKyAiICIgKyB0
aGlzLm5hbWU7CiAgICAgICAgIGlmICh0aGlzLnNlbWFudGljKQogICAgICAgICAgICAgcmVzdWx0
ICs9ICI6ICIgKyB0aGlzLnNlbWFudGljOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTWV0YWwvV0hMU0wgVGVzdHMvV0hM
U0wgVGVzdHMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL01ldGFsL1dITFNMIFRlc3RzL1dITFNMIFRlc3RzLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggOWVmOGFlMDE1YTgxZWQ5YTY1YjBjOTU1MzVhYTNmMGQyOGNjOWViNy4u
OGM1ZTBjMzU1ZGQxMTBmMzg2ZDBmMzFmYTEzMjBiMDM0Y2Q1NjZiYyAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTWV0YWwvV0hMU0wgVGVzdHMvV0hMU0wgVGVzdHMu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvTWV0YWwvV0hMU0wgVGVzdHMvV0hMU0wgVGVzdHMueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkKQEAgLTcsNiArNywxNyBAQAogCW9iamVjdHMgPSB7CiAKIC8qIEJlZ2luIFBCWEJ1aWxk
RmlsZSBzZWN0aW9uICovCisJCTFDNTFGRjA4MjE2NkM2QTMwMDEyOEJCMSAvKiBSZXNvdXJjZVNl
bWFudGljLmpzIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQzUxRkVGRjIxNjZDNkEyMDAxMjhCQjEgLyogUmVzb3VyY2VTZW1hbnRpYy5qcyAqLzsgfTsK
KwkJMUM1MUZGMDkyMTY2QzZBMzAwMTI4QkIxIC8qIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1h
bnRpYy5qcyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUM1MUZGMDAyMTY2QzZBMjAwMTI4QkIxIC8qIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRp
Yy5qcyAqLzsgfTsKKwkJMUM1MUZGMEEyMTY2QzZBMzAwMTI4QkIxIC8qIEZ1bmNBdHRyaWJ1dGUu
anMgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNTFG
RjAxMjE2NkM2QTIwMDEyOEJCMSAvKiBGdW5jQXR0cmlidXRlLmpzICovOyB9OworCQkxQzUxRkYw
QjIxNjZDNkEzMDAxMjhCQjEgLyogQ2hlY2tOYXRpdmVGdW5jU3RhZ2VzLmpzIGluIFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzUxRkYwMjIxNjZDNkEyMDAx
MjhCQjEgLyogQ2hlY2tOYXRpdmVGdW5jU3RhZ2VzLmpzICovOyB9OworCQkxQzUxRkYwQzIxNjZD
NkEzMDAxMjhCQjEgLyogUXVhbGlmaWVycy5qcyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1MUZGMDMyMTY2QzZBMjAwMTI4QkIxIC8qIFF1YWxpZmll
cnMuanMgKi87IH07CisJCTFDNTFGRjBEMjE2NkM2QTMwMDEyOEJCMSAvKiBTZW1hbnRpYy5qcyBp
biBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1MUZGMDQy
MTY2QzZBMjAwMTI4QkIxIC8qIFNlbWFudGljLmpzICovOyB9OworCQkxQzUxRkYwRTIxNjZDNkEz
MDAxMjhCQjEgLyogQnVpbHRJblNlbWFudGljLmpzIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzUxRkYwNTIxNjZDNkEyMDAxMjhCQjEgLyogQnVpbHRJ
blNlbWFudGljLmpzICovOyB9OworCQkxQzUxRkYwRjIxNjZDNkEzMDAxMjhCQjEgLyogRnVuY051
bVRocmVhZHNBdHRyaWJ1dGUuanMgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFDNTFGRjA2MjE2NkM2QTIwMDEyOEJCMSAvKiBGdW5jTnVtVGhyZWFkc0F0
dHJpYnV0ZS5qcyAqLzsgfTsKKwkJMUM1MUZGMTAyMTY2QzZBMzAwMTI4QkIxIC8qIFN0YWdlSW5P
dXRTZW1hbnRpYy5qcyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUM1MUZGMDcyMTY2QzZBMjAwMTI4QkIxIC8qIFN0YWdlSW5PdXRTZW1hbnRpYy5qcyAq
LzsgfTsKKwkJMUM1MUZGMTYyMTY4MTdCOTAwMTI4QkIxIC8qIFVuaWZvcm1pdHlDaGVja2VyLmpz
IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzUxRkYx
NTIxNjgxN0I4MDAxMjhCQjEgLyogVW5pZm9ybWl0eUNoZWNrZXIuanMgKi87IH07CisJCUMyQjk4
MjBBMjE2QzFDQ0EwMDFBRDhBNyAvKiBFbnRyeVBvaW50UGFyYW1ldGVyR2F0aGVyZXIuanMgaW4g
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQjk4MjA5MjE2
QzFDQzkwMDFBRDhBNyAvKiBFbnRyeVBvaW50UGFyYW1ldGVyR2F0aGVyZXIuanMgKi87IH07CiAJ
CUU5MDZCMDQ2MjExMzlCNzcwMEFEMUM1RSAvKiBKdWxpYS53aGxzbCBpbiBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTkwNkIwNDUyMTEzOUI3NzAwQUQxQzVF
IC8qIEp1bGlhLndobHNsICovOyB9OwogCQlFOTIxRDYzNjIxMzhDMDI2MDA3NzUwOTkgLyogT3Bl
cmF0b3JBbmRlckluZGV4ZXIuanMgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEU5MjFENjMyMjEzOEMwMjYwMDc3NTA5OSAvKiBPcGVyYXRvckFuZGVySW5k
ZXhlci5qcyAqLzsgfTsKIAkJRTkyMUQ2MzcyMTM4QzAyNjAwNzc1MDk5IC8qIE1hdHJpeFR5cGUu
anMgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU5MjFE
NjMzMjEzOEMwMjYwMDc3NTA5OSAvKiBNYXRyaXhUeXBlLmpzICovOyB9OwpAQCAtMjEwLDYgKzIy
MSwxNyBAQAogLyogRW5kIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCiAKIC8qIEJl
Z2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCQkxQzUxRkVGRjIxNjZDNkEyMDAxMjhC
QjEgLyogUmVzb3VyY2VTZW1hbnRpYy5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlw
dDsgbmFtZSA9IFJlc291cmNlU2VtYW50aWMuanM7IHBhdGggPSAuLi8uLi8uLi9SZXNvdXJjZVNl
bWFudGljLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUxRkYwMDIxNjZDNkEy
MDAxMjhCQjEgLyogU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmpzICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0gU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFu
dGljLmpzOyBwYXRoID0gLi4vLi4vLi4vU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmpz
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUxRkYwMTIxNjZDNkEyMDAxMjhCQjEg
LyogRnVuY0F0dHJpYnV0ZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgbmFt
ZSA9IEZ1bmNBdHRyaWJ1dGUuanM7IHBhdGggPSAuLi8uLi8uLi9GdW5jQXR0cmlidXRlLmpzOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUxRkYwMjIxNjZDNkEyMDAxMjhCQjEgLyog
Q2hlY2tOYXRpdmVGdW5jU3RhZ2VzLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0
OyBuYW1lID0gQ2hlY2tOYXRpdmVGdW5jU3RhZ2VzLmpzOyBwYXRoID0gLi4vLi4vLi4vQ2hlY2tO
YXRpdmVGdW5jU3RhZ2VzLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUxRkYw
MzIxNjZDNkEyMDAxMjhCQjEgLyogUXVhbGlmaWVycy5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
amF2YXNjcmlwdDsgbmFtZSA9IFF1YWxpZmllcnMuanM7IHBhdGggPSAuLi8uLi8uLi9RdWFsaWZp
ZXJzLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUxRkYwNDIxNjZDNkEyMDAx
MjhCQjEgLyogU2VtYW50aWMuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5h
bWUgPSBTZW1hbnRpYy5qczsgcGF0aCA9IC4uLy4uLy4uL1NlbWFudGljLmpzOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQzUxRkYwNTIxNjZDNkEyMDAxMjhCQjEgLyogQnVpbHRJblNl
bWFudGljLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0gQnVpbHRJ
blNlbWFudGljLmpzOyBwYXRoID0gLi4vLi4vLi4vQnVpbHRJblNlbWFudGljLmpzOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxQzUxRkYwNjIxNjZDNkEyMDAxMjhCQjEgLyogRnVuY051
bVRocmVhZHNBdHRyaWJ1dGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5h
bWUgPSBGdW5jTnVtVGhyZWFkc0F0dHJpYnV0ZS5qczsgcGF0aCA9IC4uLy4uLy4uL0Z1bmNOdW1U
aHJlYWRzQXR0cmlidXRlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUxRkYw
NzIxNjZDNkEyMDAxMjhCQjEgLyogU3RhZ2VJbk91dFNlbWFudGljLmpzICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0gU3RhZ2VJbk91dFNlbWFudGljLmpzOyBwYXRoID0g
Li4vLi4vLi4vU3RhZ2VJbk91dFNlbWFudGljLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxQzUxRkYxNTIxNjgxN0I4MDAxMjhCQjEgLyogVW5pZm9ybWl0eUNoZWNrZXIuanMgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUgPSBVbmlmb3JtaXR5Q2hlY2tlci5q
czsgcGF0aCA9IC4uLy4uLy4uL1VuaWZvcm1pdHlDaGVja2VyLmpzOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDMkI5ODIwOTIxNkMxQ0M5MDAxQUQ4QTcgLyogRW50cnlQb2ludFBhcmFt
ZXRlckdhdGhlcmVyLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0g
RW50cnlQb2ludFBhcmFtZXRlckdhdGhlcmVyLmpzOyBwYXRoID0gLi4vLi4vLi4vRW50cnlQb2lu
dFBhcmFtZXRlckdhdGhlcmVyLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFOTA2
QjA0NTIxMTM5Qjc3MDBBRDFDNUUgLyogSnVsaWEud2hsc2wgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gSnVsaWEud2hsc2w7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU5MjFENjMyMjEz
OEMwMjYwMDc3NTA5OSAvKiBPcGVyYXRvckFuZGVySW5kZXhlci5qcyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuamF2YXNjcmlwdDsgbmFtZSA9IE9wZXJhdG9yQW5kZXJJbmRleGVyLmpzOyBwYXRoID0g
Li4vLi4vLi4vT3BlcmF0b3JBbmRlckluZGV4ZXIuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUU5MjFENjMzMjEzOEMwMjYwMDc3NTA5OSAvKiBNYXRyaXhUeXBlLmpzICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0gTWF0cml4VHlwZS5qczsgcGF0aCA9IC4u
Ly4uLy4uL01hdHJpeFR5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01Njgs
NiArNTkwLDcgQEAKIAkJCQlFOTU1NjlCMDIwRjU2Q0Q2MDBGNUNGMzQgLyogQnJlYWsuanMgKi8s
CiAJCQkJRTkyMUQ2MzQyMTM4QzAyNjAwNzc1MDk5IC8qIEJ1aWx0aW5NYXRyaXhHZXR0ZXIuanMg
Ki8sCiAJCQkJRTkyMUQ2MzUyMTM4QzAyNjAwNzc1MDk5IC8qIEJ1aWx0aW5NYXRyaXhTZXR0ZXIu
anMgKi8sCisJCQkJMUM1MUZGMDUyMTY2QzZBMjAwMTI4QkIxIC8qIEJ1aWx0SW5TZW1hbnRpYy5q
cyAqLywKIAkJCQlFOTQxQUNCOTIxMzRBNUJCMDAzOTJCQTkgLyogQnVpbHRpblZlY3RvckdldHRl
ci5qcyAqLywKIAkJCQlFOTQxQUNCQzIxMzRBNUJCMDAzOTJCQTkgLyogQnVpbHRpblZlY3RvclNl
dHRlci5qcyAqLywKIAkJCQlFOTU1NjlCRjIwRjU2Q0Q3MDBGNUNGMzQgLyogQ2FsbEV4cHJlc3Np
b24uanMgKi8sCkBAIC01NzcsNiArNjAwLDcgQEAKIAkJCQlFOTU1NjlDMTIwRjU2Q0Q3MDBGNUNG
MzQgLyogQ2hlY2tlci5qcyAqLywKIAkJCQlFOTU1NjlCNjIwRjU2Q0Q2MDBGNUNGMzQgLyogQ2hl
Y2tMaXRlcmFsVHlwZXMuanMgKi8sCiAJCQkJRTk1NTY5QjMyMEY1NkNENjAwRjVDRjM0IC8qIENo
ZWNrTG9vcHMuanMgKi8sCisJCQkJMUM1MUZGMDIyMTY2QzZBMjAwMTI4QkIxIC8qIENoZWNrTmF0
aXZlRnVuY1N0YWdlcy5qcyAqLywKIAkJCQlFOTRDMDZGQTIwRjU2Q0EzMDA2NzI5OTIgLyogQ2hl
Y2tSZWN1cnNpb24uanMgKi8sCiAJCQkJRTk1NTY5QkIyMEY1NkNENjAwRjVDRjM0IC8qIENoZWNr
UmVjdXJzaXZlVHlwZXMuanMgKi8sCiAJCQkJRTk1NTY5QjIyMEY1NkNENjAwRjVDRjM0IC8qIENo
ZWNrUmV0dXJucy5qcyAqLywKQEAgLTU5Niw2ICs2MjAsNyBAQAogCQkJCUU5QUQwNzQ5MjBGNTZE
NUEwMDdGMjQ2NiAvKiBFQXJyYXlSZWYuanMgKi8sCiAJCQkJRTlBRDA3NDgyMEY1NkQ1QTAwN0Yy
NDY2IC8qIEVCdWZmZXIuanMgKi8sCiAJCQkJRTlBRDA3NEEyMEY1NkQ1QjAwN0YyNDY2IC8qIEVC
dWZmZXJCdWlsZGVyLmpzICovLAorCQkJCUMyQjk4MjA5MjE2QzFDQzkwMDFBRDhBNyAvKiBFbnRy
eVBvaW50UGFyYW1ldGVyR2F0aGVyZXIuanMgKi8sCiAJCQkJRTk0QzA2RkQyMEY1NkNBMzAwNjcy
OTkyIC8qIEVudW1MaXRlcmFsLmpzICovLAogCQkJCUU5QUQwNzU1MjBGNTZENjkwMDdGMjQ2NiAv
KiBFbnVtTWVtYmVyLmpzICovLAogCQkJCUU5QUQwNzVBMjBGNTZENjkwMDdGMjQ2NiAvKiBFbnVt
VHlwZS5qcyAqLywKQEAgLTYxMyw3ICs2MzgsOSBAQAogCQkJCUU5NTU2OUVCMjBGNTZEMDUwMEY1
Q0YzNCAvKiBGb2xkQ29uc3RleHBycy5qcyAqLywKIAkJCQlFOUZDRUI1QTIwRjU2RDkzMDA5QjM2
MjkgLyogRm9yTG9vcC5qcyAqLywKIAkJCQlFOUZDRUI1NTIwRjU2RDkyMDA5QjM2MjkgLyogRnVu
Yy5qcyAqLywKKwkJCQkxQzUxRkYwMTIxNjZDNkEyMDAxMjhCQjEgLyogRnVuY0F0dHJpYnV0ZS5q
cyAqLywKIAkJCQlFOTU1NjlFODIwRjU2RDA1MDBGNUNGMzQgLyogRnVuY0RlZi5qcyAqLywKKwkJ
CQkxQzUxRkYwNjIxNjZDNkEyMDAxMjhCQjEgLyogRnVuY051bVRocmVhZHNBdHRyaWJ1dGUuanMg
Ki8sCiAJCQkJRTk1NTY5RTkyMEY1NkQwNTAwRjVDRjM0IC8qIEZ1bmNQYXJhbWV0ZXIuanMgKi8s
CiAJCQkJRTk1NTY5RTYyMEY1NkQwNTAwRjVDRjM0IC8qIEZ1bmN0aW9uTGlrZUJsb2NrLmpzICov
LAogCQkJCUU5NEMwNkZCMjBGNTZDQTMwMDY3Mjk5MiAvKiBIaWdoWm9tYmllRmluZGVyLmpzICov
LApAQCAtNjY5LDYgKzY5Niw3IEBACiAJCQkJRTkyRDEwMjMyMEY1NkUyRjAwRDc3NkIyIC8qIFBy
b3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5qcyAqLywKIAkJCQlFOTJEMTAyMDIwRjU2RTJGMDBENzc2
QjIgLyogUHJvcGVydHlSZXNvbHZlci5qcyAqLywKIAkJCQlFOTJEMTAyQjIwRjU2RTNGMDBENzc2
QjIgLyogUHRyVHlwZS5qcyAqLywKKwkJCQkxQzUxRkYwMzIxNjZDNkEyMDAxMjhCQjEgLyogUXVh
bGlmaWVycy5qcyAqLywKIAkJCQlFOTJEMTAyQTIwRjU2RTNGMDBENzc2QjIgLyogUmVhZE1vZGlm
eVdyaXRlRXhwcmVzc2lvbi5qcyAqLywKIAkJCQlFOTJEMTAyQzIwRjU2RTNGMDBENzc2QjIgLyog
UmVjdXJzaW9uQ2hlY2tlci5qcyAqLywKIAkJCQlFOTJEMTAyRTIwRjU2RTQwMDBENzc2QjIgLyog
UmVjdXJzaXZlVHlwZUNoZWNrZXIuanMgKi8sCkBAIC02NzcsMTEgKzcwNSwxNSBAQAogCQkJCUU5
MkQxMDM4MjBGNTZFNEYwMEQ3NzZCMiAvKiBSZXNvbHZlT3ZlcmxvYWRJbXBsLmpzICovLAogCQkJ
CUU5MkQxMDM2MjBGNTZFNEYwMEQ3NzZCMiAvKiBSZXNvbHZlUHJvcGVydGllcy5qcyAqLywKIAkJ
CQlFOTJEMTAzNzIwRjU2RTRGMDBENzc2QjIgLyogUmVzb2x2ZVR5cGVEZWZzLmpzICovLAorCQkJ
CTFDNTFGRUZGMjE2NkM2QTIwMDEyOEJCMSAvKiBSZXNvdXJjZVNlbWFudGljLmpzICovLAogCQkJ
CUU5MkQxMDNFMjBGNTZFNjEwMEQ3NzZCMiAvKiBSZXR1cm4uanMgKi8sCiAJCQkJRTkyRDEwNDAy
MEY1NkU2MjAwRDc3NkIyIC8qIFJldHVybkNoZWNrZXIuanMgKi8sCiAJCQkJRTkyRDEwNDIyMEY1
NkU2MjAwRDc3NkIyIC8qIFJldHVybkV4Y2VwdGlvbi5qcyAqLywKIAkJCQlFOTJEMTA0MTIwRjU2
RTYyMDBENzc2QjIgLyogUmV3cml0ZXIuanMgKi8sCiAJCQkJRTlEN0NCOUQyMTRCODJCODAwRjFD
OTE4IC8qIFNhbXBsZXIuanMgKi8sCisJCQkJMUM1MUZGMDQyMTY2QzZBMjAwMTI4QkIxIC8qIFNl
bWFudGljLmpzICovLAorCQkJCTFDNTFGRjAwMjE2NkM2QTIwMDEyOEJCMSAvKiBTcGVjaWFsaXph
dGlvbkNvbnN0YW50U2VtYW50aWMuanMgKi8sCisJCQkJMUM1MUZGMDcyMTY2QzZBMjAwMTI4QkIx
IC8qIFN0YWdlSW5PdXRTZW1hbnRpYy5qcyAqLywKIAkJCQlFOTJEMTAzRjIwRjU2RTYyMDBENzc2
QjIgLyogU3RhbmRhcmRMaWJyYXJ5LmpzICovLAogCQkJCUU5MkQxMDQ4MjBGNTZFNzMwMEQ3NzZC
MiAvKiBTdGF0ZW1lbnRDbG9uZXIuanMgKi8sCiAJCQkJRTkyRDEwNDkyMEY1NkU3MzAwRDc3NkIy
IC8qIFN0cnVjdExheW91dEJ1aWxkZXIuanMgKi8sCkBAIC03MDgsNiArNzQwLDcgQEAKIAkJCQlF
OTJEMTA2ODIwRjU2RUE0MDBENzc2QjIgLyogVWludExpdGVyYWwuanMgKi8sCiAJCQkJRTkyRDEw
NjcyMEY1NkVBNDAwRDc3NkIyIC8qIFVpbnRMaXRlcmFsVHlwZS5qcyAqLywKIAkJCQlFOTJEMTA3
MjIwRjU2RUJCMDBENzc2QjIgLyogVW5pZmljYXRpb25Db250ZXh0LmpzICovLAorCQkJCTFDNTFG
RjE1MjE2ODE3QjgwMDEyOEJCMSAvKiBVbmlmb3JtaXR5Q2hlY2tlci5qcyAqLywKIAkJCQlFOTJE
MTA3MzIwRjU2RUJDMDBENzc2QjIgLyogVW5yZWFjaGFibGVDb2RlQ2hlY2tlci5qcyAqLywKIAkJ
CQlFOTJEMTA3NDIwRjU2RUJDMDBENzc2QjIgLyogVmFsdWUuanMgKi8sCiAJCQkJRTkyRDEwNzAy
MEY1NkVCQjAwRDc3NkIyIC8qIFZhcmlhYmxlRGVjbC5qcyAqLywKQEAgLTgyMiw2ICs4NTUsNyBA
QAogCQkJCUU5MkQxMTFGMjBGNzA2MEUwMEQ3NzZCMiAvKiBCcmVhay5qcyBpbiBSZXNvdXJjZXMg
Ki8sCiAJCQkJRTkyMUQ2MzgyMTM4QzAyNjAwNzc1MDk5IC8qIEJ1aWx0aW5NYXRyaXhHZXR0ZXIu
anMgaW4gUmVzb3VyY2VzICovLAogCQkJCUU5MjFENjM5MjEzOEMwMjYwMDc3NTA5OSAvKiBCdWls
dGluTWF0cml4U2V0dGVyLmpzIGluIFJlc291cmNlcyAqLywKKwkJCQkxQzUxRkYwRTIxNjZDNkEz
MDAxMjhCQjEgLyogQnVpbHRJblNlbWFudGljLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTQx
QUNDQTIxMzRBNUJDMDAzOTJCQTkgLyogQnVpbHRpblZlY3RvckdldHRlci5qcyBpbiBSZXNvdXJj
ZXMgKi8sCiAJCQkJRTk0MUFDQ0QyMTM0QTVCQzAwMzkyQkE5IC8qIEJ1aWx0aW5WZWN0b3JTZXR0
ZXIuanMgaW4gUmVzb3VyY2VzICovLAogCQkJCUU5MkQxMTIwMjBGNzA2MEUwMEQ3NzZCMiAvKiBD
YWxsRXhwcmVzc2lvbi5qcyBpbiBSZXNvdXJjZXMgKi8sCkBAIC04MzEsNiArODY1LDcgQEAKIAkJ
CQlFOTJEMTEyMzIwRjcwNjBFMDBENzc2QjIgLyogQ2hlY2tlci5qcyBpbiBSZXNvdXJjZXMgKi8s
CiAJCQkJRTkyRDExMjQyMEY3MDYwRTAwRDc3NkIyIC8qIENoZWNrTGl0ZXJhbFR5cGVzLmpzIGlu
IFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTEyNTIwRjcwNjBFMDBENzc2QjIgLyogQ2hlY2tMb29w
cy5qcyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJMUM1MUZGMEIyMTY2QzZBMzAwMTI4QkIxIC8qIENo
ZWNrTmF0aXZlRnVuY1N0YWdlcy5qcyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJRTkyRDExMjYyMEY3
MDYwRTAwRDc3NkIyIC8qIENoZWNrUmVjdXJzaW9uLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlF
OTJEMTEyNzIwRjcwNjBFMDBENzc2QjIgLyogQ2hlY2tSZWN1cnNpdmVUeXBlcy5qcyBpbiBSZXNv
dXJjZXMgKi8sCiAJCQkJRTkyRDExMjgyMEY3MDYwRTAwRDc3NkIyIC8qIENoZWNrUmV0dXJucy5q
cyBpbiBSZXNvdXJjZXMgKi8sCkBAIC04NTEsNiArODg2LDcgQEAKIAkJCQlFOTJEMTEzOTIwRjcw
NjBFMDBENzc2QjIgLyogRUFycmF5UmVmLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTEz
QTIwRjcwNjBFMDBENzc2QjIgLyogRUJ1ZmZlci5qcyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJRTky
RDExM0IyMEY3MDYwRTAwRDc3NkIyIC8qIEVCdWZmZXJCdWlsZGVyLmpzIGluIFJlc291cmNlcyAq
LywKKwkJCQlDMkI5ODIwQTIxNkMxQ0NBMDAxQUQ4QTcgLyogRW50cnlQb2ludFBhcmFtZXRlckdh
dGhlcmVyLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTEzQzIwRjcwNjBFMDBENzc2QjIg
LyogRW51bUxpdGVyYWwuanMgaW4gUmVzb3VyY2VzICovLAogCQkJCUU5MkQxMTNEMjBGNzA2MEUw
MEQ3NzZCMiAvKiBFbnVtTWVtYmVyLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTEzRTIw
RjcwNjBFMDBENzc2QjIgLyogRW51bVR5cGUuanMgaW4gUmVzb3VyY2VzICovLApAQCAtODY4LDcg
KzkwNCw5IEBACiAJCQkJRTkyRDExNEIyMEY3MDYwRTAwRDc3NkIyIC8qIEZvbGRDb25zdGV4cHJz
LmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTE0QzIwRjcwNjBFMDBENzc2QjIgLyogRm9y
TG9vcC5qcyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJRTkyRDExNEQyMEY3MDYwRTAwRDc3NkIyIC8q
IEZ1bmMuanMgaW4gUmVzb3VyY2VzICovLAorCQkJCTFDNTFGRjBBMjE2NkM2QTMwMDEyOEJCMSAv
KiBGdW5jQXR0cmlidXRlLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTE0RTIwRjcwNjBF
MDBENzc2QjIgLyogRnVuY0RlZi5qcyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJMUM1MUZGMEYyMTY2
QzZBMzAwMTI4QkIxIC8qIEZ1bmNOdW1UaHJlYWRzQXR0cmlidXRlLmpzIGluIFJlc291cmNlcyAq
LywKIAkJCQlFOTJEMTE1MDIwRjcwNjBFMDBENzc2QjIgLyogRnVuY1BhcmFtZXRlci5qcyBpbiBS
ZXNvdXJjZXMgKi8sCiAJCQkJRTkyRDExNTEyMEY3MDYwRTAwRDc3NkIyIC8qIEZ1bmN0aW9uTGlr
ZUJsb2NrLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTE1MjIwRjcwNjBFMDBENzc2QjIg
LyogSGlnaFpvbWJpZUZpbmRlci5qcyBpbiBSZXNvdXJjZXMgKi8sCkBAIC05MjcsNiArOTY1LDcg
QEAKIAkJCQlFOTJEMTE3NzIwRjcwNjBFMDBENzc2QjIgLyogUHJvcGVydHlBY2Nlc3NFeHByZXNz
aW9uLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTE3ODIwRjcwNjBFMDBENzc2QjIgLyog
UHJvcGVydHlSZXNvbHZlci5qcyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJRTkyRDExN0QyMEY3MDYw
RTAwRDc3NkIyIC8qIFB0clR5cGUuanMgaW4gUmVzb3VyY2VzICovLAorCQkJCTFDNTFGRjBDMjE2
NkM2QTMwMDEyOEJCMSAvKiBRdWFsaWZpZXJzLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJE
MTE3RTIwRjcwNjBFMDBENzc2QjIgLyogUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5qcyBpbiBS
ZXNvdXJjZXMgKi8sCiAJCQkJRTkyRDExN0YyMEY3MDYwRTAwRDc3NkIyIC8qIFJlY3Vyc2lvbkNo
ZWNrZXIuanMgaW4gUmVzb3VyY2VzICovLAogCQkJCUU5MkQxMTgwMjBGNzA2MEUwMEQ3NzZCMiAv
KiBSZWN1cnNpdmVUeXBlQ2hlY2tlci5qcyBpbiBSZXNvdXJjZXMgKi8sCkBAIC05MzUsMTEgKzk3
NCwxNSBAQAogCQkJCUU5MkQxMTgzMjBGNzA2MEUwMEQ3NzZCMiAvKiBSZXNvbHZlT3ZlcmxvYWRJ
bXBsLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTE4NDIwRjcwNjBFMDBENzc2QjIgLyog
UmVzb2x2ZVByb3BlcnRpZXMuanMgaW4gUmVzb3VyY2VzICovLAogCQkJCUU5MkQxMTg1MjBGNzA2
MEUwMEQ3NzZCMiAvKiBSZXNvbHZlVHlwZURlZnMuanMgaW4gUmVzb3VyY2VzICovLAorCQkJCTFD
NTFGRjA4MjE2NkM2QTMwMDEyOEJCMSAvKiBSZXNvdXJjZVNlbWFudGljLmpzIGluIFJlc291cmNl
cyAqLywKIAkJCQlFOTJEMTE4NjIwRjcwNjBFMDBENzc2QjIgLyogUmV0dXJuLmpzIGluIFJlc291
cmNlcyAqLywKIAkJCQlFOTJEMTE4NzIwRjcwNjBFMDBENzc2QjIgLyogUmV0dXJuQ2hlY2tlci5q
cyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJRTkyRDExODgyMEY3MDYwRTAwRDc3NkIyIC8qIFJldHVy
bkV4Y2VwdGlvbi5qcyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJRTkyRDExODkyMEY3MDYwRTAwRDc3
NkIyIC8qIFJld3JpdGVyLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOUQ3Q0JBMzIxNEI4MkI4
MDBGMUM5MTggLyogU2FtcGxlci5qcyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJMUM1MUZGMEQyMTY2
QzZBMzAwMTI4QkIxIC8qIFNlbWFudGljLmpzIGluIFJlc291cmNlcyAqLywKKwkJCQkxQzUxRkYw
OTIxNjZDNkEzMDAxMjhCQjEgLyogU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmpzIGlu
IFJlc291cmNlcyAqLywKKwkJCQkxQzUxRkYxMDIxNjZDNkEzMDAxMjhCQjEgLyogU3RhZ2VJbk91
dFNlbWFudGljLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTE4QTIwRjcwNjBFMDBENzc2
QjIgLyogU3RhbmRhcmRMaWJyYXJ5LmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTE4QjIw
RjcwNjBFMDBENzc2QjIgLyogU3RhdGVtZW50Q2xvbmVyLmpzIGluIFJlc291cmNlcyAqLywKIAkJ
CQlFOTJEMTE4QzIwRjcwNjBFMDBENzc2QjIgLyogU3RydWN0TGF5b3V0QnVpbGRlci5qcyBpbiBS
ZXNvdXJjZXMgKi8sCkBAIC05NjYsNiArMTAwOSw3IEBACiAJCQkJRTkyRDExOUQyMEY3MDYwRTAw
RDc3NkIyIC8qIFVpbnRMaXRlcmFsLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTE5RTIw
RjcwNjBFMDBENzc2QjIgLyogVWludExpdGVyYWxUeXBlLmpzIGluIFJlc291cmNlcyAqLywKIAkJ
CQlFOTJEMTE5RjIwRjcwNjBFMDBENzc2QjIgLyogVW5pZmljYXRpb25Db250ZXh0LmpzIGluIFJl
c291cmNlcyAqLywKKwkJCQkxQzUxRkYxNjIxNjgxN0I5MDAxMjhCQjEgLyogVW5pZm9ybWl0eUNo
ZWNrZXIuanMgaW4gUmVzb3VyY2VzICovLAogCQkJCUU5MkQxMUEwMjBGNzA2MEUwMEQ3NzZCMiAv
KiBVbnJlYWNoYWJsZUNvZGVDaGVja2VyLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTFB
MTIwRjcwNjBFMDBENzc2QjIgLyogVmFsdWUuanMgaW4gUmVzb3VyY2VzICovLAogCQkJCUU5MkQx
MUEyMjBGNzA2MEUwMEQ3NzZCMiAvKiBWYXJpYWJsZURlY2wuanMgaW4gUmVzb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcwppbmRleCBjZDQ0ZDAzZmI2M2YzM2Jl
OTlkYzQ0ZGJiY2M0Y2ZhYmUyZGE4YzdiLi4xODM4MmY0MmEzNzdiNDZmZGFmMzdiMGY2Y2RkMDUx
MTg0OGE1ODNhIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJz
ZS5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcwpAQCAtMzAx
LDYgKzMwMSwxNyBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQs
IGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQog
CisgICAgZnVuY3Rpb24gcGFyc2VRdWFsaWZpZXJzKCkKKyAgICB7CisgICAgICAgIGxldCBxdWFs
aWZpZXJzID0gW107CisgICAgICAgIGxldCB0b2tlbjsKKyAgICAgICAgd2hpbGUgKHRva2VuID0g
dHJ5Q29uc3VtZSgibm9pbnRlcnBvbGF0aW9uIiwgIm5vcGVyc3BlY3RpdmUiLCAiY2VudHJvaWQi
LCAic2FtcGxlIikpCisgICAgICAgICAgICBxdWFsaWZpZXJzLnB1c2godG9rZW4pOworICAgICAg
ICBpZiAocXVhbGlmaWVycy5sZW5ndGggPT0gMCkKKyAgICAgICAgICAgIHJldHVybiBudWxsOwor
ICAgICAgICByZXR1cm4gbmV3IFF1YWxpZmllcnMocXVhbGlmaWVycyk7CisgICAgfQorCiAgICAg
ZnVuY3Rpb24gcGFyc2VUeXBlKCkKICAgICB7CiAgICAgICAgIGxldCB0b2tlbjsKQEAgLTk0Niw2
ICs5NTcsOSBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxp
bmVOdW1iZXJPZmZzZXQsIHRleHQpCiAKICAgICBmdW5jdGlvbiBwYXJzZVZhcmlhYmxlRGVjbHMo
KQogICAgIHsKKyAgICAgICAgbGV0IHVuaWZvcm1pdHkgPSB0cnlDb25zdW1lKCJ1bmlmb3JtIik7
CisgICAgICAgIGlmICh1bmlmb3JtaXR5KQorICAgICAgICAgICAgdW5pZm9ybWl0eSA9IHVuaWZv
cm1pdHkudGV4dDsKICAgICAgICAgbGV0IHR5cGUgPSBwYXJzZVR5cGUoKTsKICAgICAgICAgaWYg
KHR5cGUgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCiAgICAgICAgICAgICByZXR1cm4gdHlwZTsK
QEAgLTk1Nyw3ICs5NzEsNyBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdp
bktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgICAgICBsZXQgaW5pdGlhbGl6
ZXIgPSB0cnlDb25zdW1lKCI9IikgPyBwYXJzZUV4cHJlc3Npb24oKSA6IG51bGw7CiAgICAgICAg
ICAgICBpZiAoaW5pdGlhbGl6ZXIgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGluaXRpYWxpemVyOwotICAgICAgICAgICAgbGlzdC5wdXNoKG5ldyBWYXJp
YWJsZURlY2wobmFtZSwgbmFtZS50ZXh0LCB0eXBlLCBpbml0aWFsaXplcikpOworICAgICAgICAg
ICAgbGlzdC5wdXNoKG5ldyBWYXJpYWJsZURlY2wobmFtZSwgbmFtZS50ZXh0LCB0eXBlLCBpbml0
aWFsaXplciwgdW5pZm9ybWl0eSkpOwogICAgICAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25z
dW1lKCIsIiwgIjsiKTsKICAgICAgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5
bnRheEVycm9yKQogICAgICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwpAQCAtMTA4MSw2
ICsxMDk1LDEwIEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwg
bGluZU51bWJlck9mZnNldCwgdGV4dCkKIAogICAgIGZ1bmN0aW9uIHBhcnNlUGFyYW1ldGVyKCkK
ICAgICB7CisgICAgICAgIGxldCBxdWFsaWZpZXJzID0gcGFyc2VRdWFsaWZpZXJzKCk7CisgICAg
ICAgIGxldCB1bmlmb3JtaXR5ID0gdHJ5Q29uc3VtZSgidW5pZm9ybSIpOworICAgICAgICBpZiAo
dW5pZm9ybWl0eSkKKyAgICAgICAgICAgIHVuaWZvcm1pdHkgPSB1bmlmb3JtaXR5LnRleHQ7CiAg
ICAgICAgIGxldCB0eXBlID0gcGFyc2VUeXBlKCk7CiAgICAgICAgIGlmICh0eXBlIGluc3RhbmNl
b2YgV1N5bnRheEVycm9yKQogICAgICAgICAgICAgcmV0dXJuIHR5cGU7CkBAIC0xMDkxLDcgKzEx
MDksNyBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVO
dW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgICAgICBpZiAoc2VtYW50aWMgaW5zdGFuY2VvZiBX
U3ludGF4RXJyb3IpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbWFudGljOwogICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBuZXcgRnVuY1BhcmFtZXRlcih0eXBlLm9yaWdpbiwgbmFtZSA/IG5h
bWUudGV4dCA6IG51bGwsIHR5cGUsIHNlbWFudGljKTsKKyAgICAgICAgcmV0dXJuIG5ldyBGdW5j
UGFyYW1ldGVyKHR5cGUub3JpZ2luLCBuYW1lID8gbmFtZS50ZXh0IDogbnVsbCwgdHlwZSwgcXVh
bGlmaWVycywgdW5pZm9ybWl0eSwgc2VtYW50aWMpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHBh
cnNlUGFyYW1ldGVycygpCkBAIC0xMzc4LDYgKzEzOTYsNyBAQCBmdW5jdGlvbiBwYXJzZShwcm9n
cmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAKICAgICBm
dW5jdGlvbiBwYXJzZUZpZWxkKCkKICAgICB7CisgICAgICAgIGxldCBxdWFsaWZpZXJzID0gcGFy
c2VRdWFsaWZpZXJzKCk7CiAgICAgICAgIGxldCB0eXBlID0gcGFyc2VUeXBlKCk7CiAgICAgICAg
IGlmICh0eXBlIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQogICAgICAgICAgICAgcmV0dXJuIHR5
cGU7CkBAIC0xMzkzLDcgKzE0MTIsNyBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4s
IG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgIGxldCBtYXliZUVy
cm9yID0gY29uc3VtZSgiOyIpOwogICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdT
eW50YXhFcnJvcikKICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwotICAgICAgICByZXR1
cm4gbmV3IEZpZWxkKG5hbWUsIG5hbWUudGV4dCwgdHlwZSwgc2VtYW50aWMpOworICAgICAgICBy
ZXR1cm4gbmV3IEZpZWxkKG5hbWUsIG5hbWUudGV4dCwgdHlwZSwgcXVhbGlmaWVycywgc2VtYW50
aWMpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHBhcnNlU3RydWN0VHlwZSgpCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QcmVwYXJlLmpzIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvUHJlcGFyZS5qcwppbmRleCBkNzhmOTc0Zjg3ZTY0Zjg4ZGU2ZmEx
YzhmMDFlZWRkZjFmOGMxOTVmLi45YWE2ZWQ0OTFmYzJkNmM1MWUxYjliZDA5YTIzNmU0OGVhYzU2
ZGIyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QcmVwYXJlLmpz
CisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1ByZXBhcmUuanMKQEAgLTU1LDYg
KzU1LDcgQEAgbGV0IHByZXBhcmUgPSAoKCkgPT4gewogICAgICAgICBjaGVja1R5cGVzV2l0aEFy
Z3VtZW50cyhwcm9ncmFtKTsKIAogICAgICAgICBjaGVjayhwcm9ncmFtKTsKKyAgICAgICAgLy9j
aGVja1VuaWZvcm1zKHByb2dyYW0pOwogICAgICAgICBjaGVja0xpdGVyYWxUeXBlcyhwcm9ncmFt
KTsKICAgICAgICAgcmVzb2x2ZVByb3BlcnRpZXMocHJvZ3JhbSk7CiAgICAgICAgIGZpbmRIaWdo
Wm9tYmllcyhwcm9ncmFtKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1F1YWxpZmllcnMuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9RdWFsaWZp
ZXJzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQwZDgzM2NlNThiZTcwYzg3ZTU5Zjc4N2ZhYzFmNTZmMmQ5OWFl
OTIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9RdWFs
aWZpZXJzLmpzCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworY2xhc3MgUXVhbGlmaWVycyBleHRlbmRz
IE5vZGUgeworICAgIGNvbnN0cnVjdG9yKHRva2VucykKKyAgICB7CisgICAgICAgIHN1cGVyKCk7
CisgICAgICAgIHRoaXMuX25vaW50ZXJwb2xhdGlvbiA9IG51bGw7CisgICAgICAgIHRoaXMuX25v
cGVyc3BlY3RpdmUgPSBudWxsOworICAgICAgICB0aGlzLl9jZW50cm9pZCA9IG51bGw7CisgICAg
ICAgIHRoaXMuX3NhbXBsZSA9IG51bGw7CisgICAgICAgIHRoaXMuX29yaWdpblN0cmluZyA9IG51
bGw7CisKKyAgICAgICAgaWYgKHRva2Vucy5sZW5ndGggPiAwKQorICAgICAgICAgICAgdGhpcy5f
b3JpZ2luU3RyaW5nID0gdG9rZW5zWzBdLm9yaWdpblN0cmluZzsKKworICAgICAgICBmb3IgKGxl
dCB0b2tlbiBvZiB0b2tlbnMpIHsKKyAgICAgICAgICAgIHN3aXRjaCAodG9rZW4udGV4dCkgewor
ICAgICAgICAgICAgICAgIGNhc2UgIm5vaW50ZXJwb2xhdGlvbiI6CisgICAgICAgICAgICAgICAg
ICAgIGlmICh0aGlzLm5vaW50ZXJwb2xhdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgICAgICAgICB0aGlzLl9ub2ludGVycG9sYXRpb24gPSB0b2tl
bjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAibm9w
ZXJzcGVjdGl2ZSI6CisgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm5vcGVyc3BlY3RpdmUp
CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAg
dGhpcy5fbm9wZXJzcGVjdGl2ZSA9IHRva2VuOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICBjYXNlICJjZW50cm9pZCI6CisgICAgICAgICAgICAgICAgICAgIGlm
ICh0aGlzLmNlbnRyb2lkKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICAgICAgICAgIHRoaXMuX2NlbnRyb2lkID0gdG9rZW47CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgInNhbXBsZSI6CisgICAgICAgICAgICAg
ICAgICAgIGlmICh0aGlzLnNhbXBsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgICAgICAgICB0aGlzLl9zYW1wbGUgPSB0b2tlbjsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHF1YWxpZmllcjogJHt0b2tlbi50ZXh0fWAp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgZ2V0IG5vaW50ZXJwb2xh
dGlvbigpIHsgcmV0dXJuIHRoaXMuX25vaW50ZXJwb2xhdGlvbjsgfQorICAgIGdldCBub3BlcnNw
ZWN0aXZlKCkgeyByZXR1cm4gdGhpcy5fbm9wZXJzcGVjdGl2ZTsgfQorICAgIGdldCBjZW50cm9p
ZCgpIHsgcmV0dXJuIHRoaXMuX2NlbnRyb2lkOyB9CisgICAgZ2V0IHNhbXBsZSgpIHsgcmV0dXJu
IHRoaXMuX3NhbXBsZTsgfQorCisgICAgZ2V0IGlzVmFsaWQoKQorICAgIHsKKyAgICAgICAgaWYg
KHRoaXMubm9pbnRlcnBvbGF0aW9uICYmIHRoaXMubm9wZXJzcGVjdGl2ZSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKHRoaXMuY2VudHJvaWQgJiYgdGhpcy5zYW1wbGUp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KworICAgIGdldCB0b2tlbnMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFt0aGlzLm5vaW50ZXJw
b2xhdGlvbiwgdGhpcy5ub3BlcnNwZWN0aXZlLCB0aGlzLmNlbnRyb2lkLCB0aGlzLnNhbXBsZV0u
ZmlsdGVyKHggPT4geCk7CisgICAgfQorCisgICAgZ2V0IGxlbmd0aCgpCisgICAgeworICAgICAg
ICByZXR1cm4gdGhpcy50b2tlbnMubGVuZ3RoOworICAgIH0KKworICAgIGdldCBvcmlnaW5TdHJp
bmcoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX29yaWdpblN0cmluZzsKKyAgICB9CisK
KyAgICB0b1N0cmluZygpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy50b2tlbnMubWFwKHgg
PT4geC50ZXh0KS5qb2luKCIgIik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9SZXdyaXRlci5qcwppbmRleCA0OGM2OTc4OGVjNjg5OGVjMDczZmMyMTVmM2FhMTM3NTBi
ZWMwODU0Li45M2E4ZjYxNTQxNTU1YjdkNzczYWYyYWE5OTVmMDhlMWM2NGU0YTg0IDEwMDY0NAot
LS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5qcworKysgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5qcwpAQCAtNjAsNyArNjAsMTEgQEAg
Y2xhc3MgUmV3cml0ZXIgewogICAgIAogICAgIHZpc2l0RnVuY1BhcmFtZXRlcihub2RlKQogICAg
IHsKLSAgICAgICAgbGV0IHJlc3VsdCA9IG5ldyBGdW5jUGFyYW1ldGVyKG5vZGUub3JpZ2luLCBu
b2RlLm5hbWUsIG5vZGUudHlwZS52aXNpdCh0aGlzKSwgTm9kZS52aXNpdChub2RlLnNlbWFudGlj
LCB0aGlzKSk7CisgICAgICAgIGxldCByZXN1bHQgPSBuZXcgRnVuY1BhcmFtZXRlcihub2RlLm9y
aWdpbiwgbm9kZS5uYW1lLAorICAgICAgICAgICAgbm9kZS50eXBlLnZpc2l0KHRoaXMpLAorICAg
ICAgICAgICAgTm9kZS52aXNpdChub2RlLnF1YWxpZmllcnMsIHRoaXMpLAorICAgICAgICAgICAg
bm9kZS51bmlmb3JtaXR5LAorICAgICAgICAgICAgTm9kZS52aXNpdChub2RlLnNlbWFudGljLCB0
aGlzKSk7CiAgICAgICAgIHRoaXMuX21hcE5vZGUobm9kZSwgcmVzdWx0KTsKICAgICAgICAgcmVz
dWx0LmVQdHIgPSBub2RlLmVQdHI7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC03MSw3ICs3
NSw4IEBAIGNsYXNzIFJld3JpdGVyIHsKICAgICAgICAgbGV0IHJlc3VsdCA9IG5ldyBWYXJpYWJs
ZURlY2woCiAgICAgICAgICAgICBub2RlLm9yaWdpbiwgbm9kZS5uYW1lLAogICAgICAgICAgICAg
bm9kZS50eXBlLnZpc2l0KHRoaXMpLAotICAgICAgICAgICAgTm9kZS52aXNpdChub2RlLmluaXRp
YWxpemVyLCB0aGlzKSk7CisgICAgICAgICAgICBOb2RlLnZpc2l0KG5vZGUuaW5pdGlhbGl6ZXIs
IHRoaXMpLAorICAgICAgICAgICAgbm9kZS51bmlmb3JtaXR5KTsKICAgICAgICAgdGhpcy5fbWFw
Tm9kZShub2RlLCByZXN1bHQpOwogICAgICAgICByZXN1bHQuZVB0ciA9IG5vZGUuZVB0cjsKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTEwNSw3ICsxMTAsNyBAQCBjbGFzcyBSZXdyaXRlciB7
CiAgICAgCiAgICAgdmlzaXRGaWVsZChub2RlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBG
aWVsZChub2RlLm9yaWdpbiwgbm9kZS5uYW1lLCBub2RlLnR5cGUudmlzaXQodGhpcyksIE5vZGUu
dmlzaXQobm9kZS5zZW1hbnRpYywgdGhpcykpOworICAgICAgICByZXR1cm4gbmV3IEZpZWxkKG5v
ZGUub3JpZ2luLCBub2RlLm5hbWUsIG5vZGUudHlwZS52aXNpdCh0aGlzKSwgTm9kZS52aXNpdChu
b2RlLnF1YWxpZmllcnMsIHRoaXMpLCBOb2RlLnZpc2l0KG5vZGUuc2VtYW50aWMsIHRoaXMpKTsK
ICAgICB9CiAgICAgCiAgICAgdmlzaXRFbnVtTWVtYmVyKG5vZGUpCkBAIC00MjAsNSArNDI1LDEw
IEBAIGNsYXNzIFJld3JpdGVyIHsKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgU3BlY2lhbGl6
YXRpb25Db25zdGFudFNlbWFudGljKG5vZGUub3JpZ2luKTsKICAgICB9CisKKyAgICB2aXNpdFF1
YWxpZmllcnMobm9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgUXVhbGlmaWVycyhub2Rl
LnRva2Vucyk7CisgICAgfQogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9TUElSVi5odG1sIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYu
aHRtbAppbmRleCBjYTQ1MGY3NmU0ODMxMWUwZDY3NWNkYmJlYzZiYmZiNGE1MTQ2YTI5Li5mNzA5
ZWI4ZmRlZjVhYjQwNjk3MjI5MTc3MTU4MTljMDFjMWM5ZjE5IDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TUElSVi5odG1sCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1NQSVJWLmh0bWwKQEAgLTYxLDYgKzYxLDcgQEAgdGQgewogICAgIDxzY3Jp
cHQgc3JjPSJFQnVmZmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iRUJ1ZmZlckJ1
aWxkZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJFUHRyLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0iRW50cnlQb2ludFBhcmFtZXRlckdhdGhlcmVyLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iRW51bUxpdGVyYWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJFbnVtTWVtYmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iRW51bVR5
cGUuanMiPjwvc2NyaXB0PgpAQCAtMTE4LDYgKzExOSw3IEBAIHRkIHsKICAgICA8c2NyaXB0IHNy
Yz0iUHJvZ3JhbS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlByb2dyYW1XaXRoVW5u
ZWNlc3NhcnlUaGluZ3NSZW1vdmVkLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUHRy
VHlwZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlF1YWxpZmllcnMuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUmVjdXJzaW9uQ2hlY2tlci5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IlJlY3Vyc2l2ZVR5cGVDaGVja2VyLmpzIj48L3NjcmlwdD4KQEAgLTE1
NSw2ICsxNTcsNyBAQCB0ZCB7CiAgICAgPHNjcmlwdCBzcmM9IlVpbnRMaXRlcmFsLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVWludExpdGVyYWxUeXBlLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iVW5pZmljYXRpb25Db250ZXh0LmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iVW5pZm9ybWl0eUNoZWNrZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJVbnJlYWNoYWJsZUNvZGVDaGVja2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
VmFyaWFibGVEZWNsLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmFyaWFibGVSZWYu
anMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
VGVzdC5odG1sIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCmluZGV4
IGEyMDMxNTJlOGQ2ZDQ1ZDc5NTQ5MDdhYzNkYjUxOTg2M2IxYTRlY2UuLjkxNDM0MTYxYzlhNzRk
ZDI1ODhmZGFlNGE3Yjk3OGU1YmFiMjQ2ZmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1Rlc3QuaHRtbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9UZXN0Lmh0bWwKQEAgLTU1LDYgKzU1LDcgQEAKIDxzY3JpcHQgc3JjPSJFQnVmZmVyLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJFQnVmZmVyQnVpbGRlci5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iRVB0ci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iRW50cnlQb2ludFBhcmFt
ZXRlckdhdGhlcmVyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJFbnVtTGl0ZXJhbC5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iRW51bU1lbWJlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iRW51bVR5cGUuanMiPjwvc2NyaXB0PgpAQCAtMTEyLDYgKzExMyw3IEBACiA8c2NyaXB0
IHNyYz0iUHJvZ3JhbS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUHJvZ3JhbVdpdGhVbm5l
Y2Vzc2FyeVRoaW5nc1JlbW92ZWQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlB0clR5cGUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlF1YWxpZmllcnMuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9IlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9IlJlY3Vyc2lvbkNoZWNrZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlJlY3Vy
c2l2ZVR5cGVDaGVja2VyLmpzIj48L3NjcmlwdD4KQEAgLTE0OSw2ICsxNTEsNyBAQAogPHNjcmlw
dCBzcmM9IlVpbnRMaXRlcmFsLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJVaW50TGl0ZXJh
bFR5cGUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlVuaWZpY2F0aW9uQ29udGV4dC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iVW5pZm9ybWl0eUNoZWNrZXIuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9IlVucmVhY2hhYmxlQ29kZUNoZWNrZXIuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9IlZhcmlhYmxlRGVjbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iVmFyaWFibGVS
ZWYuanMiPjwvc2NyaXB0PgpAQCAtMTY2LDcgKzE2OSw3IEBACiA8c2NyaXB0PgogZnVuY3Rpb24g
ZG9UZXN0SW5Ccm93c2VyKCkKIHsKLSAgICB2YXIgdGVzdGVyID0gZG9UZXN0KC8uKi8pOworICAg
IHZhciB0ZXN0ZXIgPSBkb1Rlc3QoL3NoYWRlclR5cGVzfGluY29tcGF0aWJsZVF1YWxpZmllcnMv
KTsKICAgICB2YXIgbGFzdFRpbWU7CiAgICAgZnVuY3Rpb24gbmV4dCgpCiAgICAgewpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcyBiL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMKaW5kZXggMDc3YjEzN2I1YzY1NWE0NTliNWY5NTdk
NDlkNWUzZjZjZmZmNDBlNi4uZWYyM2ViNzQ2ZDJhZGExMjU2YmRiNDcxOTM2N2NmNWNlYTk5MGFi
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcworKysg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzCkBAIC05NDUzLDIzICs5NDUz
LDYgQEAgdGVzdHMucmVmZXJlbmNlRXF1YWxpdHkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgKGUp
ID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKIH0KIAotdGVzdHMuY29tbWVudFBhcnNpbmcg
PSBmdW5jdGlvbigpIHsKLSAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcChgCi0gICAgICAgIC8qIHRo
aXMgY29tbWVudAotICAgICAgICBydW5zIG92ZXIgbXVsdGlwbGUgbGluZXMgKi8KLSAgICAgICAg
dGVzdCBib29sIGZvbygpIHsgcmV0dXJuIHRydWU7IH0KLSAgICBgKTsKLSAgICBjaGVja0Jvb2wo
cHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIHRydWUpOwotCi0gICAg
Y2hlY2tGYWlsKAotICAgICAgICAoKSA9PiBkb1ByZXAoYAotICAgICAgICAvKiB0aGlzIGNvbW1l
bnQKLSAgICAgICAgcnVucyBvdmVyIG11bHRpcGxlIGxpbmVzCi0gICAgICAgIGJvb2wgZm9vKCkg
eyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICBgKSwKLSAgICAgICAgKGUpID0+IGUgaW5zdGFuY2Vv
ZiBXTGV4aWNhbEVycm9yKTsKLX0KLQogdGVzdHMuY2FsbEFyZ3VtZW50c0FyZUNvcGllZEltbWVk
aWF0ZWx5QWZ0ZXJFdmFsdWF0aW9uID0gKCkgPT4gewogICAgIGxldCBwcm9ncmFtID0gZG9QcmVw
KGAKICAgICAgICAgdGVzdCBpbnQgZm9vKCkKQEAgLTk3OTAsNyArOTc3Myw4IEBAIHRlc3RzLnNl
dHRpbmdBbkFycmF5SW5zaWRlQVN0cnVjdCA9IGZ1bmN0aW9uKCkKICAgICBjaGVja0ludChwcm9n
cmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgMjEpOwogfQogCi10ZXN0cy50
cmFwQmVjYXVzZU9mSW5kZXhBY2Vzc3MgPSAoKSA9PiB7Cit0ZXN0cy50cmFwQmVjYXVzZU9mSW5k
ZXhBY2Vzc3MgPSBmdW5jdGlvbigpCit7CiAgICAgY29uc3QgcHJvZ3JhbSA9IGRvUHJlcChgCiAg
ICAgICAgIHRlc3QgaW50IGZvbygpCiAgICAgICAgIHsKQEAgLTk4MDIsNyArOTc4Niw4IEBAIHRl
c3RzLnRyYXBCZWNhdXNlT2ZJbmRleEFjZXNzcyA9ICgpID0+IHsKICAgICBjaGVja1RyYXAocHJv
Z3JhbSwgKCkgPT4gY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIGNoZWNrSW50KTsK
IH0KIAotdGVzdHMudHJhcFRyYW5zaXRpdmVseSA9ICgpID0+IHsKK3Rlc3RzLnRyYXBUcmFuc2l0
aXZlbHkgPSBmdW5jdGlvbigpCit7CiAgICAgY29uc3QgcHJvZ3JhbSA9IGRvUHJlcChgCiAgICAg
ICAgIHRlc3QgaW50IGZvbygpCiAgICAgICAgIHsKQEAgLTk4MjMsNiArOTgwOCw3MSBAQCB0ZXN0
cy50cmFwVHJhbnNpdGl2ZWx5ID0gKCkgPT4gewogICAgIGNoZWNrVHJhcChwcm9ncmFtLCAoKSA9
PiBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgY2hlY2tJbnQpOwogfTsKIAordGVz
dHMuaW5jb21wYXRpYmxlUXVhbGlmaWVycyA9IGZ1bmN0aW9uKCkKK3sKKyAgICBkb1ByZXAoYAor
ICAgICAgICBzdHJ1Y3QgRm9vIHsKKyAgICAgICAgICAgIG5vaW50ZXJwb2xhdGlvbiBpbnQgeDsK
KyAgICAgICAgICAgIG5vcGVyc3BlY3RpdmUgaW50IHk7CisgICAgICAgICAgICBjZW50cm9pZCBp
bnQgejsKKyAgICAgICAgICAgIHNhbXBsZSBpbnQgdzsKKyAgICAgICAgICAgIG5vaW50ZXJwb2xh
dGlvbiBjZW50cm9pZCBpbnQgcDsKKyAgICAgICAgICAgIG5vaW50ZXJwb2xhdGlvbiBzYW1wbGUg
aW50IHE7CisgICAgICAgICAgICBub3BlcnNwZWN0aXZlIGNlbnRyb2lkIGludCByOworICAgICAg
ICAgICAgbm9wZXJzcGVjdGl2ZSBzYW1wbGUgaW50IHM7CisgICAgICAgIH0KKyAgICAgICAgdGVz
dCB2b2lkIGJhcihub2ludGVycG9sYXRpb24gaW50IHgsIG5vcGVyc3BlY3RpdmUgaW50IHksIGNl
bnRyb2lkIGludCB6LCBzYW1wbGUgaW50IHcsIG5vaW50ZXJwb2xhdGlvbiBjZW50cm9pZCBpbnQg
cCwgbm9pbnRlcnBvbGF0aW9uIHNhbXBsZSBpbnQgcSwgbm9wZXJzcGVjdGl2ZSBjZW50cm9pZCBp
bnQgciwgbm9wZXJzcGVjdGl2ZSBzYW1wbGUgaW50IHMpIHsKKyAgICAgICAgfQorICAgIGApCisg
ICAgY2hlY2tGYWlsKAorICAgICAgICAoKSA9PiBkb1ByZXAoYAorICAgICAgICAgICAgc3RydWN0
IEZvbyB7CisgICAgICAgICAgICAgICAgbm9pbnRlcnBvbGF0aW9uIG5vcGVyc3BlY3RpdmUgaW50
IHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0ZXN0IHZvaWQgYmFyKCkgeworICAgICAg
ICAgICAgfQorICAgICAgICBgKSwKKyAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVy
cm9yKTsKKyAgICBjaGVja0ZhaWwoCisgICAgICAgICgpID0+IGRvUHJlcChgCisgICAgICAgICAg
ICBzdHJ1Y3QgRm9vIHsKKyAgICAgICAgICAgICAgICBjZW50cm9pZCBzYW1wbGUgaW50IHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICB0ZXN0IHZvaWQgYmFyKCkgeworICAgICAgICAgICAg
fQorICAgICAgICBgKSwKKyAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsK
KyAgICBjaGVja0ZhaWwoCisgICAgICAgICgpID0+IGRvUHJlcChgCisgICAgICAgICAgICB0ZXN0
IHZvaWQgZm9vKG5vaW50ZXJwb2xhdGlvbiBub3BlcnNwZWN0aXZlIGludCB4KSB7CisgICAgICAg
ICAgICB9CisgICAgICAgIGApLAorICAgICAgICAoZSkgPT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJy
b3IpOworICAgIGNoZWNrRmFpbCgKKyAgICAgICAgKCkgPT4gZG9QcmVwKGAKKyAgICAgICAgICAg
IHRlc3Qgdm9pZCBmb28oY2VudHJvaWQgc2FtcGxlIGludCB4KSB7CisgICAgICAgICAgICB9Cisg
ICAgICAgIGApLAorICAgICAgICAoZSkgPT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IpOworfQor
Cit0ZXN0cy5jb21tZW50UGFyc2luZyA9IGZ1bmN0aW9uKCkgeworICAgIGxldCBwcm9ncmFtID0g
ZG9QcmVwKGAKKyAgICAgICAgLyogdGhpcyBjb21tZW50CisgICAgICAgIHJ1bnMgb3ZlciBtdWx0
aXBsZSBsaW5lcyAqLworICAgICAgICB0ZXN0IGJvb2wgZm9vKCkgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgIGApOworICAgIGNoZWNrQm9vbChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZv
byIsIFtdKSwgdHJ1ZSk7CisKKyAgICBjaGVja0ZhaWwoCisgICAgICAgICgpID0+IGRvUHJlcChg
CisgICAgICAgIC8qIHRoaXMgY29tbWVudAorICAgICAgICBydW5zIG92ZXIgbXVsdGlwbGUgbGlu
ZXMKKyAgICAgICAgYm9vbCBmb28oKSB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIGApLAorICAg
ICAgICAoZSkgPT4gZSBpbnN0YW5jZW9mIFdMZXhpY2FsRXJyb3IpOworfQorCiBva1RvVGVzdCA9
IHRydWU7CiAKIGxldCB0ZXN0RmlsdGVyID0gLy4qLzsgLy8gcnVuIGV2ZXJ5dGhpbmcgYnkgZGVm
YXVsdApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVW5pZm9ybWl0
eUNoZWNrZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Vbmlmb3JtaXR5Q2hl
Y2tlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mYjZiZDdjY2JlNmI0MWFhZTE1MDk5NTlhMzI4NTU4ZTM4MWNi
ZTk0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVW5p
Zm9ybWl0eUNoZWNrZXIuanMKQEAgLTAsMCArMSw2MjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworInVzZSBzdHJpY3QiOworCitmdW5jdGlvbiBjaGVja1Vu
aWZvcm1zKHByb2dyYW0pCit7CisgICAgLy8gVmFyaWFibGVEZWNscyBhbmQgRnVuY1BhcmFtZXRl
cnMgaGF2ZSB0aGUgY29uY2VwdCBvZiB1bmlmb3JtaXR5LgorICAgIC8vIFdpdGhvdXQgc3BlY2lm
eWluZyB0aGUgInVuaWZvcm0iIGtleXdvcmQsIHVuaWZvcm1pdHkgaXMgaW5mZXJyZWQgZm9yIGV2
ZXJ5IFZhcmlhYmxlRGVjbCBhbmQgRnVuY1BhcmFtZXRlciBpbiBhIGNvbnRleHQtc2Vuc2l0aXZl
IG1hbm5lci4KKyAgICAvLyBDb25zaWRlcjoKKyAgICAvLyBpbnQgZm9vKGludCB4KSB7CisgICAg
Ly8gICAgIHJldHVybiB4ICsgMjsKKyAgICAvLyB9CisgICAgLy8gLi4uCisgICAgLy8gdW5pZm9y
bSBpbnQgeSA9IGZvbyg3KTsKKyAgICAvLyBpbnQgeiA9IGZvbyh0aWQpOyAvLyBOb3QgdW5pZm9y
bSEKKyAgICAvLworICAgIC8vIFdoZW4gZm9vKCkgaXMgY2FsbGVkIHdpdGggNywgd2UgZGV0ZXJt
aW5lIHRoYXQgdGhlIGZ1bmN0aW9uJ3MgcmV0dXJuIHR5cGUgaXMgdW5pZm9ybSwgc28gYXNzaWdu
aW5nIHRoZSByZXN1bHQgdG8gYSB1bmlmb3JtIHZhcmlhYmxlIGlzIGxlZ2FsLgorICAgIC8vIEhv
d2V2ZXIsIHdoZW4gZm9vKCkgaXMgY2FsbGVkIHdpdGggdGlkLCB3ZSBkZXRlcm1pbmUgdGhhdCB0
aGUgZnVuY3Rpb24ncyByZXR1cm4gdHlwZSBpcyBub251bmlmb3JtLCBzbyBhc3NpZ25pbmcgdGhl
IHJlc3VsdCB0byBhIHVuaWZvcm0gdmFyaWFibGUgaXMgaWxsZWdhbC4KKyAgICAvLyBXaGVuIHdl
IGVtaXQgY29kZSwgd2Ugd2lsbCBzcGVjaWFsaXplIGVhY2ggV0hMU0wgZnVuY3Rpb24gdG8gcG90
ZW50aWFsbHkgbXVsdGlwbGUgb3VwdXR0ZWQgZnVuY3Rpb25zLCBlYWNoIHdpdGggYSBkaWZmZXJl
bnQgY29tYmluYXRpb24gb2YgdW5pZm9ybWl0eSBmb3IgZWFjaCBwYXJhbWV0ZXIuCisKKyAgICAv
LyBXZSBpbmZlciB3aGljaCBWYXJpYWJsZURlY2xzIGFuZCBGdW5jUGFyYW1ldGVycyBhcmUgdW5p
Zm9ybSBieSB1c2luZyB0aGUgZm9sbG93aW5nIGFsZ29yaXRobS4KKyAgICAvLyBGaXJzdCwgYnVp
bGQgYSBncmFwaC4gVGhlIG5vZGVzIGluIHRoaXMgZ3JhcGggYXJlIFZhcmlhYmxlRGVjbHMgYW5k
IEZ1bmNQYXJhbWV0ZXJzLgorICAgIC8vIEJlY2F1c2Ugb2YgdGhlIGNvbnRleHQtc2Vuc2l0aXZp
dHksIGEgc2luZ2xlIFZhcmlhYmxlRGVjbCBhbmQgRnVuY1BhcmFtZXRlciBtYXkgYXBwZWFyIGFz
IG11bHRpcGxlIG5vZGVzIGluIHRoZSBncmFwaCwgZGVwZW5kaW5nIG9uIGhvdyBpdCB3YXMgcmVh
Y2hlZC4KKyAgICAvLyBBZGRpdGlvbmFsIG5vZGVzIGFyZSBhbHNvIGFkZGVkIGZvcjoKKyAgICAv
LyAgICAgRnVuY3Rpb25zLCB3aGVyZSB0aGUgbm9kZSByZXByZXNlbnRzIHdoZXRoZXIgdGhlIHJl
dHVybiB2YWx1ZSBpcyB1bmlmb3JtCisgICAgLy8gICAgIEFkZGl0aW9uYWwgdmFyaWFibGUgc2Nv
cGVzIChlLmcuIEZ1bmN0aW9uIGJvZGllcywgbG9vcHMsIGNvbmRpdGlvbmFscywgZXRjLiksIHdo
ZXJlIHRoZSBub2RlIHJlcHJlc2VudHMgd2hldGhlciB0aGUgc2NvcGUgaXMgdW5pZm9ybSBjb250
cm9sIGZsb3cKKyAgICAvLyBUaGUgZWRnZXMgaW4gdGhlIGdyYXBoIHJlcHJlc2VudCBjb25zdHJh
aW50cyBvZiB0aGUgZm9ybSAiQSBpcyBhZGphY2VudCB0byBCIGlmZiBBIGJlaW5nIG5vbnVuaWZv
cm0gcmVxdWlyZXMgQiBhbHNvIGJlaW5nIG5vbnVuaWZvcm0uIgorICAgIC8vIEVkZ2VzIGFyZSBh
ZGRlZCBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOgorICAgIC8vICAgICBBc3NpZ25tZW50IG9wZXJh
dGlvbnMsIGZyb20gZXZlcnkgVmFyaWFibGVSZWYgb24gdGhlIFJIUyB0byBldmVyeSBWYXJpYWJs
ZVJlZiBvbiB0aGUgTEhTIC8vIFRoaXMgaXNuJ3QgcXVpdGUgcmlnaHQsIGNvbnNpZGVyIGFycmF5
W3RpZF0gPSA3LCBhbHNvIGNvbnNpZGVyIHkgPSBmb28oeCwgdW51c2VkKQorICAgIC8vICAgICBB
c3NpZ25tZW50IG9wZXJhdGlvbnMsIGZyb20gdGhlIGlubmVybW9zdCBzY29wZSdzIHByZWRpY2F0
ZSB0byBldmVyeSB2YXJpYWJsZSBvbiB0aGUgTEhTCisgICAgLy8gICAgIEJyZWFrICYgY29udGlu
dWUsIGZyb20gdGhlIGlubmVybW9zdCBzY29wZSB0byB0aGUgaW5uZXJtb3N0IGxvb3AKKyAgICAv
LyAgICAgUmV0dXJuLCBmcm9tIHRoZSBpbm5lcm1vc3Qgc2NvcGUgdG8gdGhlIGZ1bmN0aW9uCisg
ICAgLy8gICAgIFJldHVybiwgZnJvbSBldmVyeSBWYXJpYWJsZVJlZiBpbiB0aGUgZXhwcmVzc2lv
biB0byB0aGUgZnVuY3Rpb24gY2FsbCBpdHNlbGYKKyAgICAvLyBUaGVuLCBtYXJrIGV2ZXJ5IG5v
ZGUgaW4gdGhlIGdyYXBoIGFzIHVuaWZvcm0gZXhjZXB0IGZvciB2YXJpYWJsZXMgdGhhdCBhcmUg
ZXhwbGljaXRseSBub251bmlmb3JtLCBsaWtlIHRpZC4KKyAgICAvLyBTdGFydGluZyBmcm9tIHRo
b3NlIHJvb3RzLCBmbG9vZC1maWxsIHRoZSBncmFwaCwgbWFraW5nIHRoZSBub251bmlmb3JtaXR5
IHNwcmVhZCB0cmFuc2l0aXZlbHkgdGhyb3VnaCB0aGUgYWRqYWNlbnQgbm9kZXMsIHVudGlsIGl0
IGNhbiBzcHJlYWQgbm8gbG9uZ2VyLgorICAgIC8vIFdlIG5vdyBrbm93LCBmb3IgZXZlcnkgc2Nv
cGUsIHdoZXRoZXIgaXQgaXMgdW5pZm9ybSBjb250cm9sIGZsb3csIGFuZCBmb3IgZXZlcnkgVmFy
aWFibGVEZWNsIGFuZCBGdW5jUGFyYW1ldGVyLCB3aGV0aGVyIGl0IGlzIHVuaWZvcm0uCisgICAg
Ly8gV2UgY2FuIG5vdyBlbmZvcmNlIG91ciB2YXJpb3VzIHJlc3RyaWN0aW9ucyAoc3VjaCBhcyAi
bm9udW5pZm9ybSB2YXJpYWJsZXMgY2FuJ3QgYmUgbWFya2VkIGJ5IHRoZSBhdXRob3IgYXMgdW5p
Zm9ybSIpIGluIGEgbmV3IHBhc3MuCisKKyAgICBjbGFzcyBHcmFwaEJ1aWxkZXIgZXh0ZW5kcyBW
aXNpdG9yIHsKKyAgICAgICAgY29uc3RydWN0b3IoZnVuYykKKyAgICAgICAgeworICAgICAgICAg
ICAgc3VwZXIoKTsKKyAgICAgICAgICAgIHRoaXMuX25vZGVDb3VudCA9IDA7CisgICAgICAgICAg
ICB0aGlzLl9lZGdlcyA9IG5ldyBNYXAoKTsgLy8gR3JhcGhOb2RlID0+IFtHcmFwaE5vZGVdCisg
ICAgICAgICAgICB0aGlzLl9hc3NpZ25tZW50c1N0YWNrID0gW25ldyBNYXAoKV07CisgICAgICAg
ICAgICB0aGlzLl9jb250cm9sRmxvd1N0YWNrID0gW3RoaXMuX3JlZ2lzdGVyTmV3R3JhcGhOb2Rl
KGZ1bmMpXTsKKyAgICAgICAgICAgIHRoaXMuX3Jlc3VsdCA9IG5ldyBNYXAoKTsgLy8gRnVuY0Rl
ZiA9PiBbKFtHcmFwaE5vZGVdLCBBU1ROb2RlID0+IChHcmFwaE5vZGUgb3IgW0dyYXBoTm9kZV0p
KV0KKyAgICAgICAgfQorCisgICAgICAgIGdldCBlZGdlcygpIHsgcmV0dXJuIHRoaXMuX2VkZ2Vz
OyB9CisgICAgICAgIGdldCByZXN1bHQoKSB7IHJldHVybiB0aGlzLl9yZXN1bHQ7IH0KKworICAg
ICAgICBfcmVnaXN0ZXJOZXdHcmFwaE5vZGUoYXN0Tm9kZSkKKyAgICAgICAgeworICAgICAgICAg
ICAgbGV0IGN1cnJlbnRDb250cm9sRmxvd0dyYXBoTm9kZSA9IHRoaXMuX2N1cnJlbnRDb250cm9s
Rmxvd0dyYXBoTm9kZSgpOworICAgICAgICAgICAgbGV0IG5ld0dyYXBoTm9kZSA9IHRoaXMuX25v
ZGVDb3VudCsrOworICAgICAgICAgICAgdGhpcy5fYWRkRWRnZShjdXJyZW50Q29udHJvbEZsb3dH
cmFwaE5vZGUsIG5ld0dyYXBoTm9kZSk7CisgICAgICAgICAgICB0aGlzLl9hc3NpZ24oYXN0Tm9k
ZSwgbmV3R3JhcGhOb2RlKTsKKyAgICAgICAgICAgIHJldHVybiBuZXdHcmFwaE5vZGU7CisgICAg
ICAgIH0KKworICAgICAgICBfYWRkRWRnZShmcm9tLCB0bykKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKHRoaXMuX2VkZ2VzLmhhcyhmcm9tKSkKKyAgICAgICAgICAgICAgICB0aGlzLl9lZGdl
cy5nZXQoZnJvbSkucHVzaCh0byk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGhpcy5lZGdlcy5zZXQoZnJvbSwgW3RvXSk7CisgICAgICAgIH0KKworICAgICAgICBfYXNzaWdu
KGFzdE5vZGUsIGdyYXBoTm9kZSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHRoaXMuX2Fz
c2lnbm1lbnRzU3RhY2subGVuZ3RoIDwgMSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIlplcm8tbGVuZ3RoIGFzc2lnbm1lbnRzIHN0YWNrIik7CisgICAgICAgICAgICB0aGlzLl9h
c3NpZ25tZW50c1N0YWNrW3RoaXMuX2Fzc2lnbm1lbnRzU3RhY2subGVuZ3RoIC0gMV0uc2V0KGFz
dE5vZGUsIGdyYXBoTm9kZSk7CisgICAgICAgIH0KKworICAgICAgICBfbG9va3VwKGFzdE5vZGUp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9hc3NpZ25tZW50c1N0YWNrLmxlbmd0
aCA8IDEpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJaZXJvLWxlbmd0aCBhc3Np
Z25tZW50cyBzdGFjayIpOworICAgICAgICAgICAgaWYgKCF0aGlzLl9hc3NpZ25tZW50c1N0YWNr
W3RoaXMuX2Fzc2lnbm1lbnRzU3RhY2subGVuZ3RoIC0gMV0uaGFzKGFzdE5vZGUpKQorICAgICAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTG9va3VwIGZhaWxlZCBmb3IgJHthc3ROb2RlfWAp
OworICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Fzc2lnbm1lbnRzU3RhY2tbdGhpcy5fYXNzaWdu
bWVudHNTdGFjay5sZW5ndGggLSAxXS5nZXQoYXN0Tm9kZSk7CisgICAgICAgIH0KKworICAgICAg
ICBfcHVzaENvbnRyb2xGbG93KGFzdE5vZGUsIGtpbmQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGxldCBuZXdHcmFwaE5vZGUgPSB0aGlzLl9yZWdpc3Rlck5ld0dyYXBoTm9kZShhc3ROb2RlKTsK
KyAgICAgICAgICAgIHRoaXMuX2NvbnRyb2xGbG93U3RhY2sucHVzaChbbmV3R3JhcGhOb2RlLCBr
aW5kXSk7CisgICAgICAgICAgICByZXR1cm4gbmV3R3JhcGhOb2RlOworICAgICAgICB9CisKKyAg
ICAgICAgX3BvcENvbnRyb2xGbG93KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHRo
aXMuX2NvbnRyb2xGbG93U3RhY2sucG9wKClbMF07CisgICAgICAgIH0KKworICAgICAgICBfY3Vy
cmVudENvbnRyb2xGbG93R3JhcGhOb2RlKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHRo
aXMuX2NvbnRyb2xGbG93U3RhY2subGVuZ3RoIDwgMSkKKyAgICAgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIlplcm8tbGVuZ3RoIGNvbnRyb2wgZmxvdyBzdGFjayIpOworICAgICAgICAgICAg
cmV0dXJuIHRoaXMuX2NvbnRyb2xGbG93U3RhY2tbdGhpcy5fY29udHJvbEZsb3dTdGFjay5sZW5n
dGggLSAxXVswXTsKKyAgICAgICAgfQorCisgICAgICAgIF9jb250cm9sRmxvd0dyYXBoTm9kZXNV
bnRpbCguLi5raW5kcykKKyAgICAgICAgeworICAgICAgICAgICAgbGV0IHJlc3VsdCA9IFtdOwor
ICAgICAgICAgICAgbGV0IHNlYXJjaCA9IG5ldyBTZXQoLi4ua2luZHMpOworICAgICAgICAgICAg
bGV0IGk7CisgICAgICAgICAgICBmb3IgKGkgPSB0aGlzLl9jb250cm9sRmxvd1N0YWNrLmxlbmd0
aCAtIDE7IGkgPj0gMCAmJiAhc2VhcmNoLmhhcyh0aGlzLl9jb250cm9sRmxvd1N0YWNrW2ldWzFd
KTsgLS1pKQorICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMuX2NvbnRyb2xGbG93U3Rh
Y2tbaV1bMF0pOworICAgICAgICAgICAgaWYgKGkgPj0gMCkKKyAgICAgICAgICAgICAgICByZXN1
bHQucHVzaCh0aGlzLl9jb250cm9sRmxvd1N0YWNrW2ldWzBdKTsKKyAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICB2aXNpdE5hdGl2ZUZ1bmMobm9kZSkKKyAg
ICAgICAgeworICAgICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgICAgICB9
CisKKyAgICAgICAgdmlzaXRCbG9jayhub2RlKQorICAgICAgICB7CisgICAgICAgICAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IG5vZGUuc3RhdGVtZW50cy5sZW5ndGg7ICsraSkgeworICAgICAgICAg
ICAgICAgIGxldCBzdGF0ZW1lbnQgPSBub2RlLnN0YXRlbWVudHNbaV07CisgICAgICAgICAgICAg
ICAgc3RhdGVtZW50LnZpc2l0KHRoaXMpOworICAgICAgICAgICAgICAgIGlmIChpID09IG5vZGUu
c3RhdGVtZW50cy5sZW5ndGggLSAxKSB7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZUdy
YXBoTm9kZSA9IHRoaXMuX2xvb2t1cChzdGF0ZW1lbnQpOworICAgICAgICAgICAgICAgICAgICBs
ZXQgbmV3R3JhcGhOb2RlID0gdGhpcy5fcmVnaXN0ZXJOZXdHcmFwaE5vZGUobm9kZSk7CisgICAg
ICAgICAgICAgICAgICAgIHRoaXMuX2FkZEVkZ2UodmFsdWVHcmFwaE5vZGUsIG5ld0dyYXBoTm9k
ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgCisg
ICAgICAgIHZpc2l0Q29tbWFFeHByZXNzaW9uKG5vZGUpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5saXN0Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAg
ICAgICAgbGV0IGV4cHJlc3Npb24gPSBub2RlLmxpc3RbaV07CisgICAgICAgICAgICAgICAgZXhw
cmVzc2lvbi52aXNpdCh0aGlzKTsKKyAgICAgICAgICAgICAgICBpZiAoaSA9PSBub2RlLmxpc3Qu
bGVuZ3RoIC0gMSkgeworICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWVHcmFwaE5vZGUgPSB0
aGlzLl9sb29rdXAoZXhwcmVzc2lvbik7CisgICAgICAgICAgICAgICAgICAgIGxldCBuZXdHcmFw
aE5vZGUgPSB0aGlzLl9yZWdpc3Rlck5ld0dyYXBoTm9kZShub2RlKTsKKyAgICAgICAgICAgICAg
ICAgICAgdGhpcy5fYWRkRWRnZSh2YWx1ZUdyYXBoTm9kZSwgbmV3R3JhcGhOb2RlKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgdmlz
aXRFbnVtTGl0ZXJhbChub2RlKQorICAgICAgICB7CisgICAgICAgICAgICB0aGlzLnJlZ2lzdGVy
TmV3R3JhcGhOb2RlKG5vZGUpOworICAgICAgICB9CisKKyAgICAgICAgdmlzaXRWYXJpYWJsZURl
Y2wobm9kZSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlz
LgorICAgICAgICB9CisKKyAgICAgICAgdmlzaXRBc3NpZ25tZW50KG5vZGUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KKyAgICAgICAgfQorCisgICAg
ICAgIHZpc2l0UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbihub2RlKQorICAgICAgICB7CisgICAg
ICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAgICAgIH0KKyAgICAKKyAgICAg
ICAgdmlzaXREZXJlZmVyZW5jZUV4cHJlc3Npb24obm9kZSkKKyAgICAgICAgeworICAgICAgICAg
ICAgbm9kZS5wdHIudmlzaXQodGhpcyk7CisgICAgICAgICAgICBsZXQgdmFsdWVHcmFwaE5vZGUg
PSB0aGlzLl9sb29rdXAobm9kZS5wdHIpOworICAgICAgICAgICAgbGV0IG5ld0dyYXBoTm9kZSA9
IHRoaXMuX3JlZ2lzdGVyTmV3R3JhcGhOb2RlKG5vZGUpOworICAgICAgICAgICAgdGhpcy5fYWRk
RWRnZSh2YWx1ZUdyYXBoTm9kZSwgbmV3R3JhcGhOb2RlKTsKKyAgICAgICAgfQorCisgICAgICAg
IHZpc2l0VGVybmFyeUV4cHJlc3Npb24obm9kZSkKKyAgICAgICAgeworICAgICAgICAgICAgbm9k
ZS5wcmVkaWNhdGUudmlzaXQodGhpcyk7CisgICAgICAgICAgICBsZXQgY29uZGl0aW9uYWxHcmFw
aE5vZGUgPSB0aGlzLl9sb29rdXAobm9kZS5wcmVkaWNhdGUpOworICAgICAgICAgICAgbGV0IGNv
bnRyb2xGbG93R3JhcGhOb2RlID0gdGhpcy5fcHVzaENvbnRyb2xGbG93KG5vZGUsICJ0ZXJuYXJ5
Iik7CisgICAgICAgICAgICB0aGlzLl9hZGRFZGdlKGNvbmRpdGlvbmFsR3JhcGhOb2RlLCBjb250
cm9sRmxvd0dyYXBoTm9kZSk7CisgICAgICAgICAgICBub2RlLmJvZHlFeHByZXNzaW9uLnZpc2l0
KHRoaXMpOworICAgICAgICAgICAgbm9kZS5lbHNlRXhwcmVzc2lvbi52aXNpdCh0aGlzKTsKKyAg
ICAgICAgICAgIGxldCBwb3BwZWQgPSB0aGlzLl9wb3BDb250cm9sRmxvdygpOworICAgICAgICAg
ICAgaWYgKGNvbnRyb2xGbG93R3JhcGhOb2RlICE9IHBvcHBlZCkKKyAgICAgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIlVubWF0Y2hlZCBwdXNoL3BvcCBjb250cm9sIGZsb3ciKTsKKyAgICAg
ICAgfQorICAgIAorICAgICAgICB2aXNpdERvdEV4cHJlc3Npb24obm9kZSkKKyAgICAgICAgewor
ICAgICAgICAgICAgbm9kZS5zdHJ1Y3QudmlzaXQodGhpcyk7CisgICAgICAgICAgICBsZXQgdmFs
dWVHcmFwaE5vZGUgPSB0aGlzLl9sb29rdXAobm9kZS5zdHJ1Y3QpOworICAgICAgICAgICAgbGV0
IG5ld0dyYXBoTm9kZSA9IHRoaXMuX3JlZ2lzdGVyTmV3R3JhcGhOb2RlKG5vZGUpOworICAgICAg
ICAgICAgdGhpcy5fYWRkRWRnZSh2YWx1ZUdyYXBoTm9kZSwgbmV3R3JhcGhOb2RlKTsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgdmlzaXRJbmRleEV4cHJlc3Npb24obm9kZSkKKyAgICAg
ICAgeworICAgICAgICAgICAgbm9kZS5hcnJheS52aXNpdCh0aGlzKTsKKyAgICAgICAgICAgIG5v
ZGUuaW5kZXgudmlzaXQodGhpcyk7CisgICAgICAgICAgICBsZXQgYXJyYXlHcmFwaE5vZGUgPSB0
aGlzLl9sb29rdXAobm9kZS5hcnJheSk7CisgICAgICAgICAgICBsZXQgaW5kZXhHcmFwaE5vZGUg
PSB0aGlzLl9sb29rdXAobm9kZS5pbmRleCk7CisgICAgICAgICAgICBsZXQgbmV3R3JhcGhOb2Rl
ID0gdGhpcy5fcmVnaXN0ZXJOZXdHcmFwaE5vZGUobm9kZSk7CisgICAgICAgICAgICB0aGlzLl9h
ZGRFZGdlKGFycmF5R3JhcGhOb2RlLCBuZXdHcmFwaE5vZGUpOworICAgICAgICAgICAgdGhpcy5f
YWRkRWRnZShpbmRleEdyYXBoTm9kZSwgbmV3R3JhcGhOb2RlKTsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgdmlzaXRNYWtlUHRyRXhwcmVzc2lvbihub2RlKQorICAgICAgICB7CisgICAg
ICAgICAgICBub2RlLmxWYWx1ZS52aXNpdCh0aGlzKTsKKyAgICAgICAgICAgIGxldCB2YWx1ZUdy
YXBoTm9kZSA9IHRoaXMuX2xvb2t1cChub2RlLmxWYWx1ZSk7CisgICAgICAgICAgICBsZXQgbmV3
R3JhcGhOb2RlID0gdGhpcy5fcmVnaXN0ZXJOZXdHcmFwaE5vZGUobm9kZSk7CisgICAgICAgICAg
ICB0aGlzLl9hZGRFZGdlKHZhbHVlR3JhcGhOb2RlLCBuZXdHcmFwaE5vZGUpOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICB2aXNpdE1ha2VBcnJheVJlZkV4cHJlc3Npb24obm9kZSkKKyAg
ICAgICAgeworICAgICAgICAgICAgbm9kZS5sVmFsdWUudmlzaXQodGhpcyk7CisgICAgICAgICAg
ICBOb2RlLnZpc2l0KG5vZGUubnVtRWxlbWVudHMsIHRoaXMpOworICAgICAgICAgICAgbGV0IHZh
bHVlR3JhcGhOb2RlID0gdGhpcy5fbG9va3VwKG5vZGUubFZhbHVlKTsKKyAgICAgICAgICAgIGxl
dCBuZXdHcmFwaE5vZGUgPSB0aGlzLl9yZWdpc3Rlck5ld0dyYXBoTm9kZShub2RlKTsKKyAgICAg
ICAgICAgIHRoaXMuX2FkZEVkZ2UodmFsdWVHcmFwaE5vZGUsIG5ld0dyYXBoTm9kZSk7CisgICAg
ICAgIH0KKyAgICAKKyAgICAgICAgdmlzaXRDb252ZXJ0UHRyVG9BcnJheVJlZkV4cHJlc3Npb24o
bm9kZSkKKyAgICAgICAgeworICAgICAgICAgICAgbm9kZS5sVmFsdWUudmlzaXQodGhpcyk7Cisg
ICAgICAgICAgICBsZXQgdmFsdWVHcmFwaE5vZGUgPSB0aGlzLl9sb29rdXAobm9kZS5sVmFsdWUp
OworICAgICAgICAgICAgbGV0IG5ld0dyYXBoTm9kZSA9IHRoaXMuX3JlZ2lzdGVyTmV3R3JhcGhO
b2RlKG5vZGUpOworICAgICAgICAgICAgdGhpcy5fYWRkRWRnZSh2YWx1ZUdyYXBoTm9kZSwgbmV3
R3JhcGhOb2RlKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpc2l0VmFyaWFibGVSZWYobm9kZSkK
KyAgICAgICAgeworICAgICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgICAg
ICB9CisKKyAgICAgICAgdmlzaXRJZlN0YXRlbWVudChub2RlKQorICAgICAgICB7CisgICAgICAg
ICAgICBub2RlLmNvbmRpdGlvbmFsLnZpc2l0KHRoaXMpOworICAgICAgICAgICAgbGV0IGNvbmRp
dGlvbmFsR3JhcGhOb2RlID0gdGhpcy5fbG9va3VwKG5vZGUuY29uZGl0aW9uYWwpOworICAgICAg
ICAgICAgbGV0IGNvbnRyb2xGbG93R3JhcGhOb2RlID0gdGhpcy5fcHVzaENvbnRyb2xGbG93KG5v
ZGUsICJpZiIpOworICAgICAgICAgICAgdGhpcy5fYWRkRWRnZShjb25kaXRpb25hbEdyYXBoTm9k
ZSwgY29udHJvbEZsb3dHcmFwaE5vZGUpOworICAgICAgICAgICAgbm9kZS5ib2R5LnZpc2l0KHRo
aXMpOworICAgICAgICAgICAgTm9kZS52aXNpdChub2RlLmVsc2VCb2R5LCB0aGlzKTsKKyAgICAg
ICAgICAgIGxldCBwb3BwZWQgPSB0aGlzLl9wb3BDb250cm9sRmxvdygpOworICAgICAgICAgICAg
aWYgKGNvbnRyb2xGbG93R3JhcGhOb2RlICE9IHBvcHBlZCkKKyAgICAgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIlVubWF0Y2hlZCBwdXNoL3BvcCBjb250cm9sIGZsb3ciKTsKKyAgICAgICAg
fQorICAgIAorICAgICAgICB2aXNpdFdoaWxlTG9vcChub2RlKQorICAgICAgICB7CisgICAgICAg
ICAgICBub2RlLmNvbmRpdGlvbmFsLnZpc2l0KHRoaXMpOworICAgICAgICAgICAgbGV0IGNvbmRp
dGlvbmFsR3JhcGhOb2RlID0gdGhpcy5fbG9va3VwKG5vZGUuY29uZGl0aW9uYWwpOworICAgICAg
ICAgICAgbGV0IGNvbnRyb2xGbG93R3JhcGhOb2RlID0gdGhpcy5fcHVzaENvbnRyb2xGbG93KG5v
ZGUsICJ3aGlsZSIpOworICAgICAgICAgICAgdGhpcy5fYWRkRWRnZShjb25kaXRpb25hbEdyYXBo
Tm9kZSwgY29udHJvbEZsb3dHcmFwaE5vZGUpOworICAgICAgICAgICAgbm9kZS5ib2R5LnZpc2l0
KHRoaXMpOworICAgICAgICAgICAgbGV0IHBvcHBlZCA9IHRoaXMuX3BvcENvbnRyb2xGbG93KCk7
CisgICAgICAgICAgICBpZiAoY29udHJvbEZsb3dHcmFwaE5vZGUgIT0gcG9wcGVkKQorICAgICAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVW5tYXRjaGVkIHB1c2gvcG9wIGNvbnRyb2wgZmxv
dyIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2aXNpdERvV2hpbGVMb29wKG5vZGUp
CisgICAgICAgIHsKKyAgICAgICAgICAgIG5vZGUuY29uZGl0aW9uYWwudmlzaXQodGhpcyk7Cisg
ICAgICAgICAgICBsZXQgY29uZGl0aW9uYWxHcmFwaE5vZGUgPSB0aGlzLl9sb29rdXAobm9kZS5j
b25kaXRpb25hbCk7CisgICAgICAgICAgICBsZXQgY29udHJvbEZsb3dHcmFwaE5vZGUgPSB0aGlz
Ll9wdXNoQ29udHJvbEZsb3cobm9kZSwgImRvIik7CisgICAgICAgICAgICB0aGlzLl9hZGRFZGdl
KGNvbmRpdGlvbmFsR3JhcGhOb2RlLCBjb250cm9sRmxvd0dyYXBoTm9kZSk7CisgICAgICAgICAg
ICBub2RlLmJvZHkudmlzaXQodGhpcyk7CisgICAgICAgICAgICBsZXQgcG9wcGVkID0gdGhpcy5f
cG9wQ29udHJvbEZsb3coKTsKKyAgICAgICAgICAgIGlmIChjb250cm9sRmxvd0dyYXBoTm9kZSAh
PSBwb3BwZWQpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJVbm1hdGNoZWQgcHVz
aC9wb3AgY29udHJvbCBmbG93Iik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZpc2l0
Rm9yTG9vcChub2RlKQorICAgICAgICB7CisgICAgICAgICAgICBOb2RlLnZpc2l0KG5vZGUuaW5p
dGlhbGl6YXRpb24sIHRoaXMpOworICAgICAgICAgICAgTm9kZS52aXNpdChub2RlLmNvbmRpdGlv
biwgdGhpcyk7CisgICAgICAgICAgICBOb2RlLnZpc2l0KG5vZGUuaW5jcmVtZW50LCB0aGlzKTsK
KyAgICAgICAgICAgIGxldCBjb250cm9sRmxvd0dyYXBoTm9kZSA9IHRoaXMuX3B1c2hDb250cm9s
Rmxvdyhub2RlLCAiZm9yIik7CisgICAgICAgICAgICBpZiAobm9kZS5jb25kaXRpb24pIHsKKyAg
ICAgICAgICAgICAgICBsZXQgY29uZGl0aW9uYWxHcmFwaE5vZGUgPSB0aGlzLl9sb29rdXAobm9k
ZS5jb25kaXRpb24pOworICAgICAgICAgICAgICAgIHRoaXMuX2FkZEVkZ2UoY29uZGl0aW9uYWxH
cmFwaE5vZGUsIGNvbnRyb2xGbG93R3JhcGhOb2RlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIG5vZGUuYm9keS52aXNpdCh0aGlzKTsKKyAgICAgICAgICAgIGxldCBwb3BwZWQgPSB0aGlz
Ll9wb3BDb250cm9sRmxvdygpOworICAgICAgICAgICAgaWYgKGNvbnRyb2xGbG93R3JhcGhOb2Rl
ICE9IHBvcHBlZCkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlVubWF0Y2hlZCBw
dXNoL3BvcCBjb250cm9sIGZsb3ciKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdmlz
aXRTd2l0Y2hTdGF0ZW1lbnQobm9kZSkKKyAgICAgICAgeworICAgICAgICAgICAgbm9kZS52YWx1
ZS52aXNpdCh0aGlzKTsKKyAgICAgICAgICAgIGxldCBjb25kaXRpb25hbEdyYXBoTm9kZSA9IHRo
aXMuX2xvb2t1cChub2RlLnZhbHVlKTsKKyAgICAgICAgICAgIGxldCBjb250cm9sRmxvd0dyYXBo
Tm9kZSA9IHRoaXMuX3B1c2hDb250cm9sRmxvdyhub2RlLCAic3dpdGNoIik7CisgICAgICAgICAg
ICB0aGlzLl9hZGRFZGdlKGNvbmRpdGlvbmFsR3JhcGhOb2RlLCBjb250cm9sRmxvd0dyYXBoTm9k
ZSk7CisgICAgICAgICAgICBmb3IgKGxldCBzd2l0Y2hDYXNlIG9mIG5vZGUuc3dpdGNoQ2FzZXMp
CisgICAgICAgICAgICAgICAgc3dpdGNoQ2FzZS52aXNpdCh0aGlzKTsKKyAgICAgICAgICAgIGxl
dCBwb3BwZWQgPSB0aGlzLl9wb3BDb250cm9sRmxvdygpOworICAgICAgICAgICAgaWYgKGNvbnRy
b2xGbG93R3JhcGhOb2RlICE9IHBvcHBlZCkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIlVubWF0Y2hlZCBwdXNoL3BvcCBjb250cm9sIGZsb3ciKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHZpc2l0UmV0dXJuKG5vZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIE5vZGUudmlzaXQo
bm9kZS52YWx1ZSwgdGhpcyk7CisgICAgICAgICAgICBsZXQgdmFsdWVHcmFwaE5vZGUgPSB0aGlz
Ll9sb29rdXAobm9kZS52YWx1ZSk7CisgICAgICAgICAgICBsZXQgbmV3R3JhcGhOb2RlID0gdGhp
cy5fcmVnaXN0ZXJOZXdHcmFwaE5vZGUobm9kZSk7CisgICAgICAgICAgICB0aGlzLl9hZGRFZGdl
KHZhbHVlR3JhcGhOb2RlLCBuZXdHcmFwaE5vZGUpOworICAgICAgICAgICAgZm9yIChsZXQgY29u
dHJvbEZsb3dOb2RlIG9mIF9jb250cm9sRmxvd0dyYXBoTm9kZXNVbnRpbCgiZnVuYyIpKQorICAg
ICAgICAgICAgICAgIHRoaXMuX2FkZEVkZ2UobmV3R3JhcGhOb2RlLCBjb250cm9sRmxvd05vZGUp
OworICAgICAgICB9CisKKyAgICAgICAgdmlzaXRDb250aW51ZShub2RlKQorICAgICAgICB7Cisg
ICAgICAgICAgICBsZXQgbmV3R3JhcGhOb2RlID0gdGhpcy5fcmVnaXN0ZXJOZXdHcmFwaE5vZGUo
bm9kZSk7CisgICAgICAgICAgICBmb3IgKGxldCBjb250cm9sRmxvd05vZGUgb2YgX2NvbnRyb2xG
bG93R3JhcGhOb2Rlc1VudGlsKCJ3aGlsZSIsICJkbyIsICJmb3IiKSkKKyAgICAgICAgICAgICAg
ICB0aGlzLl9hZGRFZGdlKG5ld0dyYXBoTm9kZSwgY29udHJvbEZsb3dOb2RlKTsKKyAgICAgICAg
fQorCisgICAgICAgIHZpc2l0QnJlYWsobm9kZSkKKyAgICAgICAgeworICAgICAgICAgICAgbGV0
IG5ld0dyYXBoTm9kZSA9IHRoaXMuX3JlZ2lzdGVyTmV3R3JhcGhOb2RlKG5vZGUpOworICAgICAg
ICAgICAgZm9yIChsZXQgY29udHJvbEZsb3dOb2RlIG9mIF9jb250cm9sRmxvd0dyYXBoTm9kZXNV
bnRpbCgid2hpbGUiLCAiZG8iLCAiZm9yIikpCisgICAgICAgICAgICAgICAgdGhpcy5fYWRkRWRn
ZShuZXdHcmFwaE5vZGUsIGNvbnRyb2xGbG93Tm9kZSk7CisgICAgICAgIH0KKworICAgICAgICB2
aXNpdFRyYXBTdGF0ZW1lbnQobm9kZSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gRklYTUU6
IFRoaXMgc2VlbXMgdW5uZWNlc3NhcmlseSBwZXNzaW1pc3RpYy4KKyAgICAgICAgICAgIGxldCBu
ZXdHcmFwaE5vZGUgPSB0aGlzLl9yZWdpc3Rlck5ld0dyYXBoTm9kZShub2RlKTsKKyAgICAgICAg
ICAgIGZvciAobGV0IGNvbnRyb2xGbG93Tm9kZSBvZiBfY29udHJvbEZsb3dHcmFwaE5vZGVzVW50
aWwoKSkKKyAgICAgICAgICAgICAgICB0aGlzLl9hZGRFZGdlKG5ld0dyYXBoTm9kZSwgY29udHJv
bEZsb3dOb2RlKTsKKyAgICAgICAgfQorICAgIAorICAgICAgICB2aXNpdEdlbmVyaWNMaXRlcmFs
KG5vZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJOZXdHcmFwaE5vZGUo
bm9kZSk7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgdmlzaXROdWxsTGl0ZXJhbChub2RlKQor
ICAgICAgICB7CisgICAgICAgICAgICB0aGlzLnJlZ2lzdGVyTmV3R3JhcGhOb2RlKG5vZGUpOwor
ICAgICAgICB9CisgICAgCisgICAgICAgIHZpc2l0Qm9vbExpdGVyYWwobm9kZSkKKyAgICAgICAg
eworICAgICAgICAgICAgdGhpcy5yZWdpc3Rlck5ld0dyYXBoTm9kZShub2RlKTsKKyAgICAgICAg
fQorICAgIAorICAgICAgICB2aXNpdEFub255bW91c1ZhcmlhYmxlKG5vZGUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIC8vIFVzZWQgd2l0aCBSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uCisgICAg
ICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAgICAgIH0KKworICAgICAgICB3
aWxsQ2FsbChmdW5jKQorICAgICAgICB7CisgICAgICAgICAgICBsZXQgcGFyYW1ldGVyR3JhcGhO
b2RlcyA9IFtdOworICAgICAgICAgICAgdGhpcy5fYXNzaWdubWVudHNTdGFjay5wdXNoKG5ldyBN
YXAoKSk7CisgICAgICAgICAgICBmb3IgKGxldCBwYXJhbWV0ZXIgb2YgZnVuYy5wYXJhbWV0ZXJz
KQorICAgICAgICAgICAgICAgIHBhcmFtZXRlckdyYXBoTm9kZXMuYXBwZW5kKHRoaXMuX3JlZ2lz
dGVyTmV3R3JhcGhOb2RlKHBhcmFtZXRlcikpOworCisgICAgICAgICAgICBpZiAodGhpcy5fcmVz
dWx0LmhhcyhmdW5jKSkKKyAgICAgICAgICAgICAgICB0aGlzLl9yZXN1bHQuZ2V0KGZ1bmMpLnB1
c2goW3BhcmFtZXRlckdyYXBoTm9kZXMsIGFzc2lnbm1lbnRzXSk7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGhpcy5fcmVzdWx0LmFkZChmdW5jLCBbcGFyYW1ldGVyR3JhcGhO
b2RlcywgYXNzaWdubWVudHNdKTsKKworICAgICAgICAgICAgcmV0dXJuIGFzc2lnbm1lbnRzOwor
ICAgICAgICB9CisKKyAgICAgICAgZGlkQ2FsbChhc3NpZ25tZW50cykKKyAgICAgICAgeworICAg
ICAgICAgICAgbGV0IHBvcHBlZCA9IHRoaXMuX2Fzc2lnbm1lbnRzU3RhY2sucG9wKCk7CisgICAg
ICAgICAgICBpZiAocG9wcGVkICE9IGFzc2lnbm1lbnRzKQorICAgICAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcihgVW5tYXRjaGVkIGFzc2lnbm1lbnRzIHB1c2gvcG9wYCk7CisgICAgICAgIH0K
KworICAgICAgICB2aXNpdENhbGxFeHByZXNzaW9uKG5vZGUpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGxldCBmdW5jID0gbm9kZS5mdW5jOworICAgICAgICAgICAgbGV0IGFzc2lnbm1lbnRzID0g
dGhpcy53aWxsQ2FsbChmdW5jKTsKKyAgICAgICAgICAgIGxldCBncmFwaE5vZGUgPSB0aGlzLl9h
bGxvY2F0ZUdyYXBoTm9kZSgpOworICAgICAgICAgICAgc3VwZXIudmlzaXRDYWxsRXhwcmVzc2lv
bihub2RlKTsKKyAgICAgICAgICAgIHRoaXMuZGlkQ2FsbChhc3NpZ25tZW50cyk7CisgICAgICAg
IH0KKyAgICAKKyAgICAgICAgdmlzaXRMb2dpY2FsTm90KG5vZGUpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG5vZGUub3BlcmFuZC52aXNpdCh0aGlzKTsKKyAgICAgICAgICAgIGxldCB2YWx1ZUdy
YXBoTm9kZSA9IHRoaXMuX2xvb2t1cChub2RlLm9wZXJhbmQpOworICAgICAgICAgICAgbGV0IG5l
d0dyYXBoTm9kZSA9IHRoaXMuX3JlZ2lzdGVyTmV3R3JhcGhOb2RlKG5vZGUpOworICAgICAgICAg
ICAgdGhpcy5fYWRkRWRnZSh2YWx1ZUdyYXBoTm9kZSwgbmV3R3JhcGhOb2RlKTsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgdmlzaXRMb2dpY2FsRXhwcmVzc2lvbihub2RlKQorICAgICAg
ICB7CisgICAgICAgICAgICBub2RlLmxlZnQudmlzaXQodGhpcyk7CisgICAgICAgICAgICBub2Rl
LnJpZ2h0LnZpc2l0KHRoaXMpOworICAgICAgICAgICAgbGV0IGxlZnRHcmFwaE5vZGUgPSB0aGlz
Ll9sb29rdXAobm9kZS5sZWZ0KTsKKyAgICAgICAgICAgIGxldCByaWdodEdyYXBoTm9kZSA9IHRo
aXMuX2xvb2t1cChub2RlLnJpZ2h0KTsKKyAgICAgICAgICAgIGxldCBuZXdHcmFwaE5vZGUgPSB0
aGlzLl9yZWdpc3Rlck5ld0dyYXBoTm9kZShub2RlKTsKKyAgICAgICAgICAgIHRoaXMuX2FkZEVk
Z2UobGVmdEdyYXBoTm9kZSwgbmV3R3JhcGhOb2RlKTsKKyAgICAgICAgICAgIHRoaXMuX2FkZEVk
Z2UocmlnaHRHcmFwaE5vZGUsIG5ld0dyYXBoTm9kZSk7CisgICAgICAgIH0KKyAgICAKKyAgICAg
ICAgdmlzaXRBbm9ueW1vdXNWYXJpYWJsZShub2RlKQorICAgICAgICB7CisgICAgICAgICAgICAv
LyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZp
c2l0SWRlbnRpdHlFeHByZXNzaW9uKG5vZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIG5vZGUu
dGFyZ2V0LnZpc2l0KHRoaXMpOworICAgICAgICAgICAgbGV0IHZhbHVlR3JhcGhOb2RlID0gdGhp
cy5fbG9va3VwKG5vZGUudGFyZ2V0KTsKKyAgICAgICAgICAgIGxldCBuZXdHcmFwaE5vZGUgPSB0
aGlzLl9yZWdpc3Rlck5ld0dyYXBoTm9kZShub2RlKTsKKyAgICAgICAgICAgIHRoaXMuX2FkZEVk
Z2UodmFsdWVHcmFwaE5vZGUsIG5ld0dyYXBoTm9kZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBwb2xsdXRlKGVkZ2VzLCBncmFwaE5vZGUpCisgICAgeworICAgICAgICBsZXQg
cmVzdWx0ID0gbmV3IFNldCgpOworICAgICAgICBsZXQgd29ya0xpc3QgPSBbZ3JhcGhOb2RlXTsK
KyAgICAgICAgd2hpbGUgKHdvcmtMaXN0Lmxlbmd0aCAhPSAwKSB7CisgICAgICAgICAgICBsZXQg
d29ya0l0ZW0gPSB3b3JrTGlzdC5zaGlmdCgpOworICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFz
KHdvcmtJdGVtKSkgeworICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQod29ya0l0ZW0pOworICAg
ICAgICAgICAgICAgIGlmIChlZGdlcy5oYXMod29ya0l0ZW0pKSB7CisgICAgICAgICAgICAgICAg
ICAgIGZvciAobGV0IGFkamFjZW50Tm9kZSBvZiBlZGdlcy5nZXQod29ya0l0ZW0pKQorICAgICAg
ICAgICAgICAgICAgICAgICAgd29ya0xpc3QucHVzaChhZGphY2VudE5vZGUpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgIH0KKworICAgIGZ1bmN0aW9uIHNldFVuaW9uKGEsIGIpCisgICAgeworICAgICAgICBy
ZXR1cm4gbmV3IFNldChbLi4uYSwgLi4uYl0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIG5vblVu
aWZvcm1QYXJhbWV0ZXJJbmRpY2VzKGZ1bmMpCisgICAgeworICAgICAgICBsZXQgcmVzdWx0ID0g
W107CisgICAgICAgIGxldCBlbnRyeVBvaW50UGFyYW1ldGVycyA9IGdhdGhlckVudHJ5UG9pbnRQ
YXJhbWV0ZXJzKGZ1bmMpOworICAgICAgICAvLyBGSVhNRTogVGhpcyBjYW4gYmUgTyhuKSBiZWNh
dXNlIGVudHJ5UG9pbnRQYXJhbWV0ZXJzIHNob3VsZCBiZSBzb3J0ZWQuCisgICAgICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgZnVuYy5wYXJhbWV0ZXJzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAg
ICBsZXQgaXNVbmlmb3JtID0gdHJ1ZTsKKyAgICAgICAgICAgIGZvciAobGV0IGVudHJ5UG9pbnRQ
YXJhbWV0ZXIgb2YgZW50cnlQb2ludFBhcmFtZXRlcnMpIHsKKyAgICAgICAgICAgICAgICBpZiAo
ZW50cnlQb2ludFBhcmFtZXRlci5pbmRleCA9PSBpKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
ICgoZW50cnlQb2ludFBhcmFtZXRlci5zZW1hbnRpYyBpbnN0YW5jZW9mIFJlc291cmNlU2VtYW50
aWMgJiYgKCEodHlwZSBpbnN0YW5jZW9mIFJlZmVyZW5jZVR5cGUpIHx8IHR5cGUuYWRkcmVzc1Nw
YWNlICE9ICJjb25zdGFudCIpKQorICAgICAgICAgICAgICAgICAgICAgICAgfHwgKGVudHJ5UG9p
bnRQYXJhbWV0ZXIuc2VtYW50aWMgaW5zdGFuY2VvZiBCdWlsdEluU2VtYW50aWMpCisgICAgICAg
ICAgICAgICAgICAgICAgICB8fCAoZW50cnlQb2ludFBhcmFtZXRlci5zZW1hbnRpYyBpbnN0YW5j
ZW9mIFN0YWdlSW5PdXRTZW1hbnRpYykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzVW5p
Zm9ybSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBpZiAoIWlzVW5pZm9ybSkKKyAgICAgICAgICAgICAgICByZXN1bHQucHVzaChpKTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGZ1bmN0aW9uIG1hcFBp
ZWNlKHBpZWNlLCB1bmlmb3JtaXR5Q2FsbGJhY2spCisgICAgeworICAgICAgICBmdW5jdGlvbiBt
YXBBc3NpZ25tZW50cyhhc3NpZ25tZW50cykKKyAgICAgICAgeworICAgICAgICAgICAgbGV0IHJl
c3VsdCA9IG5ldyBNYXAoKTsKKyAgICAgICAgICAgIGZvciAobGV0IFthc3ROb2RlLCB2YWx1ZV0g
b2YgYXNzaWdubWVudHMpIHsKKyAgICAgICAgICAgICAgICBsZXQgbWFwcGVkVmFsdWU7CisgICAg
ICAgICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpCisgICAgICAgICAgICAgICAg
ICAgIG1hcHBlZFZhbHVlID0gdmFsdWUubWFwKHVuaWZvcm1pdHlDYWxsYmFjayk7CisgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBtYXBwZWRWYWx1ZSA9IHVuaWZvcm1p
dHlDYWxsYmFjayh2YWx1ZSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LnNldChhc3ROb2RlLCBt
YXBwZWRWYWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgICAgICB9CisKKyAgICAgICAgIGxldCByZXN1bHQgPSBuZXcgTWFwKCk7CisgICAgICAgICBm
b3IgKGxldCBbZnVuYywgcGFyYW1ldGVyQXNzaWdubWVudHNdIG9mIHBpZWNlKSB7CisgICAgICAg
ICAgICBsZXQgcmVzdWx0UGFyYW1ldGVyQXNzaWdubWVudHMgPSBbXTsKKyAgICAgICAgICAgIGZv
ciAobGV0IFtwYXJhbWV0ZXJOb2RlcywgYXNzaWdubWVudHNdIG9mIHBhcmFtZXRlckFzc2lnbm1l
bnRzKSB7CisgICAgICAgICAgICAgICAgbGV0IGJvb2xlYW5QYXJhbWV0ZXJOb2RlcyA9IHBhcmFt
ZXRlck5vZGVzLm1hcCh1bmlmb3JtaXR5Q2FsbGJhY2spOworICAgICAgICAgICAgICAgIGxldCBi
b29sZWFuQXNzaWdubWVudHMgPSBtYXBBc3NpZ25tZW50cyhhc3NpZ25tZW50cyk7CisgICAgICAg
ICAgICAgICAgcmVzdWx0UGFyYW1ldGVyQXNzaWdubWVudHMucHVzaChbYm9vbGVhblBhcmFtZXRl
ck5vZGVzLCBib29sZWFuQXNzaWdubWVudHNdKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHJlc3VsdC5zZXQoZnVuYywgcmVzdWx0UGFyYW1ldGVyQXNzaWdubWVudHMpOworICAgICAgICAg
fQorICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja1Vu
aWZvcm1pdHkocGllY2UpCisgICAgeworICAgICAgICBjbGFzcyBVbmlmb3JtaXR5Q2hlY2tlciBl
eHRlbmRzIFZpc2l0b3IgeworICAgICAgICAgICAgY29uc3RydWN0b3IoYXNzaWdubWVudHMpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgICAgICAgICB0
aGlzLl9hc3NpZ25tZW50cyA9IGFzc2lnbm1lbnRzOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgdmlzaXRWYXJpYWJsZURlY2wobm9kZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBzdXBlci52aXNpdFZhcmlhYmxlRGVjbChub2RlKTsKKyAgICAgICAgICAgICAgICBpZiAoIXRo
aXMuX2Fzc2lnbm1lbnRzLmhhcyhub2RlKSkKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKGBEb24ndCBoYXZlIGEgdW5pZm9ybWl0eSBhc3NpZ25tZW50IGZvciAke25vZGV9YCk7
CisgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9hc3NpZ25tZW50cy5nZXQobm9kZSkgJiYgbm9k
ZS51bmlmb3JtaXR5ID09ICJ1bmlmb3JtIikKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3
IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4ub3JpZ2luU3RyaW5nLCAiVmFyaWFibGUgZGVjbGFyYXRp
b24gaXMgbWFya2VkIHVuaWZvcm0sIGJ1dCBpdCB3YXMgaW5mZXJyZWQgdG8gYmUgYSBub24tdW5p
Zm9ybSB2YWx1ZSIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZvciAobGV0
IFtmdW5jLCBwYXJhbWV0ZXJBc3NpZ25tZW50c10gb2YgcGllY2UpIHsKKyAgICAgICAgICAgIGZv
ciAobGV0IFtwYXJhbWV0ZXJOb2RlcywgYXNzaWdubWVudHNdIG9mIHBhcmFtZXRlckFzc2lnbm1l
bnRzKSB7CisgICAgICAgICAgICAgICAgaWYgKGZ1bmMucGFyYW1ldGVycy5sZW5ndGggIT0gcGFy
YW1ldGVyTm9kZXMubGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IlVuaWZvcm1pdHkgaW5mZXJlbmNlIGxlbmd0aCBkb2Vzbid0IG1hdGNoIHBhcmFtZXRlciBsZW5n
dGgiKTsKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcmFtZXRlck5vZGVz
Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghcGFyYW1ldGVyTm9kZXNb
aV0gJiYgZnVuYy5wYXJhbWV0ZXJzW2ldLnVuaWZvcm1pdHkgPT0gInVuaWZvcm0iKQorICAgICAg
ICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3IoZnVuYy5wYXJhbWV0ZXJzW2ld
Lm9yaWdpbi5vcmlnaW5TdHJpbmcsICJQYXJhbWV0ZXIgaXMgbWFya2VkIHVuaWZvcm0sIGJ1dCBp
dCB3YXMgaW5mZXJyZWQgdG8gYmUgYSBub24tdW5pZm9ybSB2YWx1ZSIpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBmdW5jLnZpc2l0KG5ldyBVbmlmb3JtaXR5Q2hlY2tlcihh
c3NpZ25tZW50cykpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgZnVu
Y3Rpb24gaW5zZXJ0SW50b1Jlc3VsdChyZXN1bHQsIHBpZWNlKQorICAgIHsKKyAgICAgICAgZnVu
Y3Rpb24gZmluZEluZGV4KG5lZWRsZSwgaGF5c3RhY2ssIGZ1bmMpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaGF5c3RhY2subGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgICAgICAgICBsZXQgW3BhcmFtZXRlck5vZGVzLCBhc3NpZ25tZW50c10gPSBoYXlzdGFja1tp
XTsKKyAgICAgICAgICAgICAgICBpZiAocGFyYW1ldGVyTm9kZXMubGVuZ3RoICE9IG5lZWRsZS5s
ZW5ndGgpCisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRnVuY3Rpb24gJHtm
dW5jLm5hbWV9IGNhbid0IGhhdmUgYm90aCAke3BhcmFtZXRlck5vZGVzLmxlbmd0aH0gYW5kICR7
bmVlZGxlLmxlbmd0aH0gYXJndW1lbnRzYCk7CisgICAgICAgICAgICAgICAgbGV0IG1hdGNoID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHBhcmFtZXRlck5vZGVz
Lmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJOb2Rlc1tq
XSAhPSBuZWVkbGVbal0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobWF0Y2gpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIC0x
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tBc3NpZ25tZW50cyhhLCBiLCBm
dW5jKSB7CisgICAgICAgICAgICBmdW5jdGlvbiBjaGVjayhhLCBiKSB7CisgICAgICAgICAgICAg
ICAgZm9yIChsZXQgW2FzdE5vZGUsIHZhbHVlXSBvZiBhKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmICghYi5oYXMoYXN0Tm9kZSkpCisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoYERpZmZlcmVudCBzZXQgb2Ygbm9kZXMgaW4gZnVuY3Rpb24gJHtmdW5jLm5hbWV9YCk7
CisgICAgICAgICAgICAgICAgICAgIGxldCBiVmFsdWUgPSBiLmdldChhc3ROb2RlKTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghKGJWYWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB8fCB2YWx1ZS5sZW5n
dGggIT0gYlZhbHVlLmxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoYE5vZGUgdW5pZm9ybWl0eSBzaGFwZSBkb2VzbnQgbWF0Y2ggZm9yIG5vZGUgJHth
c3ROb2RlfWApOworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2
YWx1ZS5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1
ZVtpXSAhPSBiVmFsdWVbaV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcihgRGlmZmVyZW50IGFzc2lnbm1lbnQgZm9yIG5vZGUgJHthc3ROb2RlfWApOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9IGJWYWx1ZSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYERpZmZlcmVudCBhc3NpZ25tZW50IGZv
ciBub2RlICR7YXN0Tm9kZX1gKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNoZWNrKGEsIGIpOworICAgICAgICAg
ICAgY2hlY2soYiwgYSk7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGxldCBbZnVuYywgcGll
Y2VQYXJhbWV0ZXJBc3NpZ25tZW50c10gb2YgcGllY2UpIHsKKyAgICAgICAgICAgIGlmIChyZXN1
bHQuaGFzKGZ1bmMpKSB7CisgICAgICAgICAgICAgICAgbGV0IHJlc3VsdFBhcmFtZXRlckFzc2ln
bm1lbnRzID0gcmVzdWx0LmdldChmdW5jKTsKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBbcGll
Y2VQYXJhbWV0ZXJOb2RlcywgcGllY2VBc3NpZ25tZW50c10gb2YgcGllY2VQYXJhbWV0ZXJBc3Np
Z25tZW50cykgeworICAgICAgICAgICAgICAgICAgICBsZXQgaW5kZXggPSBmaW5kSW5kZXgocGll
Y2VQYXJhbWV0ZXJOb2RlcywgcmVzdWx0UGFyYW1ldGVyQXNzaWdubWVudHMsIGZ1bmMpOworICAg
ICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0UGFyYW1ldGVyQXNzaWdubWVudHMucHVzaChbcGllY2VQYXJhbWV0ZXJOb2RlcywgcGll
Y2VBc3NpZ25tZW50c10pOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgICAgICBjaGVja0Fzc2lnbm1lbnRzKHBpZWNlUGFyYW1ldGVyTm9kZXMsIHJlc3VsdFBh
cmFtZXRlckFzc2lnbm1lbnRzW2luZGV4XSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICAgICAgcmVzdWx0LnNldChmdW5jLCBwaWVjZVBhcmFtZXRl
ckFzc2lnbm1lbnRzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCByZXN1bHQgPSBuZXcg
TWFwKCk7IC8vIEZ1bmNEZWYgPT4gWyhbYm9vbF0sIEFTVE5vZGUgPT4gKGJvb2wgb3IgW2Jvb2xd
KSldCisgICAgZm9yIChsZXQgZnVuY3Rpb25zIGluIHByb2dyYW0uZnVuY3Rpb25zLnZhbHVlcygp
KSB7CisgICAgICAgIGZvciAobGV0IGZ1bmMgaW4gZnVuY3Rpb25zKSB7CisgICAgICAgICAgICBp
ZiAoZnVuYy5zaGFkZXJUeXBlKSB7CisgICAgICAgICAgICAgICAgbGV0IGdyYXBoQnVpbGRlciA9
IG5ldyBHcmFwaEJ1aWxkZXIoZnVuYyk7CisgICAgICAgICAgICAgICAgbGV0IGFzc2lnbm1lbnRz
ID0gZ3JhcGhCdWlsZGVyLndpbGxDYWxsKGZ1bmMpOworICAgICAgICAgICAgICAgIGZ1bmMudmlz
aXQoZ3JhcGhCdWlsZGVyKTsKKyAgICAgICAgICAgICAgICBncmFwaEJ1aWxkZXIuZGlkQ2FsbChh
c3NpZ25tZW50cyk7CisKKyAgICAgICAgICAgICAgICBsZXQgZWRnZXMgPSBncmFwaEJ1aWxkZXIu
ZWRnZXM7CisgICAgICAgICAgICAgICAgbGV0IG5vblVuaWZvcm1HcmFwaE5vZGVzID0gbmV3IFNl
dCgpOworICAgICAgICAgICAgICAgIGZvciAobGV0IG5vblVuaWZvcm1QYXJhbWV0ZXJJbmRleCBv
ZiBub25Vbmlmb3JtUGFyYW1ldGVySW5kaWNlcyhmdW5jKSkKKyAgICAgICAgICAgICAgICAgICAg
bm9uVW5pZm9ybUdyYXBoTm9kZXMgPSBzZXRVbmlvbihub25Vbmlmb3JtR3JhcGhOb2RlcywgcG9s
bHV0ZShlZGdlcywgYXNzaWdubWVudHMuZ2V0KGZ1bmMucGFyYW1ldGVyc1tpXSkpKTsKKworICAg
ICAgICAgICAgICAgIGxldCBzb2x2ZWRQaWVjZSA9IG1hcFBpZWNlKGdyYXBoQnVpbGRlci5yZXN1
bHQsIGdyYXBoTm9kZSA9PiAhbm9uVW5pZm9ybUdyYXBoTm9kZXMuaGFzKGdyYXBoTm9kZSkpOwor
ICAgICAgICAgICAgICAgIGNoZWNrVW5pZm9ybWl0eShzb2x2ZWRQaWVjZSk7CisgICAgICAgICAg
ICAgICAgaW5zZXJ0SW50b1Jlc3VsdChyZXN1bHQsIGdyYXBoQnVpbGRlci5yZXN1bHQpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WYXJpYWJsZURlY2wuanMgYi9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WYXJpYWJsZURlY2wuanMKaW5kZXggNzY4Zjhi
YWFhZDNiODJkNGMzNTE3ZWI3MWIyYmVhNDlhN2VlZDgxZC4uOGNmM2QwMTMzYjRhYThkNzZlYWQ2
ZjhlMDhlY2FiYzg4ZDhlOTkzMSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvVmFyaWFibGVEZWNsLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L1ZhcmlhYmxlRGVjbC5qcwpAQCAtMjUsMjQgKzI1LDMyIEBACiAidXNlIHN0cmljdCI7CiAKIGNs
YXNzIFZhcmlhYmxlRGVjbCBleHRlbmRzIFZhbHVlIHsKLSAgICBjb25zdHJ1Y3RvcihvcmlnaW4s
IG5hbWUsIHR5cGUsIGluaXRpYWxpemVyKQorICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwgbmFtZSwg
dHlwZSwgaW5pdGlhbGl6ZXIgPSBudWxsLCB1bmlmb3JtaXR5ID0gbnVsbCkKICAgICB7CiAgICAg
ICAgIHN1cGVyKCk7CiAgICAgICAgIHRoaXMuX29yaWdpbiA9IG9yaWdpbjsKICAgICAgICAgdGhp
cy5fbmFtZSA9IG5hbWU7CiAgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlOwogICAgICAgICB0aGlz
Ll9pbml0aWFsaXplciA9IGluaXRpYWxpemVyOworICAgICAgICB0aGlzLl91bmlmb3JtaXR5ID0g
dW5pZm9ybWl0eTsKICAgICB9CiAgICAgCiAgICAgZ2V0IG9yaWdpbigpIHsgcmV0dXJuIHRoaXMu
X29yaWdpbjsgfQogICAgIGdldCBuYW1lKCkgeyByZXR1cm4gdGhpcy5fbmFtZTsgfQogICAgIGdl
dCB0eXBlKCkgeyByZXR1cm4gdGhpcy5fdHlwZTsgfQogICAgIGdldCBpbml0aWFsaXplcigpIHsg
cmV0dXJuIHRoaXMuX2luaXRpYWxpemVyOyB9CisgICAgZ2V0IHVuaWZvcm1pdHkoKSB7IHJldHVy
biB0aGlzLl91bmlmb3JtaXR5OyB9CiAgICAgZ2V0IHZhcklzTFZhbHVlKCkgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIAogICAgIHRvU3RyaW5nKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLnR5
cGUgKyAiICIgKyB0aGlzLm5hbWUgKyAodGhpcy5pbml0aWFsaXplciA/ICIgPSAiICsgdGhpcy5p
bml0aWFsaXplciA6ICIiKTsKKyAgICAgICAgbGV0IHJlc3VsdCA9ICIiOworICAgICAgICBpZiAo
dGhpcy51bmlmb3JtaXR5KQorICAgICAgICAgICAgcmVzdWx0ICs9IGAke3VuaWZvcm1pdHl9IGA7
CisgICAgICAgIHJlc3VsdCArPSBgJHt0aGlzLnR5cGV9ICR7dGhpcy5uYW1lfWA7CisgICAgICAg
IGlmICh0aGlzLmluaXRpYWxpemVyKQorICAgICAgICAgICAgcmVzdWx0ICs9IGAgPSAke3RoaXMu
aW5pdGlhbGl6ZXJ9YDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0b3IuanMgYi9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9yLmpzCmluZGV4IDRlYTFiOWVlNGZhMDRkMGE1
M2VmNmUyYjA1YWE1MzhkZTgzZjJmYWQuLjU0ZjQ0NGZkMzEwOWZjYWQ1YTE0M2VhZjI1NzExMjFj
N2I4ODNmODkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0
b3IuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcwpAQCAt
NDYsNiArNDYsNyBAQCBjbGFzcyBWaXNpdG9yIHsKICAgICB2aXNpdEZ1bmNQYXJhbWV0ZXIobm9k
ZSkKICAgICB7CiAgICAgICAgIG5vZGUudHlwZS52aXNpdCh0aGlzKTsKKyAgICAgICAgTm9kZS52
aXNpdChub2RlLnF1YWxpZmllcnMsIHRoaXMpOwogICAgICAgICBOb2RlLnZpc2l0KG5vZGUuc2Vt
YW50aWMsIHRoaXMpOwogICAgIH0KICAgICAKQEAgLTk4LDYgKzk5LDcgQEAgY2xhc3MgVmlzaXRv
ciB7CiAgICAgdmlzaXRGaWVsZChub2RlKQogICAgIHsKICAgICAgICAgbm9kZS50eXBlLnZpc2l0
KHRoaXMpOworICAgICAgICBOb2RlLnZpc2l0KG5vZGUucXVhbGlmaWVycywgdGhpcyk7CiAgICAg
ICAgIE5vZGUudmlzaXQobm9kZS5zZW1hbnRpYywgdGhpcyk7CiAgICAgfQogICAgIApAQCAtMzc0
LDUgKzM3Niw5IEBAIGNsYXNzIFZpc2l0b3IgewogICAgIHZpc2l0U3BlY2lhbGl6YXRpb25Db25z
dGFudFNlbWFudGljKG5vZGUpCiAgICAgewogICAgIH0KKworICAgIHZpc2l0UXVhbGlmaWVycyhu
b2RlKQorICAgIHsKKyAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL2luZGV4Lmh0bWwgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRl
eC5odG1sCmluZGV4IGU4ZDgzNThkZmY5Njk2ZjJkYmRlNDJmNWQ2MTM3YTE1OWMxOTNkNDIuLmRl
MGQ3ZjNhNzg1YjBmNTdjZGMwNTNjNzYwMGVlOWRhOTRmMDRhZjUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWwKKysrIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvaW5kZXguaHRtbApAQCAtNTUsNiArNTUsNyBAQAogPHNjcmlwdCBzcmM9
IkVCdWZmZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkVCdWZmZXJCdWlsZGVyLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJFUHRyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJF
bnRyeVBvaW50UGFyYW1ldGVyR2F0aGVyZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkVu
dW1MaXRlcmFsLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJFbnVtTWVtYmVyLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSJFbnVtVHlwZS5qcyI+PC9zY3JpcHQ+CkBAIC0xMTIsNiArMTEz
LDcgQEAKIDxzY3JpcHQgc3JjPSJQcm9ncmFtLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJQ
cm9ncmFtV2l0aFVubmVjZXNzYXJ5VGhpbmdzUmVtb3ZlZC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iUHRyVHlwZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iUXVhbGlmaWVycy5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iUmVjdXJzaW9uQ2hlY2tlci5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iUmVjdXJzaXZlVHlwZUNoZWNrZXIuanMiPjwvc2NyaXB0PgpAQCAtMTQ5LDYgKzE1
MSw3IEBACiA8c2NyaXB0IHNyYz0iVWludExpdGVyYWwuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9IlVpbnRMaXRlcmFsVHlwZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iVW5pZmljYXRp
b25Db250ZXh0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJVbmlmb3JtaXR5Q2hlY2tlci5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iVW5yZWFjaGFibGVDb2RlQ2hlY2tlci5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iVmFyaWFibGVEZWNsLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSJWYXJpYWJsZVJlZi5qcyI+PC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351868</attachid>
            <date>2018-10-09 00:25:46 -0700</date>
            <delta_ts>2018-10-09 00:25:46 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-189125-20181009002545.patch</filename>
            <type>text/plain</type>
            <size>81231</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2OTM3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjY3NGI5YWM3NGFmZGFmYmNkOTZlYzI4MmU2NzQyNjEy
NWViOWRhYi4uNDI3YzUxODZhOTg0NjAzNTljMmQ0MDI5OWNjZjY5YzY4NDdiMWQwNiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEw
MSBAQAorMjAxOC0xMC0wOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29t
PgorCisgICAgICAgIFtXSExTTF0gSW1wbGVtZW50IGR5bmFtaWNhbGx5IHVuaWZvcm0gZXhwcmVz
c2lvbiByZXN0cmljdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4OTEyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzOgorICAgICAgICAqIFdl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbG9jYXRlQXRFbnRyeVBvaW50cy5qczoKKyAgICAgICAg
KGFsbG9jYXRlQXRFbnRyeVBvaW50cy51cGRhdGVGdW5jdGlvbi5VcGRhdGVGdW5jdGlvbnMucHJv
dG90eXBlLl9hZGRWYXJpYWJsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9DaGVja2VyLmpzOgorICAgICAgICAoQ2hlY2tlci5wcm90b3R5cGUudmlzaXRQ
cm9ncmFtKToKKyAgICAgICAgKENoZWNrZXIucHJvdG90eXBlLnZpc2l0UXVhbGlmaWVycyk6Cisg
ICAgICAgIChDaGVja2VyKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GaWVs
ZC5qczoKKyAgICAgICAgKEZpZWxkKToKKyAgICAgICAgKEZpZWxkLnByb3RvdHlwZS5nZXQgcXVh
bGlmaWVycyk6CisgICAgICAgIChGaWVsZC5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAq
IFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmNQYXJhbWV0ZXIuanM6CisgICAgICAgIChGdW5j
UGFyYW1ldGVyKToKKyAgICAgICAgKEZ1bmNQYXJhbWV0ZXIucHJvdG90eXBlLmdldCBxdWFsaWZp
ZXJzKToKKyAgICAgICAgKEZ1bmNQYXJhbWV0ZXIucHJvdG90eXBlLmdldCB1bmlmb3JtaXR5KToK
KyAgICAgICAgKEZ1bmNQYXJhbWV0ZXIucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAgKiBX
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9NZXRhbC9XSExTTCBUZXN0cy9XSExTTCBUZXN0cy54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L1BhcnNlLmpzOgorICAgICAgICAocGFyc2VRdWFsaWZpZXJzKToKKyAgICAgICAgKHBhcnNlVmFy
aWFibGVEZWNscyk6CisgICAgICAgIChwYXJzZVBhcmFtZXRlcik6CisgICAgICAgIChwYXJzZUZp
ZWxkKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QcmVwYXJlLmpzOgorICAg
ICAgICAobGV0LnByZXBhcmUpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1F1
YWxpZmllcnMuanM6IEFkZGVkLgorICAgICAgICAoUXVhbGlmaWVycyk6CisgICAgICAgIChRdWFs
aWZpZXJzLnByb3RvdHlwZS5nZXQgbm9pbnRlcnBvbGF0aW9uKToKKyAgICAgICAgKFF1YWxpZmll
cnMucHJvdG90eXBlLmdldCBub3BlcnNwZWN0aXZlKToKKyAgICAgICAgKFF1YWxpZmllcnMucHJv
dG90eXBlLmdldCBjZW50cm9pZCk6CisgICAgICAgIChRdWFsaWZpZXJzLnByb3RvdHlwZS5nZXQg
c2FtcGxlKToKKyAgICAgICAgKFF1YWxpZmllcnMucHJvdG90eXBlLmdldCBpc1ZhbGlkKToKKyAg
ICAgICAgKFF1YWxpZmllcnMucHJvdG90eXBlLmdldCB0b2tlbnMpOgorICAgICAgICAoUXVhbGlm
aWVycy5wcm90b3R5cGUuZ2V0IGxlbmd0aCk6CisgICAgICAgIChRdWFsaWZpZXJzLnByb3RvdHlw
ZS5nZXQgb3JpZ2luU3RyaW5nKToKKyAgICAgICAgKFF1YWxpZmllcnMucHJvdG90eXBlLnRvU3Ry
aW5nKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5qczoKKyAg
ICAgICAgKFJld3JpdGVyLnByb3RvdHlwZS52aXNpdEZ1bmNQYXJhbWV0ZXIpOgorICAgICAgICAo
UmV3cml0ZXIucHJvdG90eXBlLnZpc2l0VmFyaWFibGVEZWNsKToKKyAgICAgICAgKFJld3JpdGVy
LnByb3RvdHlwZS52aXNpdEZpZWxkKToKKyAgICAgICAgKFJld3JpdGVyLnByb3RvdHlwZS52aXNp
dFF1YWxpZmllcnMpOgorICAgICAgICAoUmV3cml0ZXIpOgorICAgICAgICAqIFdlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1NQSVJWLmh0bWw6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvVGVzdC5odG1sOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanM6
CisgICAgICAgICh0ZXN0cy50cmFwQmVjYXVzZU9mSW5kZXhBY2Vzc3MpOgorICAgICAgICAodGVz
dHMudHJhcFRyYW5zaXRpdmVseSk6CisgICAgICAgICh0ZXN0cy5pbmNvbXBhdGlibGVRdWFsaWZp
ZXJzKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Vbmlmb3JtaXR5Q2hlY2tl
ci5qczogQWRkZWQuCisgICAgICAgIChjaGVja1VuaWZvcm1zLkdyYXBoQnVpbGRlcik6CisgICAg
ICAgIChjaGVja1VuaWZvcm1zLkdyYXBoQnVpbGRlci5wcm90b3R5cGUuZ2V0IGVkZ2VzKToKKyAg
ICAgICAgKGNoZWNrVW5pZm9ybXMuR3JhcGhCdWlsZGVyLnByb3RvdHlwZS5nZXQgcmVzdWx0KToK
KyAgICAgICAgKGNoZWNrVW5pZm9ybXMuR3JhcGhCdWlsZGVyLnByb3RvdHlwZS5fYWxsb2NhdGVH
cmFwaE5vZGUpOgorICAgICAgICAoY2hlY2tVbmlmb3Jtcy5HcmFwaEJ1aWxkZXIucHJvdG90eXBl
Ll9wdXNoQ29udHJvbEZsb3cpOgorICAgICAgICAoY2hlY2tVbmlmb3Jtcy5HcmFwaEJ1aWxkZXIu
cHJvdG90eXBlLmNyZWF0ZVBhcmFtZXRlckdyYXBoTm9kZXMpOgorICAgICAgICAoY2hlY2tVbmlm
b3Jtcy5HcmFwaEJ1aWxkZXIucHJvdG90eXBlLnZpc2l0RnVuY1BhcmFtZXRlcik6CisgICAgICAg
IChjaGVja1VuaWZvcm1zLkdyYXBoQnVpbGRlci5wcm90b3R5cGUudmlzaXRGdW5jRGVmKToKKyAg
ICAgICAgKGNoZWNrVW5pZm9ybXMuR3JhcGhCdWlsZGVyLnByb3RvdHlwZS52aXNpdE5hdGl2ZUZ1
bmMpOgorICAgICAgICAoY2hlY2tVbmlmb3Jtcy5HcmFwaEJ1aWxkZXIucHJvdG90eXBlLnZpc2l0
VmFyaWFibGVEZWNsKToKKyAgICAgICAgKGNoZWNrVW5pZm9ybXMuR3JhcGhCdWlsZGVyLnByb3Rv
dHlwZS52aXNpdEFzc2lnbm1lbnQpOgorICAgICAgICAoY2hlY2tVbmlmb3Jtcy5HcmFwaEJ1aWxk
ZXIucHJvdG90eXBlLnZpc2l0UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbik6CisgICAgICAgIChj
aGVja1VuaWZvcm1zLkdyYXBoQnVpbGRlci5wcm90b3R5cGUudmlzaXRUZXJuYXJ5RXhwcmVzc2lv
bik6CisgICAgICAgIChjaGVja1VuaWZvcm1zLkdyYXBoQnVpbGRlci5wcm90b3R5cGUudmlzaXRW
YXJpYWJsZVJlZik6CisgICAgICAgIChjaGVja1VuaWZvcm1zLkdyYXBoQnVpbGRlci5wcm90b3R5
cGUudmlzaXRJZlN0YXRlbWVudCk6CisgICAgICAgIChjaGVja1VuaWZvcm1zLkdyYXBoQnVpbGRl
ci5wcm90b3R5cGUudmlzaXRXaGlsZUxvb3ApOgorICAgICAgICAoY2hlY2tVbmlmb3Jtcy5HcmFw
aEJ1aWxkZXIucHJvdG90eXBlLnZpc2l0RG9XaGlsZUxvb3ApOgorICAgICAgICAoY2hlY2tVbmlm
b3Jtcy5HcmFwaEJ1aWxkZXIucHJvdG90eXBlLnZpc2l0Rm9yTG9vcCk6CisgICAgICAgIChjaGVj
a1VuaWZvcm1zLkdyYXBoQnVpbGRlci5wcm90b3R5cGUudmlzaXRTd2l0Y2hTdGF0ZW1lbnQpOgor
ICAgICAgICAoY2hlY2tVbmlmb3Jtcy5HcmFwaEJ1aWxkZXIucHJvdG90eXBlLnZpc2l0UmV0dXJu
KToKKyAgICAgICAgKGNoZWNrVW5pZm9ybXMuR3JhcGhCdWlsZGVyLnByb3RvdHlwZS52aXNpdENv
bnRpbnVlKToKKyAgICAgICAgKGNoZWNrVW5pZm9ybXMuR3JhcGhCdWlsZGVyLnByb3RvdHlwZS52
aXNpdEJyZWFrKToKKyAgICAgICAgKGNoZWNrVW5pZm9ybXMuR3JhcGhCdWlsZGVyLnByb3RvdHlw
ZS52aXNpdFRyYXBTdGF0ZW1lbnQpOgorICAgICAgICAoY2hlY2tVbmlmb3Jtcy5HcmFwaEJ1aWxk
ZXIucHJvdG90eXBlLnZpc2l0R2VuZXJpY0xpdGVyYWwpOgorICAgICAgICAoY2hlY2tVbmlmb3Jt
cy5HcmFwaEJ1aWxkZXIucHJvdG90eXBlLnZpc2l0TnVsbExpdGVyYWwpOgorICAgICAgICAoY2hl
Y2tVbmlmb3Jtcy5HcmFwaEJ1aWxkZXIucHJvdG90eXBlLnZpc2l0Qm9vbExpdGVyYWwpOgorICAg
ICAgICAoY2hlY2tVbmlmb3Jtcy5HcmFwaEJ1aWxkZXIucHJvdG90eXBlLnZpc2l0QW5vbnltb3Vz
VmFyaWFibGUpOgorICAgICAgICAoY2hlY2tVbmlmb3Jtcy5HcmFwaEJ1aWxkZXIucHJvdG90eXBl
LnZpc2l0Q2FsbEV4cHJlc3Npb24pOgorICAgICAgICAoY2hlY2tVbmlmb3Jtcy5wb2xsdXRlKToK
KyAgICAgICAgKGNoZWNrVW5pZm9ybXMuc2V0VW5pb24pOgorICAgICAgICAoY2hlY2tVbmlmb3Jt
cy5pc05vblVuaWZvcm0pOgorICAgICAgICAoY2hlY2tVbmlmb3Jtcyk6CisgICAgICAgICogV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvVmFyaWFibGVEZWNsLmpzOgorICAgICAgICAoVmFyaWFibGVE
ZWNsKToKKyAgICAgICAgKFZhcmlhYmxlRGVjbC5wcm90b3R5cGUuZ2V0IHVuaWZvcm1pdHkpOgor
ICAgICAgICAoVmFyaWFibGVEZWNsLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgICogV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qczoKKyAgICAgICAgKFZpc2l0b3IucHJvdG90
eXBlLnZpc2l0RnVuY1BhcmFtZXRlcik6CisgICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS52aXNp
dEZpZWxkKToKKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLnZpc2l0UXVhbGlmaWVycyk6Cisg
ICAgICAgIChWaXNpdG9yKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRl
eC5odG1sOgorCiAyMDE4LTEwLTA4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIFdLQnVuZGxlRmlsZUhhbmRsZVJlZgpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzCmluZGV4IGJhNjVjYzVkNTUxZGRlZGUwMThlYmZkMzVm
YjAzM2E1MGRjMjkzNjIuLmZmOTUzYjY1NDk0YzI5M2JlOWEzMDg1NDYyMTE1MmUzNzMyZjVmNzgg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcworKysgYi9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMKQEAgLTc4LDYgKzc4LDcgQEAgbG9h
ZCgiRUFycmF5UmVmLmpzIik7CiBsb2FkKCJFQnVmZmVyLmpzIik7CiBsb2FkKCJFQnVmZmVyQnVp
bGRlci5qcyIpOwogbG9hZCgiRVB0ci5qcyIpOworbG9hZCgiRW50cnlQb2ludFBhcmFtZXRlckdh
dGhlcmVyLmpzIik7CiBsb2FkKCJFbnVtTGl0ZXJhbC5qcyIpOwogbG9hZCgiRW51bU1lbWJlci5q
cyIpOwogbG9hZCgiRW51bVR5cGUuanMiKTsKQEAgLTEzNSw2ICsxMzYsNyBAQCBsb2FkKCJQcm9w
ZXJ0eVJlc29sdmVyLmpzIik7CiBsb2FkKCJQcm9ncmFtLmpzIik7CiBsb2FkKCJQcm9ncmFtV2l0
aFVubmVjZXNzYXJ5VGhpbmdzUmVtb3ZlZC5qcyIpOwogbG9hZCgiUHRyVHlwZS5qcyIpOworbG9h
ZCgiUXVhbGlmaWVycy5qcyIpOwogbG9hZCgiUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5qcyIp
OwogbG9hZCgiUmVjdXJzaW9uQ2hlY2tlci5qcyIpOwogbG9hZCgiUmVjdXJzaXZlVHlwZUNoZWNr
ZXIuanMiKTsKQEAgLTE3Miw2ICsxNzQsNyBAQCBsb2FkKCJUeXBlZFZhbHVlLmpzIik7CiBsb2Fk
KCJVaW50TGl0ZXJhbC5qcyIpOwogbG9hZCgiVWludExpdGVyYWxUeXBlLmpzIik7CiBsb2FkKCJV
bmlmaWNhdGlvbkNvbnRleHQuanMiKTsKK2xvYWQoIlVuaWZvcm1pdHlDaGVja2VyLmpzIik7CiBs
b2FkKCJVbnJlYWNoYWJsZUNvZGVDaGVja2VyLmpzIik7CiBsb2FkKCJWYXJpYWJsZURlY2wuanMi
KTsKIGxvYWQoIlZhcmlhYmxlUmVmLmpzIik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9BbGxvY2F0ZUF0RW50cnlQb2ludHMuanMgYi9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9BbGxvY2F0ZUF0RW50cnlQb2ludHMuanMKaW5kZXggMmNkZTUzZmYwMGRj
ZWQ4Mjg4MjlmOTkxMjc0NTk5ZTQxNGI1ODI4Yy4uNTM4YjJmY2JmZGI2MDFmMzQ1NjQ3N2VmNjdi
YjI4ZTMwZjM4ZTQyNiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
QWxsb2NhdGVBdEVudHJ5UG9pbnRzLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0FsbG9jYXRlQXRFbnRyeVBvaW50cy5qcwpAQCAtMTQyLDcgKzE0Miw3IEBAIGZ1bmN0aW9u
IGFsbG9jYXRlQXRFbnRyeVBvaW50cyhwcm9ncmFtKQogCiAgICAgICAgICAgICBfYWRkVmFyaWFi
bGVEZWNsYXJhdGlvbigpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fdmFy
aWFibGVEZWNsID0gbmV3IFZhcmlhYmxlRGVjbChmdW5jLm9yaWdpbiwgImdsb2JhbCBzdHJ1Y3Qi
LCBnbG9iYWxTdHJ1Y3RUeXBlUmVmLCBudWxsKTsKKyAgICAgICAgICAgICAgICB0aGlzLl92YXJp
YWJsZURlY2wgPSBuZXcgVmFyaWFibGVEZWNsKGZ1bmMub3JpZ2luLCAiZ2xvYmFsIHN0cnVjdCIs
IGdsb2JhbFN0cnVjdFR5cGVSZWYpOwogICAgICAgICAgICAgICAgIHRoaXMubWFrZUdsb2JhbFN0
cnVjdFZhcmlhYmxlUmVmID0gKCkgPT4gbmV3IE1ha2VQdHJFeHByZXNzaW9uKGZ1bmMub3JpZ2lu
LCBWYXJpYWJsZVJlZi53cmFwKHRoaXMuX3ZhcmlhYmxlRGVjbCkpOwogICAgICAgICAgICAgICAg
IGZ1bmMuYm9keS5zdGF0ZW1lbnRzLnVuc2hpZnQodGhpcy5fdmFyaWFibGVEZWNsKTsKICAgICAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNr
ZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzCmluZGV4IDFl
OTkzMjc0ODM5NWIwMjI1OTYwMjUyMmRiOGEyNjgwNWIxZWUzY2YuLjM4NjA1MzY4OGQxMTEzYWI3
MDFmYjMxMzMzYzFlZTcxZjkwNzE2ZTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL0NoZWNrZXIuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
Q2hlY2tlci5qcwpAQCAtNTgsMTExICs1OCw0NCBAQCBjbGFzcyBDaGVja2VyIGV4dGVuZHMgVmlz
aXRvciB7CiAgICAgICAgICAgICBmb3IgKGxldCBmdW5jIG9mIGZ1bmNzKQogICAgICAgICAgICAg
ICAgIGRvU3RhdGVtZW50KGZ1bmMpOwogICAgICAgICB9CisgICAgICAgIGZvciAobGV0IHR5cGUg
b2Ygbm9kZS50eXBlcy52YWx1ZXMoKSkgeworICAgICAgICAgICAgaWYgKHR5cGUgaW5zdGFuY2Vv
ZiBBcnJheSkgeworICAgICAgICAgICAgICAgIGZvciAobGV0IHQgb2YgdHlwZSkKKyAgICAgICAg
ICAgICAgICAgICAgZG9TdGF0ZW1lbnQodCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgZG9TdGF0ZW1lbnQodHlwZSk7CisgICAgICAgIH0KICAgICB9
CiAKICAgICBfY2hlY2tTZW1hbnRpY3Mobm9kZSkKICAgICB7Ci0gICAgICAgIGNsYXNzIEl0ZW0g
ewotICAgICAgICAgICAgY29uc3RydWN0b3IodHlwZSwgc2VtYW50aWMpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUuc2hhZGVyVHlwZSAhPSAidGVzdCIgJiYgIXNlbWFu
dGljKQotICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdp
bi5vcmlnaW5TdHJpbmcsICJBbiBlbnRyeS1wb2ludCBpbnB1dC9vdXRwdXQgZXhpc3RzIHdoaWNo
IGRvZXNuJ3QgaGF2ZSBhIHNlbWFudGljIik7Ci0gICAgICAgICAgICAgICAgdGhpcy5fdHlwZSA9
IHR5cGU7Ci0gICAgICAgICAgICAgICAgdGhpcy5fc2VtYW50aWMgPSBzZW1hbnRpYzsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgZ2V0IHR5cGUoKSB7IHJldHVybiB0aGlzLl90eXBlOyB9
Ci0gICAgICAgICAgICBnZXQgc2VtYW50aWMoKSB7IHJldHVybiB0aGlzLl9zZW1hbnRpYzsgfQot
ICAgICAgICB9Ci0KLSAgICAgICAgbGV0IHByb2dyYW0gPSB0aGlzLl9wcm9ncmFtOwotICAgICAg
ICBjbGFzcyBHYXRoZXJlciBleHRlbmRzIFZpc2l0b3IgewotICAgICAgICAgICAgY29uc3RydWN0
b3IoY3VycmVudFNlbWFudGljID0gbnVsbCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBzdXBlcigpOwotICAgICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRTZW1hbnRpYyA9IGN1cnJl
bnRTZW1hbnRpYzsKLSAgICAgICAgICAgICAgICB0aGlzLl9yZXN1bHQgPSBbXTsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgcmVzZXQoY3VycmVudFNlbWFudGljID0gbnVsbCkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRTZW1hbnRpYyA9IGN1cnJlbnRT
ZW1hbnRpYzsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc2V0IGN1cnJlbnRTZW1hbnRp
Yyh2YWx1ZSkgeyB0aGlzLl9jdXJyZW50U2VtYW50aWMgPSB2YWx1ZTsgfQotICAgICAgICAgICAg
Z2V0IGN1cnJlbnRTZW1hbnRpYygpIHsgcmV0dXJuIHRoaXMuX2N1cnJlbnRTZW1hbnRpYzsgfQot
ICAgICAgICAgICAgZ2V0IHJlc3VsdCgpIHsgcmV0dXJuIHRoaXMuX3Jlc3VsdDsgfQotCi0gICAg
ICAgICAgICB2aXNpdEVudW1UeXBlKG5vZGUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgdGhpcy5yZXN1bHQucHVzaChuZXcgSXRlbShub2RlLCB0aGlzLmN1cnJlbnRTZW1hbnRpYykp
OwotICAgICAgICAgICAgfQorICAgICAgICBsZXQgW2lucHV0UGFyYW1ldGVycywgb3V0cHV0UGFy
YW1ldGVyc10gPSBnYXRoZXJFbnRyeVBvaW50UGFyYW1ldGVycyhub2RlKTsKIAotICAgICAgICAg
ICAgdmlzaXRWZWN0b3JUeXBlKG5vZGUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
dGhpcy5yZXN1bHQucHVzaChuZXcgSXRlbShub2RlLCB0aGlzLmN1cnJlbnRTZW1hbnRpYykpOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2aXNpdE1hdHJpeFR5cGUobm9kZSkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdC5wdXNoKG5ldyBJdGVtKG5vZGUs
IHRoaXMuY3VycmVudFNlbWFudGljKSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZp
c2l0TmF0aXZlVHlwZShub2RlKQorICAgICAgICBpZiAobm9kZS5zaGFkZXJUeXBlICE9ICJ0ZXN0
IikgeworICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tNaXNzaW5nU2VtYW50aWMoaXRlbXMpCiAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKHByb2dyYW0uaW50cmluc2ljcy52b2lk
LmVxdWFscyhub2RlKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50U2Vt
YW50aWMpCi0gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2Rl
Lm9yaWdpbi5vcmlnaW5TdHJpbmcsICJWb2lkIGNhbid0IGhhdmUgYSBzZW1hbnRpYyIpOwotICAg
ICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdC5wdXNo
KG5ldyBJdGVtKG5vZGUsIHRoaXMuY3VycmVudFNlbWFudGljKSk7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIHZpc2l0U3RydWN0VHlwZShub2RlKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRTZW1hbnRpYyAhPSBudWxsKQotICAgICAgICAgICAg
ICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJT
dHJ1Y3RzIGluc2lkZSBlbnRyeSBwb2ludCBzaWduYXR1cmVzIGNhbid0IGhhdmUgc2VtYW50aWNz
LiIpOwotICAgICAgICAgICAgICAgIGZvciAobGV0IGZpZWxkIG9mIG5vZGUuZmllbGRzKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFNlbWFudGljID0gZmllbGQuc2VtYW50aWM7
Ci0gICAgICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUudmlzaXQodGhpcyk7CisgICAgICAgICAg
ICAgICAgZm9yIChsZXQgaXRlbSBvZiBpdGVtcykgeworICAgICAgICAgICAgICAgICAgICBpZiAo
IWl0ZW0uc2VtYW50aWMpCisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVF
cnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJBbiBlbnRyeS1wb2ludCBpbnB1dC9vdXRw
dXQgZXhpc3RzIHdoaWNoIGRvZXNuJ3QgaGF2ZSBhIHNlbWFudGljIik7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2aXNpdFR5cGVSZWYobm9kZSkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBub2RlLnR5cGUudmlzaXQodGhpcyk7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZpc2l0UHRyVHlwZShub2RlKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIHRoaXMucmVzdWx0LnB1c2gobmV3IEl0ZW0obm9kZSwgdGhpcy5j
dXJyZW50U2VtYW50aWMpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdmlzaXRBcnJh
eVJlZlR5cGUobm9kZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0aGlzLnJlc3Vs
dC5wdXNoKG5ldyBJdGVtKG5vZGUsIHRoaXMuY3VycmVudFNlbWFudGljKSk7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIHZpc2l0QXJyYXlUeXBlKG5vZGUpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgdGhpcy5yZXN1bHQucHVzaChuZXcgSXRlbShub2RlLCB0aGlzLmN1cnJl
bnRTZW1hbnRpYykpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2aXNpdEZ1bmNQYXJh
bWV0ZXIobm9kZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9jdXJyZW50
U2VtYW50aWMgPSBub2RlLnNlbWFudGljOwotICAgICAgICAgICAgICAgIG5vZGUudHlwZS52aXNp
dCh0aGlzKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNoZWNrTWlzc2luZ1NlbWFudGlj
KGlucHV0UGFyYW1ldGVycyk7CisgICAgICAgICAgICBjaGVja01pc3NpbmdTZW1hbnRpYyhvdXRw
dXRQYXJhbWV0ZXJzKTsKICAgICAgICAgfQogCi0gICAgICAgIGxldCBpbnB1dEdhdGhlcmVyID0g
bmV3IEdhdGhlcmVyKCk7Ci0gICAgICAgIGZvciAobGV0IHBhcmFtZXRlciBvZiBub2RlLnBhcmFt
ZXRlcnMpIHsKLSAgICAgICAgICAgIGlucHV0R2F0aGVyZXIucmVzZXQoKTsKLSAgICAgICAgICAg
IHBhcmFtZXRlci52aXNpdChpbnB1dEdhdGhlcmVyKTsKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tT
dHJ1Y3RTZW1hbnRpY3MoaXRlbXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAobGV0IGl0
ZW0gb2YgaXRlbXMpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXRlbS50eXBlIGluc3RhbmNlb2Yg
U3RydWN0VHlwZSAmJiBpdGVtLnNlbWFudGljKQorICAgICAgICAgICAgICAgICAgICB0aHJvdyBu
ZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJBIHN0cnVjdCBoYXMgYSBz
ZW1hbnRpYyIpOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGxldCBvdXRwdXRH
YXRoZXJlciA9IG5ldyBHYXRoZXJlcihub2RlLnNlbWFudGljKTsKLSAgICAgICAgbm9kZS5yZXR1
cm5UeXBlLnZpc2l0KG91dHB1dEdhdGhlcmVyKTsKKyAgICAgICAgY2hlY2tTdHJ1Y3RTZW1hbnRp
Y3MoaW5wdXRQYXJhbWV0ZXJzKTsKKyAgICAgICAgY2hlY2tTdHJ1Y3RTZW1hbnRpY3Mob3V0cHV0
UGFyYW1ldGVycyk7CiAKLSAgICAgICAgZnVuY3Rpb24gY2hlY2tEdXBsaWNhdGVTZW1hbnRpY3Mo
aXRlbXMpIHsKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tEdXBsaWNhdGVTZW1hbnRpY3MoaXRlbXMp
CisgICAgICAgIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgZmFzdGVyIHRoYW4g
TyhuXjIpCiAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgKytp
KSB7CiAgICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgaXRlbXMubGVuZ3Ro
OyArK2opIHsKQEAgLTE3MSwyNiArMTA0LDI5IEBAIGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBWaXNp
dG9yIHsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAg
ICAgY2hlY2tEdXBsaWNhdGVTZW1hbnRpY3MoaW5wdXRHYXRoZXJlci5yZXN1bHQpOwotICAgICAg
ICBjaGVja0R1cGxpY2F0ZVNlbWFudGljcyhvdXRwdXRHYXRoZXJlci5yZXN1bHQpOworICAgICAg
ICBjaGVja0R1cGxpY2F0ZVNlbWFudGljcyhpbnB1dFBhcmFtZXRlcnMpOworICAgICAgICBjaGVj
a0R1cGxpY2F0ZVNlbWFudGljcyhvdXRwdXRQYXJhbWV0ZXJzKTsKIAotICAgICAgICBmdW5jdGlv
biBjaGVja1NlbWFudGljVHlwZXMoaXRlbXMpIHsKKyAgICAgICAgbGV0IHByb2dyYW0gPSB0aGlz
Ll9wcm9ncmFtOworICAgICAgICBmdW5jdGlvbiBjaGVja1NlbWFudGljVHlwZXMoaXRlbXMpCisg
ICAgICAgIHsKICAgICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgaXRlbXMpIHsKICAgICAgICAg
ICAgICAgICBpZiAoaXRlbS5zZW1hbnRpYyAmJiAhaXRlbS5zZW1hbnRpYy5pc0FjY2VwdGFibGVU
eXBlKGl0ZW0udHlwZSwgcHJvZ3JhbSkpCiAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBX
VHlwZUVycm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgYFNlbWFudGljICR7aXRlbS5zZW1h
bnRpY30gaXMgdW5uYWNjZXB0YWJsZSB0eXBlICR7aXRlbS50eXBlfWApOwogICAgICAgICAgICAg
fQogICAgICAgICB9Ci0gICAgICAgIGNoZWNrU2VtYW50aWNUeXBlcyhpbnB1dEdhdGhlcmVyLnJl
c3VsdCk7Ci0gICAgICAgIGNoZWNrU2VtYW50aWNUeXBlcyhvdXRwdXRHYXRoZXJlci5yZXN1bHQp
OworICAgICAgICBjaGVja1NlbWFudGljVHlwZXMoaW5wdXRQYXJhbWV0ZXJzKTsKKyAgICAgICAg
Y2hlY2tTZW1hbnRpY1R5cGVzKG91dHB1dFBhcmFtZXRlcnMpOwogCi0gICAgICAgIGZ1bmN0aW9u
IGNoZWNrU2VtYW50aWNGb3JTaGFkZXJUeXBlKGl0ZW1zLCBkaXJlY3Rpb24pIHsKKyAgICAgICAg
ZnVuY3Rpb24gY2hlY2tTZW1hbnRpY0ZvclNoYWRlclR5cGUoaXRlbXMsIGRpcmVjdGlvbikKKyAg
ICAgICAgewogICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBpdGVtcykgewogICAgICAgICAg
ICAgICAgIGlmIChpdGVtLnNlbWFudGljICYmICFpdGVtLnNlbWFudGljLmlzQWNjZXB0YWJsZUZv
clNoYWRlclR5cGUoZGlyZWN0aW9uLCBub2RlLnNoYWRlclR5cGUpKQogICAgICAgICAgICAgICAg
ICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsIGBTZW1h
bnRpYyAke2l0ZW0uc2VtYW50aWN9IGlzIHVubmFjY2VwdGFibGUgYXMgYW4gJHtkaXJlY3Rpb259
IG9mIHNoYWRlciB0eXBlICR7bm9kZS5zaGFkZXJUeXBlfWApOwogICAgICAgICAgICAgfQogICAg
ICAgICB9Ci0gICAgICAgIGNoZWNrU2VtYW50aWNGb3JTaGFkZXJUeXBlKGlucHV0R2F0aGVyZXIu
cmVzdWx0LCAiaW5wdXQiKTsKLSAgICAgICAgY2hlY2tTZW1hbnRpY0ZvclNoYWRlclR5cGUob3V0
cHV0R2F0aGVyZXIucmVzdWx0LCAib3V0cHV0Iik7CisgICAgICAgIGNoZWNrU2VtYW50aWNGb3JT
aGFkZXJUeXBlKGlucHV0UGFyYW1ldGVycywgImlucHV0Iik7CisgICAgICAgIGNoZWNrU2VtYW50
aWNGb3JTaGFkZXJUeXBlKG91dHB1dFBhcmFtZXRlcnMsICJvdXRwdXQiKTsKIAogICAgICAgICBj
bGFzcyBQT0RDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAgICAgICB2aXNpdEVudW1U
eXBlKG5vZGUpCkBAIC0yNDksOCArMTg1LDggQEAgY2xhc3MgQ2hlY2tlciBleHRlbmRzIFZpc2l0
b3IgewogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAg
ICBjaGVja1BPRERhdGEoaW5wdXRHYXRoZXJlci5yZXN1bHQpOwotICAgICAgICBjaGVja1BPRERh
dGEob3V0cHV0R2F0aGVyZXIucmVzdWx0KTsKKyAgICAgICAgY2hlY2tQT0REYXRhKGlucHV0UGFy
YW1ldGVycyk7CisgICAgICAgIGNoZWNrUE9ERGF0YShvdXRwdXRQYXJhbWV0ZXJzKTsKICAgICB9
CiAKICAgICBfY2hlY2tTaGFkZXJUeXBlKG5vZGUpCkBAIC05MTQsNSArODUwLDExIEBAIGNsYXNz
IENoZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgbGV0IHJlc3VsdCA9IG5vZGUucmVz
b2x2ZShub2RlLnBvc3NpYmxlT3ZlcmxvYWRzLCB0aGlzLl9wcm9ncmFtKTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CisKKyAgICB2aXNpdFF1YWxpZmllcnMobm9kZSkKKyAgICB7Cisg
ICAgICAgIGlmICghbm9kZS5pc1ZhbGlkKQorICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJy
b3Iobm9kZS5vcmlnaW5TdHJpbmcsICJJbmNvbXBhdGlibGUgcXVhbGlmaWVycyBhcmUgc3BlY2lm
aWVkIik7CisgICAgfQogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9FbnRyeVBvaW50UGFyYW1ldGVyR2F0aGVyZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9FbnRyeVBvaW50UGFyYW1ldGVyR2F0aGVyZXIuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQy
YjM0MmFhYTc1YjYwODBlMTlhNTVmNGUyMDY5NTIyMjA0NjNkMgotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0VudHJ5UG9pbnRQYXJhbWV0ZXJHYXRoZXJl
ci5qcwpAQCAtMCwwICsxLDEyNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisidXNlIHN0cmljdCI7CisKK2NsYXNzIEVudHJ5UG9pbnRQYXJhbWV0ZXIgewor
ICAgIGNvbnN0cnVjdG9yKGluZGV4LCB0eXBlLCBzZW1hbnRpYykKKyAgICB7CisgICAgICAgIHRo
aXMuX2luZGV4ID0gaW5kZXg7CisgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlOworICAgICAgICB0
aGlzLl9zZW1hbnRpYyA9IHNlbWFudGljOworICAgIH0KKworICAgIGdldCBpbmRleCgpIHsgcmV0
dXJuIHRoaXMuX2luZGV4OyB9CisgICAgZ2V0IHR5cGUoKSB7IHJldHVybiB0aGlzLl90eXBlOyB9
CisgICAgZ2V0IHNlbWFudGljKCkgeyByZXR1cm4gdGhpcy5fc2VtYW50aWM7IH0KK30KKworY2xh
c3MgRW50cnlQb2ludFBhcmFtZXRlckdhdGhlcmVyIGV4dGVuZHMgVmlzaXRvciB7CisgICAgY29u
c3RydWN0b3IoY3VycmVudFNlbWFudGljID0gbnVsbCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7
CisgICAgICAgIHRoaXMuX2N1cnJlbnRTZW1hbnRpYyA9IGN1cnJlbnRTZW1hbnRpYzsKKyAgICAg
ICAgdGhpcy5fcmVzdWx0ID0gW107CisgICAgICAgIHRoaXMuX2luZGV4ID0gMDsKKyAgICB9CisK
KyAgICByZXNldChpbmRleCkKKyAgICB7CisgICAgICAgIHRoaXMuX2luZGV4ID0gaW5kZXg7Cisg
ICAgICAgIHRoaXMuX2N1cnJlbnRTZW1hbnRpYyA9IG51bGw7CisgICAgfQorICAgIGdldCByZXN1
bHQoKSB7IHJldHVybiB0aGlzLl9yZXN1bHQ7IH0KKworICAgIHZpc2l0RW51bVR5cGUobm9kZSkK
KyAgICB7CisgICAgICAgIHRoaXMucmVzdWx0LnB1c2gobmV3IEVudHJ5UG9pbnRQYXJhbWV0ZXIo
dGhpcy5faW5kZXgsIG5vZGUsIHRoaXMuX2N1cnJlbnRTZW1hbnRpYykpOworICAgIH0KKworICAg
IHZpc2l0VmVjdG9yVHlwZShub2RlKQorICAgIHsKKyAgICAgICAgdGhpcy5yZXN1bHQucHVzaChu
ZXcgRW50cnlQb2ludFBhcmFtZXRlcih0aGlzLl9pbmRleCwgbm9kZSwgdGhpcy5fY3VycmVudFNl
bWFudGljKSk7CisgICAgfQorCisgICAgdmlzaXRNYXRyaXhUeXBlKG5vZGUpCisgICAgeworICAg
ICAgICB0aGlzLnJlc3VsdC5wdXNoKG5ldyBFbnRyeVBvaW50UGFyYW1ldGVyKHRoaXMuX2luZGV4
LCBub2RlLCB0aGlzLl9jdXJyZW50U2VtYW50aWMpKTsKKyAgICB9CisKKyAgICB2aXNpdE5hdGl2
ZVR5cGUobm9kZSkKKyAgICB7CisgICAgICAgIHRoaXMucmVzdWx0LnB1c2gobmV3IEVudHJ5UG9p
bnRQYXJhbWV0ZXIodGhpcy5faW5kZXgsIG5vZGUsIHRoaXMuX2N1cnJlbnRTZW1hbnRpYykpOwor
ICAgIH0KKworICAgIHZpc2l0U3RydWN0VHlwZShub2RlKQorICAgIHsKKyAgICAgICAgaWYgKHRo
aXMuX2N1cnJlbnRTZW1hbnRpYyAhPSBudWxsKQorICAgICAgICAgICAgdGhpcy5yZXN1bHQucHVz
aChuZXcgRW50cnlQb2ludFBhcmFtZXRlcih0aGlzLl9pbmRleCwgbm9kZSwgdGhpcy5fY3VycmVu
dFNlbWFudGljKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZm9yIChsZXQgZmllbGQg
b2Ygbm9kZS5maWVsZHMpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9jdXJyZW50U2VtYW50aWMg
PSBmaWVsZC5zZW1hbnRpYzsKKyAgICAgICAgICAgICAgICBmaWVsZC50eXBlLnZpc2l0KHRoaXMp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgdmlzaXRUeXBlUmVmKG5v
ZGUpCisgICAgeworICAgICAgICBub2RlLnR5cGUudmlzaXQodGhpcyk7CisgICAgfQorCisgICAg
dmlzaXRQdHJUeXBlKG5vZGUpCisgICAgeworICAgICAgICB0aGlzLnJlc3VsdC5wdXNoKG5ldyBF
bnRyeVBvaW50UGFyYW1ldGVyKHRoaXMuX2luZGV4LCBub2RlLCB0aGlzLl9jdXJyZW50U2VtYW50
aWMpKTsKKyAgICB9CisKKyAgICB2aXNpdEFycmF5UmVmVHlwZShub2RlKQorICAgIHsKKyAgICAg
ICAgdGhpcy5yZXN1bHQucHVzaChuZXcgRW50cnlQb2ludFBhcmFtZXRlcih0aGlzLl9pbmRleCwg
bm9kZSwgdGhpcy5fY3VycmVudFNlbWFudGljKSk7CisgICAgfQorCisgICAgdmlzaXRBcnJheVR5
cGUobm9kZSkKKyAgICB7CisgICAgICAgIHRoaXMucmVzdWx0LnB1c2gobmV3IEVudHJ5UG9pbnRQ
YXJhbWV0ZXIodGhpcy5faW5kZXgsIG5vZGUsIHRoaXMuX2N1cnJlbnRTZW1hbnRpYykpOworICAg
IH0KKworICAgIHZpc2l0RnVuY1BhcmFtZXRlcihub2RlKQorICAgIHsKKyAgICAgICAgdGhpcy5f
Y3VycmVudFNlbWFudGljID0gbm9kZS5zZW1hbnRpYzsKKyAgICAgICAgbm9kZS50eXBlLnZpc2l0
KHRoaXMpOworICAgIH0KK30KKworZnVuY3Rpb24gZ2F0aGVyRW50cnlQb2ludFBhcmFtZXRlcnMo
ZW50cnlQb2ludCkKK3sKKyAgICBsZXQgaW5wdXRHYXRoZXJlciA9IG5ldyBFbnRyeVBvaW50UGFy
YW1ldGVyR2F0aGVyZXIoKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVudHJ5UG9pbnQucGFy
YW1ldGVycy5sZW5ndGg7ICsraSkgeworICAgICAgICBpbnB1dEdhdGhlcmVyLnJlc2V0KGkpOwor
ICAgICAgICBlbnRyeVBvaW50LnBhcmFtZXRlcnNbaV0udmlzaXQoaW5wdXRHYXRoZXJlcik7Cisg
ICAgfQorICAgIGxldCBvdXRwdXRHYXRoZXJlciA9IG5ldyBFbnRyeVBvaW50UGFyYW1ldGVyR2F0
aGVyZXIoZW50cnlQb2ludC5zZW1hbnRpYyk7CisgICAgZW50cnlQb2ludC5yZXR1cm5UeXBlLnZp
c2l0KG91dHB1dEdhdGhlcmVyKTsKKyAgICByZXR1cm4gW2lucHV0R2F0aGVyZXIucmVzdWx0LCBv
dXRwdXRHYXRoZXJlci5yZXN1bHRdOworfQorCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9GaWVsZC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Zp
ZWxkLmpzCmluZGV4IDMxMmIwMGQ5ZTI4Y2IzZTMzNmFlMDlmYzM5NmZkODljMTYwYWIwYTkuLmMw
Zjg2MWZlMmFmMjcyODNjOWIzNmQ5NTMzOThjOThmNWU4ZjBiM2UgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ZpZWxkLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL0ZpZWxkLmpzCkBAIC0yNSwyMyArMjUsMjggQEAKICJ1c2Ugc3RyaWN0IjsK
IAogY2xhc3MgRmllbGQgZXh0ZW5kcyBOb2RlIHsKLSAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5h
bWUsIHR5cGUsIHNlbWFudGljID0gbnVsbCkKKyAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUs
IHR5cGUsIHF1YWxpZmllcnMgPSBudWxsLCBzZW1hbnRpYyA9IG51bGwpCiAgICAgewogICAgICAg
ICBzdXBlcigpOwogICAgICAgICB0aGlzLl9vcmlnaW4gPSBvcmlnaW47CiAgICAgICAgIHRoaXMu
X25hbWUgPSBuYW1lOwogICAgICAgICB0aGlzLl90eXBlID0gdHlwZTsKKyAgICAgICAgdGhpcy5f
cXVhbGlmaWVycyA9IHF1YWxpZmllcnM7CiAgICAgICAgIHRoaXMuX3NlbWFudGljID0gc2VtYW50
aWM7CiAgICAgfQogICAgIAogICAgIGdldCBvcmlnaW4oKSB7IHJldHVybiB0aGlzLl9vcmlnaW47
IH0KICAgICBnZXQgbmFtZSgpIHsgcmV0dXJuIHRoaXMuX25hbWU7IH0KICAgICBnZXQgdHlwZSgp
IHsgcmV0dXJuIHRoaXMuX3R5cGU7IH0KKyAgICBnZXQgcXVhbGlmaWVycygpIHsgcmV0dXJuIHRo
aXMuX3F1YWxpZmllcnM7IH0KICAgICBnZXQgc2VtYW50aWMoKSB7IHJldHVybiB0aGlzLl9zZW1h
bnRpYzsgfQogICAgIAogICAgIHRvU3RyaW5nKCkKICAgICB7Ci0gICAgICAgIGxldCByZXN1bHQg
PSB0aGlzLnR5cGUgKyAiICIgKyB0aGlzLm5hbWU7CisgICAgICAgIGxldCByZXN1bHQgPSAiIjsK
KyAgICAgICAgaWYgKHRoaXMucXVhbGlmaWVycyAmJiB0aGlzLnF1YWxpZmllcnMubGVuZ3RoID4g
MCkKKyAgICAgICAgICAgIHJlc3VsdCArPSB0aGlzLnF1YWxpZmllcnMgKyAiICI7CisgICAgICAg
IHJlc3VsdCArPSBgJHt0aGlzLnR5cGV9ICR7dGhpcy5uYW1lfWA7CiAgICAgICAgIGlmICh0aGlz
LnNlbWFudGljKQogICAgICAgICAgICAgcmVzdWx0ICs9ICI6ICIgKyB0aGlzLnNlbWFudGljOwog
ICAgICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvRnVuY1BhcmFtZXRlci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0Z1bmNQYXJhbWV0ZXIuanMKaW5kZXggMDVjZGI1MmZkZTM5MGRiMjUwZWM2YzI2YmM2N2U5ZjUw
YjFmMWY0Ny4uYjJjZmI1YTAwOWU2NDY2NGEwMjBmNzAwNzllZDNhNjYwYjJiNDRmNiAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuY1BhcmFtZXRlci5qcworKysg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GdW5jUGFyYW1ldGVyLmpzCkBAIC0yNiwy
OCArMjYsMzQgQEAKIAogY2xhc3MgRnVuY1BhcmFtZXRlciBleHRlbmRzIFZhbHVlIHsKICAgICAv
LyBUaGUgbmFtZSBpcyBvcHRpb25hbC4gSXQncyBPSyBmb3IgaXQgdG8gYmUgbnVsbCEKLSAgICBj
b25zdHJ1Y3RvcihvcmlnaW4sIG5hbWUsIHR5cGUsIHNlbWFudGljID0gbnVsbCkKKyAgICBjb25z
dHJ1Y3RvcihvcmlnaW4sIG5hbWUsIHR5cGUsIHF1YWxpZmllcnMgPSBudWxsLCB1bmlmb3JtaXR5
ID0gbnVsbCwgc2VtYW50aWMgPSBudWxsKQogICAgIHsKICAgICAgICAgc3VwZXIoKTsKICAgICAg
ICAgdGhpcy5fb3JpZ2luID0gb3JpZ2luOwogICAgICAgICB0aGlzLl9uYW1lID0gbmFtZTsKICAg
ICAgICAgdGhpcy5fdHlwZSA9IHR5cGU7CisgICAgICAgIHRoaXMuX3F1YWxpZmllcnMgPSBxdWFs
aWZpZXJzOworICAgICAgICB0aGlzLl91bmlmb3JtaXR5ID0gdW5pZm9ybWl0eTsKICAgICAgICAg
dGhpcy5fc2VtYW50aWMgPSBzZW1hbnRpYzsKICAgICB9CiAgICAgCiAgICAgZ2V0IG9yaWdpbigp
IHsgcmV0dXJuIHRoaXMuX29yaWdpbjsgfQogICAgIGdldCBuYW1lKCkgeyByZXR1cm4gdGhpcy5f
bmFtZTsgfQogICAgIGdldCB0eXBlKCkgeyByZXR1cm4gdGhpcy5fdHlwZTsgfQorICAgIGdldCBx
dWFsaWZpZXJzKCkgeyByZXR1cm4gdGhpcy5fcXVhbGlmaWVyczsgfQorICAgIGdldCB1bmlmb3Jt
aXR5KCkgeyByZXR1cm4gdGhpcy5fdW5pZm9ybWl0eTsgfQogICAgIGdldCBzZW1hbnRpYygpIHsg
cmV0dXJuIHRoaXMuX3NlbWFudGljOyB9CiAgICAgZ2V0IHZhcklzTFZhbHVlKCkgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIAogICAgIHRvU3RyaW5nKCkKICAgICB7Ci0gICAgICAgIGxldCByZXN1bHQ7
CisgICAgICAgIGxldCByZXN1bHQgPSAiIjsKKyAgICAgICAgaWYgKHRoaXMucXVhbGlmaWVycyAm
JiB0aGlzLnF1YWxpZmllcnMubGVuZ3RoID4gMCkKKyAgICAgICAgICAgIHJlc3VsdCArPSB0aGlz
LnF1YWxpZmllcnMgKyAiICI7CiAgICAgICAgIGlmICghdGhpcy5uYW1lKQotICAgICAgICAgICAg
cmVzdWx0ID0gIiIgKyB0aGlzLnR5cGU7CisgICAgICAgICAgICByZXN1bHQgKz0gIiIgKyB0aGlz
LnR5cGU7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMudHlwZSArICIg
IiArIHRoaXMubmFtZTsKKyAgICAgICAgICAgIHJlc3VsdCArPSB0aGlzLnR5cGUgKyAiICIgKyB0
aGlzLm5hbWU7CiAgICAgICAgIGlmICh0aGlzLnNlbWFudGljKQogICAgICAgICAgICAgcmVzdWx0
ICs9ICI6ICIgKyB0aGlzLnNlbWFudGljOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTWV0YWwvV0hMU0wgVGVzdHMvV0hM
U0wgVGVzdHMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL01ldGFsL1dITFNMIFRlc3RzL1dITFNMIFRlc3RzLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggOWVmOGFlMDE1YTgxZWQ5YTY1YjBjOTU1MzVhYTNmMGQyOGNjOWViNy4u
OGM1ZTBjMzU1ZGQxMTBmMzg2ZDBmMzFmYTEzMjBiMDM0Y2Q1NjZiYyAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTWV0YWwvV0hMU0wgVGVzdHMvV0hMU0wgVGVzdHMu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvTWV0YWwvV0hMU0wgVGVzdHMvV0hMU0wgVGVzdHMueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkKQEAgLTcsNiArNywxNyBAQAogCW9iamVjdHMgPSB7CiAKIC8qIEJlZ2luIFBCWEJ1aWxk
RmlsZSBzZWN0aW9uICovCisJCTFDNTFGRjA4MjE2NkM2QTMwMDEyOEJCMSAvKiBSZXNvdXJjZVNl
bWFudGljLmpzIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQzUxRkVGRjIxNjZDNkEyMDAxMjhCQjEgLyogUmVzb3VyY2VTZW1hbnRpYy5qcyAqLzsgfTsK
KwkJMUM1MUZGMDkyMTY2QzZBMzAwMTI4QkIxIC8qIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1h
bnRpYy5qcyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUM1MUZGMDAyMTY2QzZBMjAwMTI4QkIxIC8qIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRp
Yy5qcyAqLzsgfTsKKwkJMUM1MUZGMEEyMTY2QzZBMzAwMTI4QkIxIC8qIEZ1bmNBdHRyaWJ1dGUu
anMgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNTFG
RjAxMjE2NkM2QTIwMDEyOEJCMSAvKiBGdW5jQXR0cmlidXRlLmpzICovOyB9OworCQkxQzUxRkYw
QjIxNjZDNkEzMDAxMjhCQjEgLyogQ2hlY2tOYXRpdmVGdW5jU3RhZ2VzLmpzIGluIFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzUxRkYwMjIxNjZDNkEyMDAx
MjhCQjEgLyogQ2hlY2tOYXRpdmVGdW5jU3RhZ2VzLmpzICovOyB9OworCQkxQzUxRkYwQzIxNjZD
NkEzMDAxMjhCQjEgLyogUXVhbGlmaWVycy5qcyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1MUZGMDMyMTY2QzZBMjAwMTI4QkIxIC8qIFF1YWxpZmll
cnMuanMgKi87IH07CisJCTFDNTFGRjBEMjE2NkM2QTMwMDEyOEJCMSAvKiBTZW1hbnRpYy5qcyBp
biBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1MUZGMDQy
MTY2QzZBMjAwMTI4QkIxIC8qIFNlbWFudGljLmpzICovOyB9OworCQkxQzUxRkYwRTIxNjZDNkEz
MDAxMjhCQjEgLyogQnVpbHRJblNlbWFudGljLmpzIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzUxRkYwNTIxNjZDNkEyMDAxMjhCQjEgLyogQnVpbHRJ
blNlbWFudGljLmpzICovOyB9OworCQkxQzUxRkYwRjIxNjZDNkEzMDAxMjhCQjEgLyogRnVuY051
bVRocmVhZHNBdHRyaWJ1dGUuanMgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFDNTFGRjA2MjE2NkM2QTIwMDEyOEJCMSAvKiBGdW5jTnVtVGhyZWFkc0F0
dHJpYnV0ZS5qcyAqLzsgfTsKKwkJMUM1MUZGMTAyMTY2QzZBMzAwMTI4QkIxIC8qIFN0YWdlSW5P
dXRTZW1hbnRpYy5qcyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUM1MUZGMDcyMTY2QzZBMjAwMTI4QkIxIC8qIFN0YWdlSW5PdXRTZW1hbnRpYy5qcyAq
LzsgfTsKKwkJMUM1MUZGMTYyMTY4MTdCOTAwMTI4QkIxIC8qIFVuaWZvcm1pdHlDaGVja2VyLmpz
IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzUxRkYx
NTIxNjgxN0I4MDAxMjhCQjEgLyogVW5pZm9ybWl0eUNoZWNrZXIuanMgKi87IH07CisJCUMyQjk4
MjBBMjE2QzFDQ0EwMDFBRDhBNyAvKiBFbnRyeVBvaW50UGFyYW1ldGVyR2F0aGVyZXIuanMgaW4g
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQjk4MjA5MjE2
QzFDQzkwMDFBRDhBNyAvKiBFbnRyeVBvaW50UGFyYW1ldGVyR2F0aGVyZXIuanMgKi87IH07CiAJ
CUU5MDZCMDQ2MjExMzlCNzcwMEFEMUM1RSAvKiBKdWxpYS53aGxzbCBpbiBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTkwNkIwNDUyMTEzOUI3NzAwQUQxQzVF
IC8qIEp1bGlhLndobHNsICovOyB9OwogCQlFOTIxRDYzNjIxMzhDMDI2MDA3NzUwOTkgLyogT3Bl
cmF0b3JBbmRlckluZGV4ZXIuanMgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEU5MjFENjMyMjEzOEMwMjYwMDc3NTA5OSAvKiBPcGVyYXRvckFuZGVySW5k
ZXhlci5qcyAqLzsgfTsKIAkJRTkyMUQ2MzcyMTM4QzAyNjAwNzc1MDk5IC8qIE1hdHJpeFR5cGUu
anMgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU5MjFE
NjMzMjEzOEMwMjYwMDc3NTA5OSAvKiBNYXRyaXhUeXBlLmpzICovOyB9OwpAQCAtMjEwLDYgKzIy
MSwxNyBAQAogLyogRW5kIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCiAKIC8qIEJl
Z2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCQkxQzUxRkVGRjIxNjZDNkEyMDAxMjhC
QjEgLyogUmVzb3VyY2VTZW1hbnRpYy5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlw
dDsgbmFtZSA9IFJlc291cmNlU2VtYW50aWMuanM7IHBhdGggPSAuLi8uLi8uLi9SZXNvdXJjZVNl
bWFudGljLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUxRkYwMDIxNjZDNkEy
MDAxMjhCQjEgLyogU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmpzICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0gU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFu
dGljLmpzOyBwYXRoID0gLi4vLi4vLi4vU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmpz
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUxRkYwMTIxNjZDNkEyMDAxMjhCQjEg
LyogRnVuY0F0dHJpYnV0ZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgbmFt
ZSA9IEZ1bmNBdHRyaWJ1dGUuanM7IHBhdGggPSAuLi8uLi8uLi9GdW5jQXR0cmlidXRlLmpzOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUxRkYwMjIxNjZDNkEyMDAxMjhCQjEgLyog
Q2hlY2tOYXRpdmVGdW5jU3RhZ2VzLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0
OyBuYW1lID0gQ2hlY2tOYXRpdmVGdW5jU3RhZ2VzLmpzOyBwYXRoID0gLi4vLi4vLi4vQ2hlY2tO
YXRpdmVGdW5jU3RhZ2VzLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUxRkYw
MzIxNjZDNkEyMDAxMjhCQjEgLyogUXVhbGlmaWVycy5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
amF2YXNjcmlwdDsgbmFtZSA9IFF1YWxpZmllcnMuanM7IHBhdGggPSAuLi8uLi8uLi9RdWFsaWZp
ZXJzLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUxRkYwNDIxNjZDNkEyMDAx
MjhCQjEgLyogU2VtYW50aWMuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5h
bWUgPSBTZW1hbnRpYy5qczsgcGF0aCA9IC4uLy4uLy4uL1NlbWFudGljLmpzOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQzUxRkYwNTIxNjZDNkEyMDAxMjhCQjEgLyogQnVpbHRJblNl
bWFudGljLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0gQnVpbHRJ
blNlbWFudGljLmpzOyBwYXRoID0gLi4vLi4vLi4vQnVpbHRJblNlbWFudGljLmpzOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxQzUxRkYwNjIxNjZDNkEyMDAxMjhCQjEgLyogRnVuY051
bVRocmVhZHNBdHRyaWJ1dGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5h
bWUgPSBGdW5jTnVtVGhyZWFkc0F0dHJpYnV0ZS5qczsgcGF0aCA9IC4uLy4uLy4uL0Z1bmNOdW1U
aHJlYWRzQXR0cmlidXRlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUxRkYw
NzIxNjZDNkEyMDAxMjhCQjEgLyogU3RhZ2VJbk91dFNlbWFudGljLmpzICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0gU3RhZ2VJbk91dFNlbWFudGljLmpzOyBwYXRoID0g
Li4vLi4vLi4vU3RhZ2VJbk91dFNlbWFudGljLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxQzUxRkYxNTIxNjgxN0I4MDAxMjhCQjEgLyogVW5pZm9ybWl0eUNoZWNrZXIuanMgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUgPSBVbmlmb3JtaXR5Q2hlY2tlci5q
czsgcGF0aCA9IC4uLy4uLy4uL1VuaWZvcm1pdHlDaGVja2VyLmpzOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDMkI5ODIwOTIxNkMxQ0M5MDAxQUQ4QTcgLyogRW50cnlQb2ludFBhcmFt
ZXRlckdhdGhlcmVyLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0g
RW50cnlQb2ludFBhcmFtZXRlckdhdGhlcmVyLmpzOyBwYXRoID0gLi4vLi4vLi4vRW50cnlQb2lu
dFBhcmFtZXRlckdhdGhlcmVyLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFOTA2
QjA0NTIxMTM5Qjc3MDBBRDFDNUUgLyogSnVsaWEud2hsc2wgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gSnVsaWEud2hsc2w7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU5MjFENjMyMjEz
OEMwMjYwMDc3NTA5OSAvKiBPcGVyYXRvckFuZGVySW5kZXhlci5qcyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuamF2YXNjcmlwdDsgbmFtZSA9IE9wZXJhdG9yQW5kZXJJbmRleGVyLmpzOyBwYXRoID0g
Li4vLi4vLi4vT3BlcmF0b3JBbmRlckluZGV4ZXIuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUU5MjFENjMzMjEzOEMwMjYwMDc3NTA5OSAvKiBNYXRyaXhUeXBlLmpzICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0gTWF0cml4VHlwZS5qczsgcGF0aCA9IC4u
Ly4uLy4uL01hdHJpeFR5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01Njgs
NiArNTkwLDcgQEAKIAkJCQlFOTU1NjlCMDIwRjU2Q0Q2MDBGNUNGMzQgLyogQnJlYWsuanMgKi8s
CiAJCQkJRTkyMUQ2MzQyMTM4QzAyNjAwNzc1MDk5IC8qIEJ1aWx0aW5NYXRyaXhHZXR0ZXIuanMg
Ki8sCiAJCQkJRTkyMUQ2MzUyMTM4QzAyNjAwNzc1MDk5IC8qIEJ1aWx0aW5NYXRyaXhTZXR0ZXIu
anMgKi8sCisJCQkJMUM1MUZGMDUyMTY2QzZBMjAwMTI4QkIxIC8qIEJ1aWx0SW5TZW1hbnRpYy5q
cyAqLywKIAkJCQlFOTQxQUNCOTIxMzRBNUJCMDAzOTJCQTkgLyogQnVpbHRpblZlY3RvckdldHRl
ci5qcyAqLywKIAkJCQlFOTQxQUNCQzIxMzRBNUJCMDAzOTJCQTkgLyogQnVpbHRpblZlY3RvclNl
dHRlci5qcyAqLywKIAkJCQlFOTU1NjlCRjIwRjU2Q0Q3MDBGNUNGMzQgLyogQ2FsbEV4cHJlc3Np
b24uanMgKi8sCkBAIC01NzcsNiArNjAwLDcgQEAKIAkJCQlFOTU1NjlDMTIwRjU2Q0Q3MDBGNUNG
MzQgLyogQ2hlY2tlci5qcyAqLywKIAkJCQlFOTU1NjlCNjIwRjU2Q0Q2MDBGNUNGMzQgLyogQ2hl
Y2tMaXRlcmFsVHlwZXMuanMgKi8sCiAJCQkJRTk1NTY5QjMyMEY1NkNENjAwRjVDRjM0IC8qIENo
ZWNrTG9vcHMuanMgKi8sCisJCQkJMUM1MUZGMDIyMTY2QzZBMjAwMTI4QkIxIC8qIENoZWNrTmF0
aXZlRnVuY1N0YWdlcy5qcyAqLywKIAkJCQlFOTRDMDZGQTIwRjU2Q0EzMDA2NzI5OTIgLyogQ2hl
Y2tSZWN1cnNpb24uanMgKi8sCiAJCQkJRTk1NTY5QkIyMEY1NkNENjAwRjVDRjM0IC8qIENoZWNr
UmVjdXJzaXZlVHlwZXMuanMgKi8sCiAJCQkJRTk1NTY5QjIyMEY1NkNENjAwRjVDRjM0IC8qIENo
ZWNrUmV0dXJucy5qcyAqLywKQEAgLTU5Niw2ICs2MjAsNyBAQAogCQkJCUU5QUQwNzQ5MjBGNTZE
NUEwMDdGMjQ2NiAvKiBFQXJyYXlSZWYuanMgKi8sCiAJCQkJRTlBRDA3NDgyMEY1NkQ1QTAwN0Yy
NDY2IC8qIEVCdWZmZXIuanMgKi8sCiAJCQkJRTlBRDA3NEEyMEY1NkQ1QjAwN0YyNDY2IC8qIEVC
dWZmZXJCdWlsZGVyLmpzICovLAorCQkJCUMyQjk4MjA5MjE2QzFDQzkwMDFBRDhBNyAvKiBFbnRy
eVBvaW50UGFyYW1ldGVyR2F0aGVyZXIuanMgKi8sCiAJCQkJRTk0QzA2RkQyMEY1NkNBMzAwNjcy
OTkyIC8qIEVudW1MaXRlcmFsLmpzICovLAogCQkJCUU5QUQwNzU1MjBGNTZENjkwMDdGMjQ2NiAv
KiBFbnVtTWVtYmVyLmpzICovLAogCQkJCUU5QUQwNzVBMjBGNTZENjkwMDdGMjQ2NiAvKiBFbnVt
VHlwZS5qcyAqLywKQEAgLTYxMyw3ICs2MzgsOSBAQAogCQkJCUU5NTU2OUVCMjBGNTZEMDUwMEY1
Q0YzNCAvKiBGb2xkQ29uc3RleHBycy5qcyAqLywKIAkJCQlFOUZDRUI1QTIwRjU2RDkzMDA5QjM2
MjkgLyogRm9yTG9vcC5qcyAqLywKIAkJCQlFOUZDRUI1NTIwRjU2RDkyMDA5QjM2MjkgLyogRnVu
Yy5qcyAqLywKKwkJCQkxQzUxRkYwMTIxNjZDNkEyMDAxMjhCQjEgLyogRnVuY0F0dHJpYnV0ZS5q
cyAqLywKIAkJCQlFOTU1NjlFODIwRjU2RDA1MDBGNUNGMzQgLyogRnVuY0RlZi5qcyAqLywKKwkJ
CQkxQzUxRkYwNjIxNjZDNkEyMDAxMjhCQjEgLyogRnVuY051bVRocmVhZHNBdHRyaWJ1dGUuanMg
Ki8sCiAJCQkJRTk1NTY5RTkyMEY1NkQwNTAwRjVDRjM0IC8qIEZ1bmNQYXJhbWV0ZXIuanMgKi8s
CiAJCQkJRTk1NTY5RTYyMEY1NkQwNTAwRjVDRjM0IC8qIEZ1bmN0aW9uTGlrZUJsb2NrLmpzICov
LAogCQkJCUU5NEMwNkZCMjBGNTZDQTMwMDY3Mjk5MiAvKiBIaWdoWm9tYmllRmluZGVyLmpzICov
LApAQCAtNjY5LDYgKzY5Niw3IEBACiAJCQkJRTkyRDEwMjMyMEY1NkUyRjAwRDc3NkIyIC8qIFBy
b3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5qcyAqLywKIAkJCQlFOTJEMTAyMDIwRjU2RTJGMDBENzc2
QjIgLyogUHJvcGVydHlSZXNvbHZlci5qcyAqLywKIAkJCQlFOTJEMTAyQjIwRjU2RTNGMDBENzc2
QjIgLyogUHRyVHlwZS5qcyAqLywKKwkJCQkxQzUxRkYwMzIxNjZDNkEyMDAxMjhCQjEgLyogUXVh
bGlmaWVycy5qcyAqLywKIAkJCQlFOTJEMTAyQTIwRjU2RTNGMDBENzc2QjIgLyogUmVhZE1vZGlm
eVdyaXRlRXhwcmVzc2lvbi5qcyAqLywKIAkJCQlFOTJEMTAyQzIwRjU2RTNGMDBENzc2QjIgLyog
UmVjdXJzaW9uQ2hlY2tlci5qcyAqLywKIAkJCQlFOTJEMTAyRTIwRjU2RTQwMDBENzc2QjIgLyog
UmVjdXJzaXZlVHlwZUNoZWNrZXIuanMgKi8sCkBAIC02NzcsMTEgKzcwNSwxNSBAQAogCQkJCUU5
MkQxMDM4MjBGNTZFNEYwMEQ3NzZCMiAvKiBSZXNvbHZlT3ZlcmxvYWRJbXBsLmpzICovLAogCQkJ
CUU5MkQxMDM2MjBGNTZFNEYwMEQ3NzZCMiAvKiBSZXNvbHZlUHJvcGVydGllcy5qcyAqLywKIAkJ
CQlFOTJEMTAzNzIwRjU2RTRGMDBENzc2QjIgLyogUmVzb2x2ZVR5cGVEZWZzLmpzICovLAorCQkJ
CTFDNTFGRUZGMjE2NkM2QTIwMDEyOEJCMSAvKiBSZXNvdXJjZVNlbWFudGljLmpzICovLAogCQkJ
CUU5MkQxMDNFMjBGNTZFNjEwMEQ3NzZCMiAvKiBSZXR1cm4uanMgKi8sCiAJCQkJRTkyRDEwNDAy
MEY1NkU2MjAwRDc3NkIyIC8qIFJldHVybkNoZWNrZXIuanMgKi8sCiAJCQkJRTkyRDEwNDIyMEY1
NkU2MjAwRDc3NkIyIC8qIFJldHVybkV4Y2VwdGlvbi5qcyAqLywKIAkJCQlFOTJEMTA0MTIwRjU2
RTYyMDBENzc2QjIgLyogUmV3cml0ZXIuanMgKi8sCiAJCQkJRTlEN0NCOUQyMTRCODJCODAwRjFD
OTE4IC8qIFNhbXBsZXIuanMgKi8sCisJCQkJMUM1MUZGMDQyMTY2QzZBMjAwMTI4QkIxIC8qIFNl
bWFudGljLmpzICovLAorCQkJCTFDNTFGRjAwMjE2NkM2QTIwMDEyOEJCMSAvKiBTcGVjaWFsaXph
dGlvbkNvbnN0YW50U2VtYW50aWMuanMgKi8sCisJCQkJMUM1MUZGMDcyMTY2QzZBMjAwMTI4QkIx
IC8qIFN0YWdlSW5PdXRTZW1hbnRpYy5qcyAqLywKIAkJCQlFOTJEMTAzRjIwRjU2RTYyMDBENzc2
QjIgLyogU3RhbmRhcmRMaWJyYXJ5LmpzICovLAogCQkJCUU5MkQxMDQ4MjBGNTZFNzMwMEQ3NzZC
MiAvKiBTdGF0ZW1lbnRDbG9uZXIuanMgKi8sCiAJCQkJRTkyRDEwNDkyMEY1NkU3MzAwRDc3NkIy
IC8qIFN0cnVjdExheW91dEJ1aWxkZXIuanMgKi8sCkBAIC03MDgsNiArNzQwLDcgQEAKIAkJCQlF
OTJEMTA2ODIwRjU2RUE0MDBENzc2QjIgLyogVWludExpdGVyYWwuanMgKi8sCiAJCQkJRTkyRDEw
NjcyMEY1NkVBNDAwRDc3NkIyIC8qIFVpbnRMaXRlcmFsVHlwZS5qcyAqLywKIAkJCQlFOTJEMTA3
MjIwRjU2RUJCMDBENzc2QjIgLyogVW5pZmljYXRpb25Db250ZXh0LmpzICovLAorCQkJCTFDNTFG
RjE1MjE2ODE3QjgwMDEyOEJCMSAvKiBVbmlmb3JtaXR5Q2hlY2tlci5qcyAqLywKIAkJCQlFOTJE
MTA3MzIwRjU2RUJDMDBENzc2QjIgLyogVW5yZWFjaGFibGVDb2RlQ2hlY2tlci5qcyAqLywKIAkJ
CQlFOTJEMTA3NDIwRjU2RUJDMDBENzc2QjIgLyogVmFsdWUuanMgKi8sCiAJCQkJRTkyRDEwNzAy
MEY1NkVCQjAwRDc3NkIyIC8qIFZhcmlhYmxlRGVjbC5qcyAqLywKQEAgLTgyMiw2ICs4NTUsNyBA
QAogCQkJCUU5MkQxMTFGMjBGNzA2MEUwMEQ3NzZCMiAvKiBCcmVhay5qcyBpbiBSZXNvdXJjZXMg
Ki8sCiAJCQkJRTkyMUQ2MzgyMTM4QzAyNjAwNzc1MDk5IC8qIEJ1aWx0aW5NYXRyaXhHZXR0ZXIu
anMgaW4gUmVzb3VyY2VzICovLAogCQkJCUU5MjFENjM5MjEzOEMwMjYwMDc3NTA5OSAvKiBCdWls
dGluTWF0cml4U2V0dGVyLmpzIGluIFJlc291cmNlcyAqLywKKwkJCQkxQzUxRkYwRTIxNjZDNkEz
MDAxMjhCQjEgLyogQnVpbHRJblNlbWFudGljLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTQx
QUNDQTIxMzRBNUJDMDAzOTJCQTkgLyogQnVpbHRpblZlY3RvckdldHRlci5qcyBpbiBSZXNvdXJj
ZXMgKi8sCiAJCQkJRTk0MUFDQ0QyMTM0QTVCQzAwMzkyQkE5IC8qIEJ1aWx0aW5WZWN0b3JTZXR0
ZXIuanMgaW4gUmVzb3VyY2VzICovLAogCQkJCUU5MkQxMTIwMjBGNzA2MEUwMEQ3NzZCMiAvKiBD
YWxsRXhwcmVzc2lvbi5qcyBpbiBSZXNvdXJjZXMgKi8sCkBAIC04MzEsNiArODY1LDcgQEAKIAkJ
CQlFOTJEMTEyMzIwRjcwNjBFMDBENzc2QjIgLyogQ2hlY2tlci5qcyBpbiBSZXNvdXJjZXMgKi8s
CiAJCQkJRTkyRDExMjQyMEY3MDYwRTAwRDc3NkIyIC8qIENoZWNrTGl0ZXJhbFR5cGVzLmpzIGlu
IFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTEyNTIwRjcwNjBFMDBENzc2QjIgLyogQ2hlY2tMb29w
cy5qcyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJMUM1MUZGMEIyMTY2QzZBMzAwMTI4QkIxIC8qIENo
ZWNrTmF0aXZlRnVuY1N0YWdlcy5qcyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJRTkyRDExMjYyMEY3
MDYwRTAwRDc3NkIyIC8qIENoZWNrUmVjdXJzaW9uLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlF
OTJEMTEyNzIwRjcwNjBFMDBENzc2QjIgLyogQ2hlY2tSZWN1cnNpdmVUeXBlcy5qcyBpbiBSZXNv
dXJjZXMgKi8sCiAJCQkJRTkyRDExMjgyMEY3MDYwRTAwRDc3NkIyIC8qIENoZWNrUmV0dXJucy5q
cyBpbiBSZXNvdXJjZXMgKi8sCkBAIC04NTEsNiArODg2LDcgQEAKIAkJCQlFOTJEMTEzOTIwRjcw
NjBFMDBENzc2QjIgLyogRUFycmF5UmVmLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTEz
QTIwRjcwNjBFMDBENzc2QjIgLyogRUJ1ZmZlci5qcyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJRTky
RDExM0IyMEY3MDYwRTAwRDc3NkIyIC8qIEVCdWZmZXJCdWlsZGVyLmpzIGluIFJlc291cmNlcyAq
LywKKwkJCQlDMkI5ODIwQTIxNkMxQ0NBMDAxQUQ4QTcgLyogRW50cnlQb2ludFBhcmFtZXRlckdh
dGhlcmVyLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTEzQzIwRjcwNjBFMDBENzc2QjIg
LyogRW51bUxpdGVyYWwuanMgaW4gUmVzb3VyY2VzICovLAogCQkJCUU5MkQxMTNEMjBGNzA2MEUw
MEQ3NzZCMiAvKiBFbnVtTWVtYmVyLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTEzRTIw
RjcwNjBFMDBENzc2QjIgLyogRW51bVR5cGUuanMgaW4gUmVzb3VyY2VzICovLApAQCAtODY4LDcg
KzkwNCw5IEBACiAJCQkJRTkyRDExNEIyMEY3MDYwRTAwRDc3NkIyIC8qIEZvbGRDb25zdGV4cHJz
LmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTE0QzIwRjcwNjBFMDBENzc2QjIgLyogRm9y
TG9vcC5qcyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJRTkyRDExNEQyMEY3MDYwRTAwRDc3NkIyIC8q
IEZ1bmMuanMgaW4gUmVzb3VyY2VzICovLAorCQkJCTFDNTFGRjBBMjE2NkM2QTMwMDEyOEJCMSAv
KiBGdW5jQXR0cmlidXRlLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTE0RTIwRjcwNjBF
MDBENzc2QjIgLyogRnVuY0RlZi5qcyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJMUM1MUZGMEYyMTY2
QzZBMzAwMTI4QkIxIC8qIEZ1bmNOdW1UaHJlYWRzQXR0cmlidXRlLmpzIGluIFJlc291cmNlcyAq
LywKIAkJCQlFOTJEMTE1MDIwRjcwNjBFMDBENzc2QjIgLyogRnVuY1BhcmFtZXRlci5qcyBpbiBS
ZXNvdXJjZXMgKi8sCiAJCQkJRTkyRDExNTEyMEY3MDYwRTAwRDc3NkIyIC8qIEZ1bmN0aW9uTGlr
ZUJsb2NrLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTE1MjIwRjcwNjBFMDBENzc2QjIg
LyogSGlnaFpvbWJpZUZpbmRlci5qcyBpbiBSZXNvdXJjZXMgKi8sCkBAIC05MjcsNiArOTY1LDcg
QEAKIAkJCQlFOTJEMTE3NzIwRjcwNjBFMDBENzc2QjIgLyogUHJvcGVydHlBY2Nlc3NFeHByZXNz
aW9uLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTE3ODIwRjcwNjBFMDBENzc2QjIgLyog
UHJvcGVydHlSZXNvbHZlci5qcyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJRTkyRDExN0QyMEY3MDYw
RTAwRDc3NkIyIC8qIFB0clR5cGUuanMgaW4gUmVzb3VyY2VzICovLAorCQkJCTFDNTFGRjBDMjE2
NkM2QTMwMDEyOEJCMSAvKiBRdWFsaWZpZXJzLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJE
MTE3RTIwRjcwNjBFMDBENzc2QjIgLyogUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5qcyBpbiBS
ZXNvdXJjZXMgKi8sCiAJCQkJRTkyRDExN0YyMEY3MDYwRTAwRDc3NkIyIC8qIFJlY3Vyc2lvbkNo
ZWNrZXIuanMgaW4gUmVzb3VyY2VzICovLAogCQkJCUU5MkQxMTgwMjBGNzA2MEUwMEQ3NzZCMiAv
KiBSZWN1cnNpdmVUeXBlQ2hlY2tlci5qcyBpbiBSZXNvdXJjZXMgKi8sCkBAIC05MzUsMTEgKzk3
NCwxNSBAQAogCQkJCUU5MkQxMTgzMjBGNzA2MEUwMEQ3NzZCMiAvKiBSZXNvbHZlT3ZlcmxvYWRJ
bXBsLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTE4NDIwRjcwNjBFMDBENzc2QjIgLyog
UmVzb2x2ZVByb3BlcnRpZXMuanMgaW4gUmVzb3VyY2VzICovLAogCQkJCUU5MkQxMTg1MjBGNzA2
MEUwMEQ3NzZCMiAvKiBSZXNvbHZlVHlwZURlZnMuanMgaW4gUmVzb3VyY2VzICovLAorCQkJCTFD
NTFGRjA4MjE2NkM2QTMwMDEyOEJCMSAvKiBSZXNvdXJjZVNlbWFudGljLmpzIGluIFJlc291cmNl
cyAqLywKIAkJCQlFOTJEMTE4NjIwRjcwNjBFMDBENzc2QjIgLyogUmV0dXJuLmpzIGluIFJlc291
cmNlcyAqLywKIAkJCQlFOTJEMTE4NzIwRjcwNjBFMDBENzc2QjIgLyogUmV0dXJuQ2hlY2tlci5q
cyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJRTkyRDExODgyMEY3MDYwRTAwRDc3NkIyIC8qIFJldHVy
bkV4Y2VwdGlvbi5qcyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJRTkyRDExODkyMEY3MDYwRTAwRDc3
NkIyIC8qIFJld3JpdGVyLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOUQ3Q0JBMzIxNEI4MkI4
MDBGMUM5MTggLyogU2FtcGxlci5qcyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJMUM1MUZGMEQyMTY2
QzZBMzAwMTI4QkIxIC8qIFNlbWFudGljLmpzIGluIFJlc291cmNlcyAqLywKKwkJCQkxQzUxRkYw
OTIxNjZDNkEzMDAxMjhCQjEgLyogU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmpzIGlu
IFJlc291cmNlcyAqLywKKwkJCQkxQzUxRkYxMDIxNjZDNkEzMDAxMjhCQjEgLyogU3RhZ2VJbk91
dFNlbWFudGljLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTE4QTIwRjcwNjBFMDBENzc2
QjIgLyogU3RhbmRhcmRMaWJyYXJ5LmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTE4QjIw
RjcwNjBFMDBENzc2QjIgLyogU3RhdGVtZW50Q2xvbmVyLmpzIGluIFJlc291cmNlcyAqLywKIAkJ
CQlFOTJEMTE4QzIwRjcwNjBFMDBENzc2QjIgLyogU3RydWN0TGF5b3V0QnVpbGRlci5qcyBpbiBS
ZXNvdXJjZXMgKi8sCkBAIC05NjYsNiArMTAwOSw3IEBACiAJCQkJRTkyRDExOUQyMEY3MDYwRTAw
RDc3NkIyIC8qIFVpbnRMaXRlcmFsLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTE5RTIw
RjcwNjBFMDBENzc2QjIgLyogVWludExpdGVyYWxUeXBlLmpzIGluIFJlc291cmNlcyAqLywKIAkJ
CQlFOTJEMTE5RjIwRjcwNjBFMDBENzc2QjIgLyogVW5pZmljYXRpb25Db250ZXh0LmpzIGluIFJl
c291cmNlcyAqLywKKwkJCQkxQzUxRkYxNjIxNjgxN0I5MDAxMjhCQjEgLyogVW5pZm9ybWl0eUNo
ZWNrZXIuanMgaW4gUmVzb3VyY2VzICovLAogCQkJCUU5MkQxMUEwMjBGNzA2MEUwMEQ3NzZCMiAv
KiBVbnJlYWNoYWJsZUNvZGVDaGVja2VyLmpzIGluIFJlc291cmNlcyAqLywKIAkJCQlFOTJEMTFB
MTIwRjcwNjBFMDBENzc2QjIgLyogVmFsdWUuanMgaW4gUmVzb3VyY2VzICovLAogCQkJCUU5MkQx
MUEyMjBGNzA2MEUwMEQ3NzZCMiAvKiBWYXJpYWJsZURlY2wuanMgaW4gUmVzb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcwppbmRleCBjZDQ0ZDAzZmI2M2YzM2Jl
OTlkYzQ0ZGJiY2M0Y2ZhYmUyZGE4YzdiLi4xODM4MmY0MmEzNzdiNDZmZGFmMzdiMGY2Y2RkMDUx
MTg0OGE1ODNhIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJz
ZS5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcwpAQCAtMzAx
LDYgKzMwMSwxNyBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQs
IGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQog
CisgICAgZnVuY3Rpb24gcGFyc2VRdWFsaWZpZXJzKCkKKyAgICB7CisgICAgICAgIGxldCBxdWFs
aWZpZXJzID0gW107CisgICAgICAgIGxldCB0b2tlbjsKKyAgICAgICAgd2hpbGUgKHRva2VuID0g
dHJ5Q29uc3VtZSgibm9pbnRlcnBvbGF0aW9uIiwgIm5vcGVyc3BlY3RpdmUiLCAiY2VudHJvaWQi
LCAic2FtcGxlIikpCisgICAgICAgICAgICBxdWFsaWZpZXJzLnB1c2godG9rZW4pOworICAgICAg
ICBpZiAocXVhbGlmaWVycy5sZW5ndGggPT0gMCkKKyAgICAgICAgICAgIHJldHVybiBudWxsOwor
ICAgICAgICByZXR1cm4gbmV3IFF1YWxpZmllcnMocXVhbGlmaWVycyk7CisgICAgfQorCiAgICAg
ZnVuY3Rpb24gcGFyc2VUeXBlKCkKICAgICB7CiAgICAgICAgIGxldCB0b2tlbjsKQEAgLTk0Niw2
ICs5NTcsOSBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxp
bmVOdW1iZXJPZmZzZXQsIHRleHQpCiAKICAgICBmdW5jdGlvbiBwYXJzZVZhcmlhYmxlRGVjbHMo
KQogICAgIHsKKyAgICAgICAgbGV0IHVuaWZvcm1pdHkgPSB0cnlDb25zdW1lKCJ1bmlmb3JtIik7
CisgICAgICAgIGlmICh1bmlmb3JtaXR5KQorICAgICAgICAgICAgdW5pZm9ybWl0eSA9IHVuaWZv
cm1pdHkudGV4dDsKICAgICAgICAgbGV0IHR5cGUgPSBwYXJzZVR5cGUoKTsKICAgICAgICAgaWYg
KHR5cGUgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCiAgICAgICAgICAgICByZXR1cm4gdHlwZTsK
QEAgLTk1Nyw3ICs5NzEsNyBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdp
bktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgICAgICBsZXQgaW5pdGlhbGl6
ZXIgPSB0cnlDb25zdW1lKCI9IikgPyBwYXJzZUV4cHJlc3Npb24oKSA6IG51bGw7CiAgICAgICAg
ICAgICBpZiAoaW5pdGlhbGl6ZXIgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGluaXRpYWxpemVyOwotICAgICAgICAgICAgbGlzdC5wdXNoKG5ldyBWYXJp
YWJsZURlY2wobmFtZSwgbmFtZS50ZXh0LCB0eXBlLCBpbml0aWFsaXplcikpOworICAgICAgICAg
ICAgbGlzdC5wdXNoKG5ldyBWYXJpYWJsZURlY2wobmFtZSwgbmFtZS50ZXh0LCB0eXBlLCBpbml0
aWFsaXplciwgdW5pZm9ybWl0eSkpOwogICAgICAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25z
dW1lKCIsIiwgIjsiKTsKICAgICAgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5
bnRheEVycm9yKQogICAgICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwpAQCAtMTA4MSw2
ICsxMDk1LDEwIEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwg
bGluZU51bWJlck9mZnNldCwgdGV4dCkKIAogICAgIGZ1bmN0aW9uIHBhcnNlUGFyYW1ldGVyKCkK
ICAgICB7CisgICAgICAgIGxldCBxdWFsaWZpZXJzID0gcGFyc2VRdWFsaWZpZXJzKCk7CisgICAg
ICAgIGxldCB1bmlmb3JtaXR5ID0gdHJ5Q29uc3VtZSgidW5pZm9ybSIpOworICAgICAgICBpZiAo
dW5pZm9ybWl0eSkKKyAgICAgICAgICAgIHVuaWZvcm1pdHkgPSB1bmlmb3JtaXR5LnRleHQ7CiAg
ICAgICAgIGxldCB0eXBlID0gcGFyc2VUeXBlKCk7CiAgICAgICAgIGlmICh0eXBlIGluc3RhbmNl
b2YgV1N5bnRheEVycm9yKQogICAgICAgICAgICAgcmV0dXJuIHR5cGU7CkBAIC0xMDkxLDcgKzEx
MDksNyBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVO
dW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgICAgICBpZiAoc2VtYW50aWMgaW5zdGFuY2VvZiBX
U3ludGF4RXJyb3IpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbWFudGljOwogICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBuZXcgRnVuY1BhcmFtZXRlcih0eXBlLm9yaWdpbiwgbmFtZSA/IG5h
bWUudGV4dCA6IG51bGwsIHR5cGUsIHNlbWFudGljKTsKKyAgICAgICAgcmV0dXJuIG5ldyBGdW5j
UGFyYW1ldGVyKHR5cGUub3JpZ2luLCBuYW1lID8gbmFtZS50ZXh0IDogbnVsbCwgdHlwZSwgcXVh
bGlmaWVycywgdW5pZm9ybWl0eSwgc2VtYW50aWMpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHBh
cnNlUGFyYW1ldGVycygpCkBAIC0xMzc4LDYgKzEzOTYsNyBAQCBmdW5jdGlvbiBwYXJzZShwcm9n
cmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAKICAgICBm
dW5jdGlvbiBwYXJzZUZpZWxkKCkKICAgICB7CisgICAgICAgIGxldCBxdWFsaWZpZXJzID0gcGFy
c2VRdWFsaWZpZXJzKCk7CiAgICAgICAgIGxldCB0eXBlID0gcGFyc2VUeXBlKCk7CiAgICAgICAg
IGlmICh0eXBlIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQogICAgICAgICAgICAgcmV0dXJuIHR5
cGU7CkBAIC0xMzkzLDcgKzE0MTIsNyBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4s
IG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgIGxldCBtYXliZUVy
cm9yID0gY29uc3VtZSgiOyIpOwogICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdT
eW50YXhFcnJvcikKICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwotICAgICAgICByZXR1
cm4gbmV3IEZpZWxkKG5hbWUsIG5hbWUudGV4dCwgdHlwZSwgc2VtYW50aWMpOworICAgICAgICBy
ZXR1cm4gbmV3IEZpZWxkKG5hbWUsIG5hbWUudGV4dCwgdHlwZSwgcXVhbGlmaWVycywgc2VtYW50
aWMpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHBhcnNlU3RydWN0VHlwZSgpCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QcmVwYXJlLmpzIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvUHJlcGFyZS5qcwppbmRleCBkNzhmOTc0Zjg3ZTY0Zjg4ZGU2ZmEx
YzhmMDFlZWRkZjFmOGMxOTVmLi45YWE2ZWQ0OTFmYzJkNmM1MWUxYjliZDA5YTIzNmU0OGVhYzU2
ZGIyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QcmVwYXJlLmpz
CisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1ByZXBhcmUuanMKQEAgLTU1LDYg
KzU1LDcgQEAgbGV0IHByZXBhcmUgPSAoKCkgPT4gewogICAgICAgICBjaGVja1R5cGVzV2l0aEFy
Z3VtZW50cyhwcm9ncmFtKTsKIAogICAgICAgICBjaGVjayhwcm9ncmFtKTsKKyAgICAgICAgLy9j
aGVja1VuaWZvcm1zKHByb2dyYW0pOwogICAgICAgICBjaGVja0xpdGVyYWxUeXBlcyhwcm9ncmFt
KTsKICAgICAgICAgcmVzb2x2ZVByb3BlcnRpZXMocHJvZ3JhbSk7CiAgICAgICAgIGZpbmRIaWdo
Wm9tYmllcyhwcm9ncmFtKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1F1YWxpZmllcnMuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9RdWFsaWZp
ZXJzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQwZDgzM2NlNThiZTcwYzg3ZTU5Zjc4N2ZhYzFmNTZmMmQ5OWFl
OTIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9RdWFs
aWZpZXJzLmpzCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworY2xhc3MgUXVhbGlmaWVycyBleHRlbmRz
IE5vZGUgeworICAgIGNvbnN0cnVjdG9yKHRva2VucykKKyAgICB7CisgICAgICAgIHN1cGVyKCk7
CisgICAgICAgIHRoaXMuX25vaW50ZXJwb2xhdGlvbiA9IG51bGw7CisgICAgICAgIHRoaXMuX25v
cGVyc3BlY3RpdmUgPSBudWxsOworICAgICAgICB0aGlzLl9jZW50cm9pZCA9IG51bGw7CisgICAg
ICAgIHRoaXMuX3NhbXBsZSA9IG51bGw7CisgICAgICAgIHRoaXMuX29yaWdpblN0cmluZyA9IG51
bGw7CisKKyAgICAgICAgaWYgKHRva2Vucy5sZW5ndGggPiAwKQorICAgICAgICAgICAgdGhpcy5f
b3JpZ2luU3RyaW5nID0gdG9rZW5zWzBdLm9yaWdpblN0cmluZzsKKworICAgICAgICBmb3IgKGxl
dCB0b2tlbiBvZiB0b2tlbnMpIHsKKyAgICAgICAgICAgIHN3aXRjaCAodG9rZW4udGV4dCkgewor
ICAgICAgICAgICAgICAgIGNhc2UgIm5vaW50ZXJwb2xhdGlvbiI6CisgICAgICAgICAgICAgICAg
ICAgIGlmICh0aGlzLm5vaW50ZXJwb2xhdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgICAgICAgICB0aGlzLl9ub2ludGVycG9sYXRpb24gPSB0b2tl
bjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAibm9w
ZXJzcGVjdGl2ZSI6CisgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm5vcGVyc3BlY3RpdmUp
CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAg
dGhpcy5fbm9wZXJzcGVjdGl2ZSA9IHRva2VuOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICBjYXNlICJjZW50cm9pZCI6CisgICAgICAgICAgICAgICAgICAgIGlm
ICh0aGlzLmNlbnRyb2lkKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICAgICAgICAgIHRoaXMuX2NlbnRyb2lkID0gdG9rZW47CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgInNhbXBsZSI6CisgICAgICAgICAgICAg
ICAgICAgIGlmICh0aGlzLnNhbXBsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgICAgICAgICB0aGlzLl9zYW1wbGUgPSB0b2tlbjsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHF1YWxpZmllcjogJHt0b2tlbi50ZXh0fWAp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgZ2V0IG5vaW50ZXJwb2xh
dGlvbigpIHsgcmV0dXJuIHRoaXMuX25vaW50ZXJwb2xhdGlvbjsgfQorICAgIGdldCBub3BlcnNw
ZWN0aXZlKCkgeyByZXR1cm4gdGhpcy5fbm9wZXJzcGVjdGl2ZTsgfQorICAgIGdldCBjZW50cm9p
ZCgpIHsgcmV0dXJuIHRoaXMuX2NlbnRyb2lkOyB9CisgICAgZ2V0IHNhbXBsZSgpIHsgcmV0dXJu
IHRoaXMuX3NhbXBsZTsgfQorCisgICAgZ2V0IGlzVmFsaWQoKQorICAgIHsKKyAgICAgICAgaWYg
KHRoaXMubm9pbnRlcnBvbGF0aW9uICYmIHRoaXMubm9wZXJzcGVjdGl2ZSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKHRoaXMuY2VudHJvaWQgJiYgdGhpcy5zYW1wbGUp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KworICAgIGdldCB0b2tlbnMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFt0aGlzLm5vaW50ZXJw
b2xhdGlvbiwgdGhpcy5ub3BlcnNwZWN0aXZlLCB0aGlzLmNlbnRyb2lkLCB0aGlzLnNhbXBsZV0u
ZmlsdGVyKHggPT4geCk7CisgICAgfQorCisgICAgZ2V0IGxlbmd0aCgpCisgICAgeworICAgICAg
ICByZXR1cm4gdGhpcy50b2tlbnMubGVuZ3RoOworICAgIH0KKworICAgIGdldCBvcmlnaW5TdHJp
bmcoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX29yaWdpblN0cmluZzsKKyAgICB9CisK
KyAgICB0b1N0cmluZygpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy50b2tlbnMubWFwKHgg
PT4geC50ZXh0KS5qb2luKCIgIik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9SZXdyaXRlci5qcwppbmRleCA0OGM2OTc4OGVjNjg5OGVjMDczZmMyMTVmM2FhMTM3NTBi
ZWMwODU0Li45M2E4ZjYxNTQxNTU1YjdkNzczYWYyYWE5OTVmMDhlMWM2NGU0YTg0IDEwMDY0NAot
LS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5qcworKysgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRlci5qcwpAQCAtNjAsNyArNjAsMTEgQEAg
Y2xhc3MgUmV3cml0ZXIgewogICAgIAogICAgIHZpc2l0RnVuY1BhcmFtZXRlcihub2RlKQogICAg
IHsKLSAgICAgICAgbGV0IHJlc3VsdCA9IG5ldyBGdW5jUGFyYW1ldGVyKG5vZGUub3JpZ2luLCBu
b2RlLm5hbWUsIG5vZGUudHlwZS52aXNpdCh0aGlzKSwgTm9kZS52aXNpdChub2RlLnNlbWFudGlj
LCB0aGlzKSk7CisgICAgICAgIGxldCByZXN1bHQgPSBuZXcgRnVuY1BhcmFtZXRlcihub2RlLm9y
aWdpbiwgbm9kZS5uYW1lLAorICAgICAgICAgICAgbm9kZS50eXBlLnZpc2l0KHRoaXMpLAorICAg
ICAgICAgICAgTm9kZS52aXNpdChub2RlLnF1YWxpZmllcnMsIHRoaXMpLAorICAgICAgICAgICAg
bm9kZS51bmlmb3JtaXR5LAorICAgICAgICAgICAgTm9kZS52aXNpdChub2RlLnNlbWFudGljLCB0
aGlzKSk7CiAgICAgICAgIHRoaXMuX21hcE5vZGUobm9kZSwgcmVzdWx0KTsKICAgICAgICAgcmVz
dWx0LmVQdHIgPSBub2RlLmVQdHI7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC03MSw3ICs3
NSw4IEBAIGNsYXNzIFJld3JpdGVyIHsKICAgICAgICAgbGV0IHJlc3VsdCA9IG5ldyBWYXJpYWJs
ZURlY2woCiAgICAgICAgICAgICBub2RlLm9yaWdpbiwgbm9kZS5uYW1lLAogICAgICAgICAgICAg
bm9kZS50eXBlLnZpc2l0KHRoaXMpLAotICAgICAgICAgICAgTm9kZS52aXNpdChub2RlLmluaXRp
YWxpemVyLCB0aGlzKSk7CisgICAgICAgICAgICBOb2RlLnZpc2l0KG5vZGUuaW5pdGlhbGl6ZXIs
IHRoaXMpLAorICAgICAgICAgICAgbm9kZS51bmlmb3JtaXR5KTsKICAgICAgICAgdGhpcy5fbWFw
Tm9kZShub2RlLCByZXN1bHQpOwogICAgICAgICByZXN1bHQuZVB0ciA9IG5vZGUuZVB0cjsKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTEwNSw3ICsxMTAsNyBAQCBjbGFzcyBSZXdyaXRlciB7
CiAgICAgCiAgICAgdmlzaXRGaWVsZChub2RlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBG
aWVsZChub2RlLm9yaWdpbiwgbm9kZS5uYW1lLCBub2RlLnR5cGUudmlzaXQodGhpcyksIE5vZGUu
dmlzaXQobm9kZS5zZW1hbnRpYywgdGhpcykpOworICAgICAgICByZXR1cm4gbmV3IEZpZWxkKG5v
ZGUub3JpZ2luLCBub2RlLm5hbWUsIG5vZGUudHlwZS52aXNpdCh0aGlzKSwgTm9kZS52aXNpdChu
b2RlLnF1YWxpZmllcnMsIHRoaXMpLCBOb2RlLnZpc2l0KG5vZGUuc2VtYW50aWMsIHRoaXMpKTsK
ICAgICB9CiAgICAgCiAgICAgdmlzaXRFbnVtTWVtYmVyKG5vZGUpCkBAIC00MjAsNSArNDI1LDEw
IEBAIGNsYXNzIFJld3JpdGVyIHsKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgU3BlY2lhbGl6
YXRpb25Db25zdGFudFNlbWFudGljKG5vZGUub3JpZ2luKTsKICAgICB9CisKKyAgICB2aXNpdFF1
YWxpZmllcnMobm9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgUXVhbGlmaWVycyhub2Rl
LnRva2Vucyk7CisgICAgfQogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9TUElSVi5odG1sIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYu
aHRtbAppbmRleCBjYTQ1MGY3NmU0ODMxMWUwZDY3NWNkYmJlYzZiYmZiNGE1MTQ2YTI5Li5mNzA5
ZWI4ZmRlZjVhYjQwNjk3MjI5MTc3MTU4MTljMDFjMWM5ZjE5IDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TUElSVi5odG1sCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1NQSVJWLmh0bWwKQEAgLTYxLDYgKzYxLDcgQEAgdGQgewogICAgIDxzY3Jp
cHQgc3JjPSJFQnVmZmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iRUJ1ZmZlckJ1
aWxkZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJFUHRyLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0iRW50cnlQb2ludFBhcmFtZXRlckdhdGhlcmVyLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iRW51bUxpdGVyYWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJFbnVtTWVtYmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iRW51bVR5
cGUuanMiPjwvc2NyaXB0PgpAQCAtMTE4LDYgKzExOSw3IEBAIHRkIHsKICAgICA8c2NyaXB0IHNy
Yz0iUHJvZ3JhbS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlByb2dyYW1XaXRoVW5u
ZWNlc3NhcnlUaGluZ3NSZW1vdmVkLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUHRy
VHlwZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlF1YWxpZmllcnMuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUmVjdXJzaW9uQ2hlY2tlci5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IlJlY3Vyc2l2ZVR5cGVDaGVja2VyLmpzIj48L3NjcmlwdD4KQEAgLTE1
NSw2ICsxNTcsNyBAQCB0ZCB7CiAgICAgPHNjcmlwdCBzcmM9IlVpbnRMaXRlcmFsLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVWludExpdGVyYWxUeXBlLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iVW5pZmljYXRpb25Db250ZXh0LmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iVW5pZm9ybWl0eUNoZWNrZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJVbnJlYWNoYWJsZUNvZGVDaGVja2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
VmFyaWFibGVEZWNsLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmFyaWFibGVSZWYu
anMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
VGVzdC5odG1sIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCmluZGV4
IGEyMDMxNTJlOGQ2ZDQ1ZDc5NTQ5MDdhYzNkYjUxOTg2M2IxYTRlY2UuLjkxNDM0MTYxYzlhNzRk
ZDI1ODhmZGFlNGE3Yjk3OGU1YmFiMjQ2ZmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1Rlc3QuaHRtbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9UZXN0Lmh0bWwKQEAgLTU1LDYgKzU1LDcgQEAKIDxzY3JpcHQgc3JjPSJFQnVmZmVyLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJFQnVmZmVyQnVpbGRlci5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iRVB0ci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iRW50cnlQb2ludFBhcmFt
ZXRlckdhdGhlcmVyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJFbnVtTGl0ZXJhbC5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iRW51bU1lbWJlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iRW51bVR5cGUuanMiPjwvc2NyaXB0PgpAQCAtMTEyLDYgKzExMyw3IEBACiA8c2NyaXB0
IHNyYz0iUHJvZ3JhbS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iUHJvZ3JhbVdpdGhVbm5l
Y2Vzc2FyeVRoaW5nc1JlbW92ZWQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlB0clR5cGUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlF1YWxpZmllcnMuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9IlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9IlJlY3Vyc2lvbkNoZWNrZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlJlY3Vy
c2l2ZVR5cGVDaGVja2VyLmpzIj48L3NjcmlwdD4KQEAgLTE0OSw2ICsxNTEsNyBAQAogPHNjcmlw
dCBzcmM9IlVpbnRMaXRlcmFsLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJVaW50TGl0ZXJh
bFR5cGUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlVuaWZpY2F0aW9uQ29udGV4dC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iVW5pZm9ybWl0eUNoZWNrZXIuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9IlVucmVhY2hhYmxlQ29kZUNoZWNrZXIuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9IlZhcmlhYmxlRGVjbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iVmFyaWFibGVS
ZWYuanMiPjwvc2NyaXB0PgpAQCAtMTY2LDcgKzE2OSw3IEBACiA8c2NyaXB0PgogZnVuY3Rpb24g
ZG9UZXN0SW5Ccm93c2VyKCkKIHsKLSAgICB2YXIgdGVzdGVyID0gZG9UZXN0KC8uKi8pOworICAg
IHZhciB0ZXN0ZXIgPSBkb1Rlc3QoL3NoYWRlclR5cGVzfGluY29tcGF0aWJsZVF1YWxpZmllcnMv
KTsKICAgICB2YXIgbGFzdFRpbWU7CiAgICAgZnVuY3Rpb24gbmV4dCgpCiAgICAgewpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcyBiL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMKaW5kZXggMDc3YjEzN2I1YzY1NWE0NTliNWY5NTdk
NDlkNWUzZjZjZmZmNDBlNi4uZWYyM2ViNzQ2ZDJhZGExMjU2YmRiNDcxOTM2N2NmNWNlYTk5MGFi
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcworKysg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzCkBAIC05NDUzLDIzICs5NDUz
LDYgQEAgdGVzdHMucmVmZXJlbmNlRXF1YWxpdHkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgKGUp
ID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsKIH0KIAotdGVzdHMuY29tbWVudFBhcnNpbmcg
PSBmdW5jdGlvbigpIHsKLSAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcChgCi0gICAgICAgIC8qIHRo
aXMgY29tbWVudAotICAgICAgICBydW5zIG92ZXIgbXVsdGlwbGUgbGluZXMgKi8KLSAgICAgICAg
dGVzdCBib29sIGZvbygpIHsgcmV0dXJuIHRydWU7IH0KLSAgICBgKTsKLSAgICBjaGVja0Jvb2wo
cHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIHRydWUpOwotCi0gICAg
Y2hlY2tGYWlsKAotICAgICAgICAoKSA9PiBkb1ByZXAoYAotICAgICAgICAvKiB0aGlzIGNvbW1l
bnQKLSAgICAgICAgcnVucyBvdmVyIG11bHRpcGxlIGxpbmVzCi0gICAgICAgIGJvb2wgZm9vKCkg
eyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICBgKSwKLSAgICAgICAgKGUpID0+IGUgaW5zdGFuY2Vv
ZiBXTGV4aWNhbEVycm9yKTsKLX0KLQogdGVzdHMuY2FsbEFyZ3VtZW50c0FyZUNvcGllZEltbWVk
aWF0ZWx5QWZ0ZXJFdmFsdWF0aW9uID0gKCkgPT4gewogICAgIGxldCBwcm9ncmFtID0gZG9QcmVw
KGAKICAgICAgICAgdGVzdCBpbnQgZm9vKCkKQEAgLTk3OTAsNyArOTc3Myw4IEBAIHRlc3RzLnNl
dHRpbmdBbkFycmF5SW5zaWRlQVN0cnVjdCA9IGZ1bmN0aW9uKCkKICAgICBjaGVja0ludChwcm9n
cmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgMjEpOwogfQogCi10ZXN0cy50
cmFwQmVjYXVzZU9mSW5kZXhBY2Vzc3MgPSAoKSA9PiB7Cit0ZXN0cy50cmFwQmVjYXVzZU9mSW5k
ZXhBY2Vzc3MgPSBmdW5jdGlvbigpCit7CiAgICAgY29uc3QgcHJvZ3JhbSA9IGRvUHJlcChgCiAg
ICAgICAgIHRlc3QgaW50IGZvbygpCiAgICAgICAgIHsKQEAgLTk4MDIsNyArOTc4Niw4IEBAIHRl
c3RzLnRyYXBCZWNhdXNlT2ZJbmRleEFjZXNzcyA9ICgpID0+IHsKICAgICBjaGVja1RyYXAocHJv
Z3JhbSwgKCkgPT4gY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIGNoZWNrSW50KTsK
IH0KIAotdGVzdHMudHJhcFRyYW5zaXRpdmVseSA9ICgpID0+IHsKK3Rlc3RzLnRyYXBUcmFuc2l0
aXZlbHkgPSBmdW5jdGlvbigpCit7CiAgICAgY29uc3QgcHJvZ3JhbSA9IGRvUHJlcChgCiAgICAg
ICAgIHRlc3QgaW50IGZvbygpCiAgICAgICAgIHsKQEAgLTk4MjMsNiArOTgwOCw3MSBAQCB0ZXN0
cy50cmFwVHJhbnNpdGl2ZWx5ID0gKCkgPT4gewogICAgIGNoZWNrVHJhcChwcm9ncmFtLCAoKSA9
PiBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgY2hlY2tJbnQpOwogfTsKIAordGVz
dHMuaW5jb21wYXRpYmxlUXVhbGlmaWVycyA9IGZ1bmN0aW9uKCkKK3sKKyAgICBkb1ByZXAoYAor
ICAgICAgICBzdHJ1Y3QgRm9vIHsKKyAgICAgICAgICAgIG5vaW50ZXJwb2xhdGlvbiBpbnQgeDsK
KyAgICAgICAgICAgIG5vcGVyc3BlY3RpdmUgaW50IHk7CisgICAgICAgICAgICBjZW50cm9pZCBp
bnQgejsKKyAgICAgICAgICAgIHNhbXBsZSBpbnQgdzsKKyAgICAgICAgICAgIG5vaW50ZXJwb2xh
dGlvbiBjZW50cm9pZCBpbnQgcDsKKyAgICAgICAgICAgIG5vaW50ZXJwb2xhdGlvbiBzYW1wbGUg
aW50IHE7CisgICAgICAgICAgICBub3BlcnNwZWN0aXZlIGNlbnRyb2lkIGludCByOworICAgICAg
ICAgICAgbm9wZXJzcGVjdGl2ZSBzYW1wbGUgaW50IHM7CisgICAgICAgIH0KKyAgICAgICAgdGVz
dCB2b2lkIGJhcihub2ludGVycG9sYXRpb24gaW50IHgsIG5vcGVyc3BlY3RpdmUgaW50IHksIGNl
bnRyb2lkIGludCB6LCBzYW1wbGUgaW50IHcsIG5vaW50ZXJwb2xhdGlvbiBjZW50cm9pZCBpbnQg
cCwgbm9pbnRlcnBvbGF0aW9uIHNhbXBsZSBpbnQgcSwgbm9wZXJzcGVjdGl2ZSBjZW50cm9pZCBp
bnQgciwgbm9wZXJzcGVjdGl2ZSBzYW1wbGUgaW50IHMpIHsKKyAgICAgICAgfQorICAgIGApCisg
ICAgY2hlY2tGYWlsKAorICAgICAgICAoKSA9PiBkb1ByZXAoYAorICAgICAgICAgICAgc3RydWN0
IEZvbyB7CisgICAgICAgICAgICAgICAgbm9pbnRlcnBvbGF0aW9uIG5vcGVyc3BlY3RpdmUgaW50
IHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0ZXN0IHZvaWQgYmFyKCkgeworICAgICAg
ICAgICAgfQorICAgICAgICBgKSwKKyAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVy
cm9yKTsKKyAgICBjaGVja0ZhaWwoCisgICAgICAgICgpID0+IGRvUHJlcChgCisgICAgICAgICAg
ICBzdHJ1Y3QgRm9vIHsKKyAgICAgICAgICAgICAgICBjZW50cm9pZCBzYW1wbGUgaW50IHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICB0ZXN0IHZvaWQgYmFyKCkgeworICAgICAgICAgICAg
fQorICAgICAgICBgKSwKKyAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXVHlwZUVycm9yKTsK
KyAgICBjaGVja0ZhaWwoCisgICAgICAgICgpID0+IGRvUHJlcChgCisgICAgICAgICAgICB0ZXN0
IHZvaWQgZm9vKG5vaW50ZXJwb2xhdGlvbiBub3BlcnNwZWN0aXZlIGludCB4KSB7CisgICAgICAg
ICAgICB9CisgICAgICAgIGApLAorICAgICAgICAoZSkgPT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJy
b3IpOworICAgIGNoZWNrRmFpbCgKKyAgICAgICAgKCkgPT4gZG9QcmVwKGAKKyAgICAgICAgICAg
IHRlc3Qgdm9pZCBmb28oY2VudHJvaWQgc2FtcGxlIGludCB4KSB7CisgICAgICAgICAgICB9Cisg
ICAgICAgIGApLAorICAgICAgICAoZSkgPT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IpOworfQor
Cit0ZXN0cy5jb21tZW50UGFyc2luZyA9IGZ1bmN0aW9uKCkgeworICAgIGxldCBwcm9ncmFtID0g
ZG9QcmVwKGAKKyAgICAgICAgLyogdGhpcyBjb21tZW50CisgICAgICAgIHJ1bnMgb3ZlciBtdWx0
aXBsZSBsaW5lcyAqLworICAgICAgICB0ZXN0IGJvb2wgZm9vKCkgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgIGApOworICAgIGNoZWNrQm9vbChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZv
byIsIFtdKSwgdHJ1ZSk7CisKKyAgICBjaGVja0ZhaWwoCisgICAgICAgICgpID0+IGRvUHJlcChg
CisgICAgICAgIC8qIHRoaXMgY29tbWVudAorICAgICAgICBydW5zIG92ZXIgbXVsdGlwbGUgbGlu
ZXMKKyAgICAgICAgYm9vbCBmb28oKSB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIGApLAorICAg
ICAgICAoZSkgPT4gZSBpbnN0YW5jZW9mIFdMZXhpY2FsRXJyb3IpOworfQorCiBva1RvVGVzdCA9
IHRydWU7CiAKIGxldCB0ZXN0RmlsdGVyID0gLy4qLzsgLy8gcnVuIGV2ZXJ5dGhpbmcgYnkgZGVm
YXVsdApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVW5pZm9ybWl0
eUNoZWNrZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Vbmlmb3JtaXR5Q2hl
Y2tlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iMmFiYTZhOTY3NjU1MWE5ZDAxNTM1MTYzZTM2NDAxYjlhYmQx
Mjc0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVW5p
Zm9ybWl0eUNoZWNrZXIuanMKQEAgLTAsMCArMSw2MjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworInVzZSBzdHJpY3QiOworCitmdW5jdGlvbiBjaGVja1Vu
aWZvcm1zKHByb2dyYW0pCit7CisgICAgLy8gVmFyaWFibGVEZWNscyBhbmQgRnVuY1BhcmFtZXRl
cnMgaGF2ZSB0aGUgY29uY2VwdCBvZiB1bmlmb3JtaXR5LgorICAgIC8vIFdpdGhvdXQgc3BlY2lm
eWluZyB0aGUgInVuaWZvcm0iIGtleXdvcmQsIHVuaWZvcm1pdHkgaXMgaW5mZXJyZWQgZm9yIGV2
ZXJ5IFZhcmlhYmxlRGVjbCBhbmQgRnVuY1BhcmFtZXRlciBpbiBhIGNvbnRleHQtc2Vuc2l0aXZl
IG1hbm5lci4KKyAgICAvLyBDb25zaWRlcjoKKyAgICAvLyBpbnQgZm9vKGludCB4KSB7CisgICAg
Ly8gICAgIHJldHVybiB4ICsgMjsKKyAgICAvLyB9CisgICAgLy8gLi4uCisgICAgLy8gdW5pZm9y
bSBpbnQgeSA9IGZvbyg3KTsKKyAgICAvLyBpbnQgeiA9IGZvbyh0aWQpOyAvLyBOb3QgdW5pZm9y
bSEKKyAgICAvLworICAgIC8vIFdoZW4gZm9vKCkgaXMgY2FsbGVkIHdpdGggNywgd2UgZGV0ZXJt
aW5lIHRoYXQgdGhlIGZ1bmN0aW9uJ3MgcmV0dXJuIHR5cGUgaXMgdW5pZm9ybSwgc28gYXNzaWdu
aW5nIHRoZSByZXN1bHQgdG8gYSB1bmlmb3JtIHZhcmlhYmxlIGlzIGxlZ2FsLgorICAgIC8vIEhv
d2V2ZXIsIHdoZW4gZm9vKCkgaXMgY2FsbGVkIHdpdGggdGlkLCB3ZSBkZXRlcm1pbmUgdGhhdCB0
aGUgZnVuY3Rpb24ncyByZXR1cm4gdHlwZSBpcyBub251bmlmb3JtLCBzbyBhc3NpZ25pbmcgdGhl
IHJlc3VsdCB0byBhIHVuaWZvcm0gdmFyaWFibGUgaXMgaWxsZWdhbC4KKyAgICAvLyBXaGVuIHdl
IGVtaXQgY29kZSwgd2Ugd2lsbCBzcGVjaWFsaXplIGVhY2ggV0hMU0wgZnVuY3Rpb24gdG8gcG90
ZW50aWFsbHkgbXVsdGlwbGUgb3VwdXR0ZWQgZnVuY3Rpb25zLCBlYWNoIHdpdGggYSBkaWZmZXJl
bnQgY29tYmluYXRpb24gb2YgdW5pZm9ybWl0eSBmb3IgZWFjaCBwYXJhbWV0ZXIuCisKKyAgICAv
LyBXZSBpbmZlciB3aGljaCBWYXJpYWJsZURlY2xzIGFuZCBGdW5jUGFyYW1ldGVycyBhcmUgdW5p
Zm9ybSBieSB1c2luZyB0aGUgZm9sbG93aW5nIGFsZ29yaXRobS4KKyAgICAvLyBGaXJzdCwgYnVp
bGQgYSBncmFwaC4gVGhlIG5vZGVzIGluIHRoaXMgZ3JhcGggYXJlIFZhcmlhYmxlRGVjbHMgYW5k
IEZ1bmNQYXJhbWV0ZXJzLgorICAgIC8vIEJlY2F1c2Ugb2YgdGhlIGNvbnRleHQtc2Vuc2l0aXZp
dHksIGEgc2luZ2xlIFZhcmlhYmxlRGVjbCBhbmQgRnVuY1BhcmFtZXRlciBtYXkgYXBwZWFyIGFz
IG11bHRpcGxlIG5vZGVzIGluIHRoZSBncmFwaCwgZGVwZW5kaW5nIG9uIGhvdyBpdCB3YXMgcmVh
Y2hlZC4KKyAgICAvLyBBZGRpdGlvbmFsIG5vZGVzIGFyZSBhbHNvIGFkZGVkIGZvcjoKKyAgICAv
LyAgICAgRnVuY3Rpb25zLCB3aGVyZSB0aGUgbm9kZSByZXByZXNlbnRzIHdoZXRoZXIgdGhlIHJl
dHVybiB2YWx1ZSBpcyB1bmlmb3JtCisgICAgLy8gICAgIEFkZGl0aW9uYWwgdmFyaWFibGUgc2Nv
cGVzIChlLmcuIEZ1bmN0aW9uIGJvZGllcywgbG9vcHMsIGNvbmRpdGlvbmFscywgZXRjLiksIHdo
ZXJlIHRoZSBub2RlIHJlcHJlc2VudHMgd2hldGhlciB0aGUgc2NvcGUgaXMgdW5pZm9ybSBjb250
cm9sIGZsb3cKKyAgICAvLyBUaGUgZWRnZXMgaW4gdGhlIGdyYXBoIHJlcHJlc2VudCBjb25zdHJh
aW50cyBvZiB0aGUgZm9ybSAiQSBpcyBhZGphY2VudCB0byBCIGlmZiBBIGJlaW5nIG5vbnVuaWZv
cm0gcmVxdWlyZXMgQiBhbHNvIGJlaW5nIG5vbnVuaWZvcm0uIgorICAgIC8vIEVkZ2VzIGFyZSBh
ZGRlZCBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOgorICAgIC8vICAgICBBc3NpZ25tZW50IG9wZXJh
dGlvbnMsIGZyb20gZXZlcnkgVmFyaWFibGVSZWYgb24gdGhlIFJIUyB0byBldmVyeSBWYXJpYWJs
ZVJlZiBvbiB0aGUgTEhTIC8vIFRoaXMgaXNuJ3QgcXVpdGUgcmlnaHQsIGNvbnNpZGVyIGFycmF5
W3RpZF0gPSA3LCBhbHNvIGNvbnNpZGVyIHkgPSBmb28oeCwgdW51c2VkKQorICAgIC8vICAgICBB
c3NpZ25tZW50IG9wZXJhdGlvbnMsIGZyb20gdGhlIGlubmVybW9zdCBzY29wZSdzIHByZWRpY2F0
ZSB0byBldmVyeSB2YXJpYWJsZSBvbiB0aGUgTEhTCisgICAgLy8gICAgIEJyZWFrICYgY29udGlu
dWUsIGZyb20gdGhlIGlubmVybW9zdCBzY29wZSB0byB0aGUgaW5uZXJtb3N0IGxvb3AKKyAgICAv
LyAgICAgUmV0dXJuLCBmcm9tIHRoZSBpbm5lcm1vc3Qgc2NvcGUgdG8gdGhlIGZ1bmN0aW9uCisg
ICAgLy8gICAgIFJldHVybiwgZnJvbSBldmVyeSBWYXJpYWJsZVJlZiBpbiB0aGUgZXhwcmVzc2lv
biB0byB0aGUgZnVuY3Rpb24gY2FsbCBpdHNlbGYKKyAgICAvLyBUaGVuLCBtYXJrIGV2ZXJ5IG5v
ZGUgaW4gdGhlIGdyYXBoIGFzIHVuaWZvcm0gZXhjZXB0IGZvciB2YXJpYWJsZXMgdGhhdCBhcmUg
ZXhwbGljaXRseSBub251bmlmb3JtLCBsaWtlIHRpZC4KKyAgICAvLyBTdGFydGluZyBmcm9tIHRo
b3NlIHJvb3RzLCBmbG9vZC1maWxsIHRoZSBncmFwaCwgbWFraW5nIHRoZSBub251bmlmb3JtaXR5
IHNwcmVhZCB0cmFuc2l0aXZlbHkgdGhyb3VnaCB0aGUgYWRqYWNlbnQgbm9kZXMsIHVudGlsIGl0
IGNhbiBzcHJlYWQgbm8gbG9uZ2VyLgorICAgIC8vIFdlIG5vdyBrbm93LCBmb3IgZXZlcnkgc2Nv
cGUsIHdoZXRoZXIgaXQgaXMgdW5pZm9ybSBjb250cm9sIGZsb3csIGFuZCBmb3IgZXZlcnkgVmFy
aWFibGVEZWNsIGFuZCBGdW5jUGFyYW1ldGVyLCB3aGV0aGVyIGl0IGlzIHVuaWZvcm0uCisgICAg
Ly8gV2UgY2FuIG5vdyBlbmZvcmNlIG91ciB2YXJpb3VzIHJlc3RyaWN0aW9ucyAoc3VjaCBhcyAi
bm9udW5pZm9ybSB2YXJpYWJsZXMgY2FuJ3QgYmUgbWFya2VkIGJ5IHRoZSBhdXRob3IgYXMgdW5p
Zm9ybSIpIGluIGEgbmV3IHBhc3MuCisKKyAgICBjbGFzcyBHcmFwaEJ1aWxkZXIgZXh0ZW5kcyBW
aXNpdG9yIHsKKyAgICAgICAgY29uc3RydWN0b3IoZnVuYykKKyAgICAgICAgeworICAgICAgICAg
ICAgc3VwZXIoKTsKKyAgICAgICAgICAgIHRoaXMuX25vZGVDb3VudCA9IDA7CisgICAgICAgICAg
ICB0aGlzLl9lZGdlcyA9IG5ldyBNYXAoKTsgLy8gR3JhcGhOb2RlID0+IFtHcmFwaE5vZGVdCisg
ICAgICAgICAgICB0aGlzLl9hc3NpZ25tZW50c1N0YWNrID0gW25ldyBNYXAoKV07CisgICAgICAg
ICAgICB0aGlzLl9jb250cm9sRmxvd1N0YWNrID0gW107CisgICAgICAgICAgICB0aGlzLl9wdXNo
Q29udHJvbEZsb3coZnVuYywgImZ1bmMiKTsKKyAgICAgICAgICAgIHRoaXMuX3Jlc3VsdCA9IG5l
dyBNYXAoKTsgLy8gRnVuY0RlZiA9PiBbKFtHcmFwaE5vZGVdLCBBU1ROb2RlID0+IChHcmFwaE5v
ZGUgb3IgW0dyYXBoTm9kZV0pKV0KKyAgICAgICAgfQorCisgICAgICAgIGdldCBlZGdlcygpIHsg
cmV0dXJuIHRoaXMuX2VkZ2VzOyB9CisgICAgICAgIGdldCByZXN1bHQoKSB7IHJldHVybiB0aGlz
Ll9yZXN1bHQ7IH0KKworICAgICAgICBfcmVnaXN0ZXJOZXdHcmFwaE5vZGUoYXN0Tm9kZSkKKyAg
ICAgICAgeworICAgICAgICAgICAgbGV0IGN1cnJlbnRDb250cm9sRmxvd0dyYXBoTm9kZSA9IHRo
aXMuX2N1cnJlbnRDb250cm9sRmxvd0dyYXBoTm9kZSgpOworICAgICAgICAgICAgbGV0IG5ld0dy
YXBoTm9kZSA9IHRoaXMuX25vZGVDb3VudCsrOworICAgICAgICAgICAgdGhpcy5fYWRkRWRnZShj
dXJyZW50Q29udHJvbEZsb3dHcmFwaE5vZGUsIG5ld0dyYXBoTm9kZSk7CisgICAgICAgICAgICB0
aGlzLl9hc3NpZ24oYXN0Tm9kZSwgbmV3R3JhcGhOb2RlKTsKKyAgICAgICAgICAgIHJldHVybiBu
ZXdHcmFwaE5vZGU7CisgICAgICAgIH0KKworICAgICAgICBfYWRkRWRnZShmcm9tLCB0bykKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKHRoaXMuX2VkZ2VzLmhhcyhmcm9tKSkKKyAgICAgICAg
ICAgICAgICB0aGlzLl9lZGdlcy5nZXQoZnJvbSkucHVzaCh0byk7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGhpcy5lZGdlcy5zZXQoZnJvbSwgW3RvXSk7CisgICAgICAgIH0K
KworICAgICAgICBfYXNzaWduKGFzdE5vZGUsIGdyYXBoTm9kZSkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKHRoaXMuX2Fzc2lnbm1lbnRzU3RhY2subGVuZ3RoIDwgMSkKKyAgICAgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIlplcm8tbGVuZ3RoIGFzc2lnbm1lbnRzIHN0YWNrIik7Cisg
ICAgICAgICAgICB0aGlzLl9hc3NpZ25tZW50c1N0YWNrW3RoaXMuX2Fzc2lnbm1lbnRzU3RhY2su
bGVuZ3RoIC0gMV0uc2V0KGFzdE5vZGUsIGdyYXBoTm9kZSk7CisgICAgICAgIH0KKworICAgICAg
ICBfbG9va3VwKGFzdE5vZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9hc3Np
Z25tZW50c1N0YWNrLmxlbmd0aCA8IDEpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJaZXJvLWxlbmd0aCBhc3NpZ25tZW50cyBzdGFjayIpOworICAgICAgICAgICAgaWYgKCF0aGlz
Ll9hc3NpZ25tZW50c1N0YWNrW3RoaXMuX2Fzc2lnbm1lbnRzU3RhY2subGVuZ3RoIC0gMV0uaGFz
KGFzdE5vZGUpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTG9va3VwIGZhaWxl
ZCBmb3IgJHthc3ROb2RlfWApOworICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Fzc2lnbm1lbnRz
U3RhY2tbdGhpcy5fYXNzaWdubWVudHNTdGFjay5sZW5ndGggLSAxXS5nZXQoYXN0Tm9kZSk7Cisg
ICAgICAgIH0KKworICAgICAgICBfcHVzaENvbnRyb2xGbG93KGFzdE5vZGUsIGtpbmQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGxldCBuZXdHcmFwaE5vZGUgPSB0aGlzLl9yZWdpc3Rlck5ld0dy
YXBoTm9kZShhc3ROb2RlKTsKKyAgICAgICAgICAgIHRoaXMuX2NvbnRyb2xGbG93U3RhY2sucHVz
aChbbmV3R3JhcGhOb2RlLCBraW5kXSk7CisgICAgICAgICAgICByZXR1cm4gbmV3R3JhcGhOb2Rl
OworICAgICAgICB9CisKKyAgICAgICAgX3BvcENvbnRyb2xGbG93KCkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRyb2xGbG93U3RhY2sucG9wKClbMF07CisgICAgICAg
IH0KKworICAgICAgICBfY3VycmVudENvbnRyb2xGbG93R3JhcGhOb2RlKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKHRoaXMuX2NvbnRyb2xGbG93U3RhY2subGVuZ3RoIDwgMSkKKyAgICAg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlplcm8tbGVuZ3RoIGNvbnRyb2wgZmxvdyBzdGFj
ayIpOworICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRyb2xGbG93U3RhY2tbdGhpcy5fY29u
dHJvbEZsb3dTdGFjay5sZW5ndGggLSAxXVswXTsKKyAgICAgICAgfQorCisgICAgICAgIF9jb250
cm9sRmxvd0dyYXBoTm9kZXNVbnRpbCguLi5raW5kcykKKyAgICAgICAgeworICAgICAgICAgICAg
bGV0IHJlc3VsdCA9IFtdOworICAgICAgICAgICAgbGV0IHNlYXJjaCA9IG5ldyBTZXQoLi4ua2lu
ZHMpOworICAgICAgICAgICAgbGV0IGk7CisgICAgICAgICAgICBmb3IgKGkgPSB0aGlzLl9jb250
cm9sRmxvd1N0YWNrLmxlbmd0aCAtIDE7IGkgPj0gMCAmJiAhc2VhcmNoLmhhcyh0aGlzLl9jb250
cm9sRmxvd1N0YWNrW2ldWzFdKTsgLS1pKQorICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRo
aXMuX2NvbnRyb2xGbG93U3RhY2tbaV1bMF0pOworICAgICAgICAgICAgaWYgKGkgPj0gMCkKKyAg
ICAgICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLl9jb250cm9sRmxvd1N0YWNrW2ldWzBdKTsK
KyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICB2aXNpdE5h
dGl2ZUZ1bmMobm9kZSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVu
dCB0aGlzLgorICAgICAgICB9CisKKyAgICAgICAgdmlzaXRCbG9jayhub2RlKQorICAgICAgICB7
CisgICAgICAgICAgICBzdXBlci52aXNpdEJsb2NrKG5vZGUpOworICAgICAgICAgICAgaWYgKG5v
ZGUubGlzdC5sZW5ndGggPiAwKSB7CisgICAgICAgICAgICAgICAgbGV0IHN0YXRlbWVudCA9IG5v
ZGUuc3RhdGVtZW50c1tub2RlLnN0YXRlbWVudHMubGVuZ3RoIC0gMV07CisgICAgICAgICAgICAg
ICAgbGV0IHZhbHVlR3JhcGhOb2RlID0gdGhpcy5fbG9va3VwKHN0YXRlbWVudCk7CisgICAgICAg
ICAgICAgICAgbGV0IG5ld0dyYXBoTm9kZSA9IHRoaXMuX3JlZ2lzdGVyTmV3R3JhcGhOb2RlKG5v
ZGUpOworICAgICAgICAgICAgICAgIHRoaXMuX2FkZEVkZ2UodmFsdWVHcmFwaE5vZGUsIG5ld0dy
YXBoTm9kZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgdmlzaXRD
b21tYUV4cHJlc3Npb24obm9kZSkKKyAgICAgICAgeworICAgICAgICAgICAgc3VwZXIudmlzaXRD
b21tYUV4cHJlc3Npb24obm9kZSk7CisgICAgICAgICAgICBpZiAobm9kZS5saXN0Lmxlbmd0aCA+
IDApIHsKKyAgICAgICAgICAgICAgICBsZXQgZXhwcmVzc2lvbiA9IG5vZGUubGlzdFtub2RlLmxp
c3QubGVuZ3RoIC0gMV07CisgICAgICAgICAgICAgICAgbGV0IHZhbHVlR3JhcGhOb2RlID0gdGhp
cy5fbG9va3VwKGV4cHJlc3Npb24pOworICAgICAgICAgICAgICAgIGxldCBuZXdHcmFwaE5vZGUg
PSB0aGlzLl9yZWdpc3Rlck5ld0dyYXBoTm9kZShub2RlKTsKKyAgICAgICAgICAgICAgICB0aGlz
Ll9hZGRFZGdlKHZhbHVlR3JhcGhOb2RlLCBuZXdHcmFwaE5vZGUpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgCisgICAgICAgIHZpc2l0RW51bUxpdGVyYWwobm9kZSkKKyAgICAgICAg
eworICAgICAgICAgICAgc3VwZXIudmlzaXRFbnVtTGl0ZXJhbChub2RlKTsKKyAgICAgICAgICAg
IHRoaXMucmVnaXN0ZXJOZXdHcmFwaE5vZGUobm9kZSk7CisgICAgICAgIH0KKworICAgICAgICB2
aXNpdFZhcmlhYmxlRGVjbChub2RlKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBGSVhNRTog
SW1wbGVtZW50IHRoaXMuCisgICAgICAgIH0KKworICAgICAgICB2aXNpdEFzc2lnbm1lbnQobm9k
ZSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAg
ICAgICB9CisKKyAgICAgICAgdmlzaXRSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKG5vZGUpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KKyAgICAgICAg
fQorICAgIAorICAgICAgICB2aXNpdERlcmVmZXJlbmNlRXhwcmVzc2lvbihub2RlKQorICAgICAg
ICB7CisgICAgICAgICAgICBzdXBlci52aXNpdERlcmVmZXJlbmNlRXhwcmVzc2lvbihub2RlKTsK
KyAgICAgICAgICAgIGxldCB2YWx1ZUdyYXBoTm9kZSA9IHRoaXMuX2xvb2t1cChub2RlLnB0cik7
CisgICAgICAgICAgICBsZXQgbmV3R3JhcGhOb2RlID0gdGhpcy5fcmVnaXN0ZXJOZXdHcmFwaE5v
ZGUobm9kZSk7CisgICAgICAgICAgICB0aGlzLl9hZGRFZGdlKHZhbHVlR3JhcGhOb2RlLCBuZXdH
cmFwaE5vZGUpOworICAgICAgICB9CisKKyAgICAgICAgdmlzaXRUZXJuYXJ5RXhwcmVzc2lvbihu
b2RlKQorICAgICAgICB7CisgICAgICAgICAgICBub2RlLnByZWRpY2F0ZS52aXNpdCh0aGlzKTsK
KyAgICAgICAgICAgIGxldCBjb25kaXRpb25hbEdyYXBoTm9kZSA9IHRoaXMuX2xvb2t1cChub2Rl
LnByZWRpY2F0ZSk7CisgICAgICAgICAgICBsZXQgY29udHJvbEZsb3dHcmFwaE5vZGUgPSB0aGlz
Ll9wdXNoQ29udHJvbEZsb3cobm9kZSwgInRlcm5hcnkiKTsKKyAgICAgICAgICAgIHRoaXMuX2Fk
ZEVkZ2UoY29uZGl0aW9uYWxHcmFwaE5vZGUsIGNvbnRyb2xGbG93R3JhcGhOb2RlKTsKKyAgICAg
ICAgICAgIG5vZGUuYm9keUV4cHJlc3Npb24udmlzaXQodGhpcyk7CisgICAgICAgICAgICBub2Rl
LmVsc2VFeHByZXNzaW9uLnZpc2l0KHRoaXMpOworICAgICAgICAgICAgbGV0IHBvcHBlZCA9IHRo
aXMuX3BvcENvbnRyb2xGbG93KCk7CisgICAgICAgICAgICBpZiAoY29udHJvbEZsb3dHcmFwaE5v
ZGUgIT0gcG9wcGVkKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVW5tYXRjaGVk
IHB1c2gvcG9wIGNvbnRyb2wgZmxvdyIpOworICAgICAgICB9CisgICAgCisgICAgICAgIHZpc2l0
RG90RXhwcmVzc2lvbihub2RlKQorICAgICAgICB7CisgICAgICAgICAgICBzdXBlci52aXNpdERv
dEV4cHJlc3Npb24obm9kZSk7CisgICAgICAgICAgICBsZXQgdmFsdWVHcmFwaE5vZGUgPSB0aGlz
Ll9sb29rdXAobm9kZS5zdHJ1Y3QpOworICAgICAgICAgICAgbGV0IG5ld0dyYXBoTm9kZSA9IHRo
aXMuX3JlZ2lzdGVyTmV3R3JhcGhOb2RlKG5vZGUpOworICAgICAgICAgICAgdGhpcy5fYWRkRWRn
ZSh2YWx1ZUdyYXBoTm9kZSwgbmV3R3JhcGhOb2RlKTsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgdmlzaXRJbmRleEV4cHJlc3Npb24obm9kZSkKKyAgICAgICAgeworICAgICAgICAgICAg
c3VwZXIudmlzaXRJbmRleEV4cHJlc3Npb24obm9kZSk7CisgICAgICAgICAgICBsZXQgYXJyYXlH
cmFwaE5vZGUgPSB0aGlzLl9sb29rdXAobm9kZS5hcnJheSk7CisgICAgICAgICAgICBsZXQgaW5k
ZXhHcmFwaE5vZGUgPSB0aGlzLl9sb29rdXAobm9kZS5pbmRleCk7CisgICAgICAgICAgICBsZXQg
bmV3R3JhcGhOb2RlID0gdGhpcy5fcmVnaXN0ZXJOZXdHcmFwaE5vZGUobm9kZSk7CisgICAgICAg
ICAgICB0aGlzLl9hZGRFZGdlKGFycmF5R3JhcGhOb2RlLCBuZXdHcmFwaE5vZGUpOworICAgICAg
ICAgICAgdGhpcy5fYWRkRWRnZShpbmRleEdyYXBoTm9kZSwgbmV3R3JhcGhOb2RlKTsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgdmlzaXRNYWtlUHRyRXhwcmVzc2lvbihub2RlKQorICAg
ICAgICB7CisgICAgICAgICAgICBzdXBlci52aXNpdE1ha2VQdHJFeHByZXNzaW9uKG5vZGUpOwor
ICAgICAgICAgICAgbGV0IHZhbHVlR3JhcGhOb2RlID0gdGhpcy5fbG9va3VwKG5vZGUubFZhbHVl
KTsKKyAgICAgICAgICAgIGxldCBuZXdHcmFwaE5vZGUgPSB0aGlzLl9yZWdpc3Rlck5ld0dyYXBo
Tm9kZShub2RlKTsKKyAgICAgICAgICAgIHRoaXMuX2FkZEVkZ2UodmFsdWVHcmFwaE5vZGUsIG5l
d0dyYXBoTm9kZSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZpc2l0TWFrZUFycmF5
UmVmRXhwcmVzc2lvbihub2RlKQorICAgICAgICB7CisgICAgICAgICAgICBzdXBlci52aXNpdE1h
a2VBcnJheVJlZkV4cHJlc3Npb24obm9kZSk7CisgICAgICAgICAgICBsZXQgdmFsdWVHcmFwaE5v
ZGUgPSB0aGlzLl9sb29rdXAobm9kZS5sVmFsdWUpOworICAgICAgICAgICAgbGV0IG5ld0dyYXBo
Tm9kZSA9IHRoaXMuX3JlZ2lzdGVyTmV3R3JhcGhOb2RlKG5vZGUpOworICAgICAgICAgICAgdGhp
cy5fYWRkRWRnZSh2YWx1ZUdyYXBoTm9kZSwgbmV3R3JhcGhOb2RlKTsKKyAgICAgICAgfQorICAg
IAorICAgICAgICB2aXNpdENvbnZlcnRQdHJUb0FycmF5UmVmRXhwcmVzc2lvbihub2RlKQorICAg
ICAgICB7CisgICAgICAgICAgICBzdXBlci52aXNpdENvbnZlcnRQdHJUb0FycmF5UmVmRXhwcmVz
c2lvbihub2RlKTsKKyAgICAgICAgICAgIGxldCB2YWx1ZUdyYXBoTm9kZSA9IHRoaXMuX2xvb2t1
cChub2RlLmxWYWx1ZSk7CisgICAgICAgICAgICBsZXQgbmV3R3JhcGhOb2RlID0gdGhpcy5fcmVn
aXN0ZXJOZXdHcmFwaE5vZGUobm9kZSk7CisgICAgICAgICAgICB0aGlzLl9hZGRFZGdlKHZhbHVl
R3JhcGhOb2RlLCBuZXdHcmFwaE5vZGUpOworICAgICAgICB9CisKKyAgICAgICAgdmlzaXRWYXJp
YWJsZVJlZihub2RlKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50
IHRoaXMuCisgICAgICAgIH0KKworICAgICAgICB2aXNpdElmU3RhdGVtZW50KG5vZGUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIG5vZGUuY29uZGl0aW9uYWwudmlzaXQodGhpcyk7CisgICAgICAg
ICAgICBsZXQgY29uZGl0aW9uYWxHcmFwaE5vZGUgPSB0aGlzLl9sb29rdXAobm9kZS5jb25kaXRp
b25hbCk7CisgICAgICAgICAgICBsZXQgY29udHJvbEZsb3dHcmFwaE5vZGUgPSB0aGlzLl9wdXNo
Q29udHJvbEZsb3cobm9kZSwgImlmIik7CisgICAgICAgICAgICB0aGlzLl9hZGRFZGdlKGNvbmRp
dGlvbmFsR3JhcGhOb2RlLCBjb250cm9sRmxvd0dyYXBoTm9kZSk7CisgICAgICAgICAgICBub2Rl
LmJvZHkudmlzaXQodGhpcyk7CisgICAgICAgICAgICBOb2RlLnZpc2l0KG5vZGUuZWxzZUJvZHks
IHRoaXMpOworICAgICAgICAgICAgbGV0IHBvcHBlZCA9IHRoaXMuX3BvcENvbnRyb2xGbG93KCk7
CisgICAgICAgICAgICBpZiAoY29udHJvbEZsb3dHcmFwaE5vZGUgIT0gcG9wcGVkKQorICAgICAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVW5tYXRjaGVkIHB1c2gvcG9wIGNvbnRyb2wgZmxv
dyIpOworICAgICAgICB9CisgICAgCisgICAgICAgIHZpc2l0V2hpbGVMb29wKG5vZGUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIG5vZGUuY29uZGl0aW9uYWwudmlzaXQodGhpcyk7CisgICAgICAg
ICAgICBsZXQgY29uZGl0aW9uYWxHcmFwaE5vZGUgPSB0aGlzLl9sb29rdXAobm9kZS5jb25kaXRp
b25hbCk7CisgICAgICAgICAgICBsZXQgY29udHJvbEZsb3dHcmFwaE5vZGUgPSB0aGlzLl9wdXNo
Q29udHJvbEZsb3cobm9kZSwgIndoaWxlIik7CisgICAgICAgICAgICB0aGlzLl9hZGRFZGdlKGNv
bmRpdGlvbmFsR3JhcGhOb2RlLCBjb250cm9sRmxvd0dyYXBoTm9kZSk7CisgICAgICAgICAgICBu
b2RlLmJvZHkudmlzaXQodGhpcyk7CisgICAgICAgICAgICBsZXQgcG9wcGVkID0gdGhpcy5fcG9w
Q29udHJvbEZsb3coKTsKKyAgICAgICAgICAgIGlmIChjb250cm9sRmxvd0dyYXBoTm9kZSAhPSBw
b3BwZWQpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJVbm1hdGNoZWQgcHVzaC9w
b3AgY29udHJvbCBmbG93Iik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZpc2l0RG9X
aGlsZUxvb3Aobm9kZSkKKyAgICAgICAgeworICAgICAgICAgICAgbm9kZS5jb25kaXRpb25hbC52
aXNpdCh0aGlzKTsKKyAgICAgICAgICAgIGxldCBjb25kaXRpb25hbEdyYXBoTm9kZSA9IHRoaXMu
X2xvb2t1cChub2RlLmNvbmRpdGlvbmFsKTsKKyAgICAgICAgICAgIGxldCBjb250cm9sRmxvd0dy
YXBoTm9kZSA9IHRoaXMuX3B1c2hDb250cm9sRmxvdyhub2RlLCAiZG8iKTsKKyAgICAgICAgICAg
IHRoaXMuX2FkZEVkZ2UoY29uZGl0aW9uYWxHcmFwaE5vZGUsIGNvbnRyb2xGbG93R3JhcGhOb2Rl
KTsKKyAgICAgICAgICAgIG5vZGUuYm9keS52aXNpdCh0aGlzKTsKKyAgICAgICAgICAgIGxldCBw
b3BwZWQgPSB0aGlzLl9wb3BDb250cm9sRmxvdygpOworICAgICAgICAgICAgaWYgKGNvbnRyb2xG
bG93R3JhcGhOb2RlICE9IHBvcHBlZCkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IlVubWF0Y2hlZCBwdXNoL3BvcCBjb250cm9sIGZsb3ciKTsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgdmlzaXRGb3JMb29wKG5vZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIE5vZGUu
dmlzaXQobm9kZS5pbml0aWFsaXphdGlvbiwgdGhpcyk7CisgICAgICAgICAgICBOb2RlLnZpc2l0
KG5vZGUuY29uZGl0aW9uLCB0aGlzKTsKKyAgICAgICAgICAgIE5vZGUudmlzaXQobm9kZS5pbmNy
ZW1lbnQsIHRoaXMpOworICAgICAgICAgICAgbGV0IGNvbnRyb2xGbG93R3JhcGhOb2RlID0gdGhp
cy5fcHVzaENvbnRyb2xGbG93KG5vZGUsICJmb3IiKTsKKyAgICAgICAgICAgIGlmIChub2RlLmNv
bmRpdGlvbikgeworICAgICAgICAgICAgICAgIGxldCBjb25kaXRpb25hbEdyYXBoTm9kZSA9IHRo
aXMuX2xvb2t1cChub2RlLmNvbmRpdGlvbik7CisgICAgICAgICAgICAgICAgdGhpcy5fYWRkRWRn
ZShjb25kaXRpb25hbEdyYXBoTm9kZSwgY29udHJvbEZsb3dHcmFwaE5vZGUpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgbm9kZS5ib2R5LnZpc2l0KHRoaXMpOworICAgICAgICAgICAgbGV0
IHBvcHBlZCA9IHRoaXMuX3BvcENvbnRyb2xGbG93KCk7CisgICAgICAgICAgICBpZiAoY29udHJv
bEZsb3dHcmFwaE5vZGUgIT0gcG9wcGVkKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiVW5tYXRjaGVkIHB1c2gvcG9wIGNvbnRyb2wgZmxvdyIpOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICB2aXNpdFN3aXRjaFN0YXRlbWVudChub2RlKQorICAgICAgICB7CisgICAgICAg
ICAgICBub2RlLnZhbHVlLnZpc2l0KHRoaXMpOworICAgICAgICAgICAgbGV0IGNvbmRpdGlvbmFs
R3JhcGhOb2RlID0gdGhpcy5fbG9va3VwKG5vZGUudmFsdWUpOworICAgICAgICAgICAgbGV0IGNv
bnRyb2xGbG93R3JhcGhOb2RlID0gdGhpcy5fcHVzaENvbnRyb2xGbG93KG5vZGUsICJzd2l0Y2gi
KTsKKyAgICAgICAgICAgIHRoaXMuX2FkZEVkZ2UoY29uZGl0aW9uYWxHcmFwaE5vZGUsIGNvbnRy
b2xGbG93R3JhcGhOb2RlKTsKKyAgICAgICAgICAgIGZvciAobGV0IHN3aXRjaENhc2Ugb2Ygbm9k
ZS5zd2l0Y2hDYXNlcykKKyAgICAgICAgICAgICAgICBzd2l0Y2hDYXNlLnZpc2l0KHRoaXMpOwor
ICAgICAgICAgICAgbGV0IHBvcHBlZCA9IHRoaXMuX3BvcENvbnRyb2xGbG93KCk7CisgICAgICAg
ICAgICBpZiAoY29udHJvbEZsb3dHcmFwaE5vZGUgIT0gcG9wcGVkKQorICAgICAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcigiVW5tYXRjaGVkIHB1c2gvcG9wIGNvbnRyb2wgZmxvdyIpOworICAg
ICAgICB9CisKKyAgICAgICAgdmlzaXRSZXR1cm4obm9kZSkKKyAgICAgICAgeworICAgICAgICAg
ICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLiBUaGlzIG5lZWRzIHRvIGJlIG1vZGVsbGVkIGFz
IGFzc2lnbm1lbnRzIHRvIHRoZSByZXR1cm4gdmFsdWUuCisgICAgICAgICAgICBzdXBlci52aXNp
dFJldHVybihub2RlKTsKKyAgICAgICAgICAgIGxldCB2YWx1ZUdyYXBoTm9kZSA9IHRoaXMuX2xv
b2t1cChub2RlLnZhbHVlKTsKKyAgICAgICAgICAgIGxldCBuZXdHcmFwaE5vZGUgPSB0aGlzLl9y
ZWdpc3Rlck5ld0dyYXBoTm9kZShub2RlKTsKKyAgICAgICAgICAgIHRoaXMuX2FkZEVkZ2UodmFs
dWVHcmFwaE5vZGUsIG5ld0dyYXBoTm9kZSk7CisgICAgICAgICAgICBmb3IgKGxldCBjb250cm9s
Rmxvd05vZGUgb2YgX2NvbnRyb2xGbG93R3JhcGhOb2Rlc1VudGlsKCJmdW5jIikpCisgICAgICAg
ICAgICAgICAgdGhpcy5fYWRkRWRnZShuZXdHcmFwaE5vZGUsIGNvbnRyb2xGbG93Tm9kZSk7Cisg
ICAgICAgIH0KKworICAgICAgICB2aXNpdENvbnRpbnVlKG5vZGUpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN1cGVyLnZpc2l0Q29udGludWUobm9kZSk7CisgICAgICAgICAgICBsZXQgbmV3R3Jh
cGhOb2RlID0gdGhpcy5fcmVnaXN0ZXJOZXdHcmFwaE5vZGUobm9kZSk7CisgICAgICAgICAgICBm
b3IgKGxldCBjb250cm9sRmxvd05vZGUgb2YgX2NvbnRyb2xGbG93R3JhcGhOb2Rlc1VudGlsKCJ3
aGlsZSIsICJkbyIsICJmb3IiKSkKKyAgICAgICAgICAgICAgICB0aGlzLl9hZGRFZGdlKG5ld0dy
YXBoTm9kZSwgY29udHJvbEZsb3dOb2RlKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpc2l0QnJl
YWsobm9kZSkKKyAgICAgICAgeworICAgICAgICAgICAgc3VwZXIudmlzaXRCcmVhayhub2RlKTsK
KyAgICAgICAgICAgIGxldCBuZXdHcmFwaE5vZGUgPSB0aGlzLl9yZWdpc3Rlck5ld0dyYXBoTm9k
ZShub2RlKTsKKyAgICAgICAgICAgIGZvciAobGV0IGNvbnRyb2xGbG93Tm9kZSBvZiBfY29udHJv
bEZsb3dHcmFwaE5vZGVzVW50aWwoIndoaWxlIiwgImRvIiwgImZvciIpKQorICAgICAgICAgICAg
ICAgIHRoaXMuX2FkZEVkZ2UobmV3R3JhcGhOb2RlLCBjb250cm9sRmxvd05vZGUpOworICAgICAg
ICB9CisKKyAgICAgICAgdmlzaXRUcmFwU3RhdGVtZW50KG5vZGUpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN1cGVyLnZpc2l0VHJhcFN0YXRlbWVudChub2RlKTsKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIHNlZW1zIHVubmVjZXNzYXJpbHkgcGVzc2ltaXN0aWMuCisgICAgICAgICAgICBs
ZXQgbmV3R3JhcGhOb2RlID0gdGhpcy5fcmVnaXN0ZXJOZXdHcmFwaE5vZGUobm9kZSk7CisgICAg
ICAgICAgICBmb3IgKGxldCBjb250cm9sRmxvd05vZGUgb2YgX2NvbnRyb2xGbG93R3JhcGhOb2Rl
c1VudGlsKCkpCisgICAgICAgICAgICAgICAgdGhpcy5fYWRkRWRnZShuZXdHcmFwaE5vZGUsIGNv
bnRyb2xGbG93Tm9kZSk7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgdmlzaXRHZW5lcmljTGl0
ZXJhbChub2RlKQorICAgICAgICB7CisgICAgICAgICAgICBzdXBlci52aXNpdEdlbmVyaWNMaXRl
cmFsKG5vZGUpOworICAgICAgICAgICAgdGhpcy5yZWdpc3Rlck5ld0dyYXBoTm9kZShub2RlKTsK
KyAgICAgICAgfQorICAgIAorICAgICAgICB2aXNpdE51bGxMaXRlcmFsKG5vZGUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHN1cGVyLnZpc2l0TnVsbExpdGVyYWwobm9kZSk7CisgICAgICAgICAg
ICB0aGlzLnJlZ2lzdGVyTmV3R3JhcGhOb2RlKG5vZGUpOworICAgICAgICB9CisgICAgCisgICAg
ICAgIHZpc2l0Qm9vbExpdGVyYWwobm9kZSkKKyAgICAgICAgeworICAgICAgICAgICAgc3VwZXIu
dmlzaXRCb29sTGl0ZXJhbChub2RlKTsKKyAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJOZXdHcmFw
aE5vZGUobm9kZSk7CisgICAgICAgIH0KKworICAgICAgICB3aWxsQ2FsbChmdW5jKQorICAgICAg
ICB7CisgICAgICAgICAgICBsZXQgcGFyYW1ldGVyR3JhcGhOb2RlcyA9IFtdOworICAgICAgICAg
ICAgdGhpcy5fYXNzaWdubWVudHNTdGFjay5wdXNoKG5ldyBNYXAoKSk7CisgICAgICAgICAgICBm
b3IgKGxldCBwYXJhbWV0ZXIgb2YgZnVuYy5wYXJhbWV0ZXJzKQorICAgICAgICAgICAgICAgIHBh
cmFtZXRlckdyYXBoTm9kZXMuYXBwZW5kKHRoaXMuX3JlZ2lzdGVyTmV3R3JhcGhOb2RlKHBhcmFt
ZXRlcikpOworCisgICAgICAgICAgICBpZiAodGhpcy5fcmVzdWx0LmhhcyhmdW5jKSkKKyAgICAg
ICAgICAgICAgICB0aGlzLl9yZXN1bHQuZ2V0KGZ1bmMpLnB1c2goW3BhcmFtZXRlckdyYXBoTm9k
ZXMsIGFzc2lnbm1lbnRzXSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGhp
cy5fcmVzdWx0LmFkZChmdW5jLCBbcGFyYW1ldGVyR3JhcGhOb2RlcywgYXNzaWdubWVudHNdKTsK
KworICAgICAgICAgICAgcmV0dXJuIGFzc2lnbm1lbnRzOworICAgICAgICB9CisKKyAgICAgICAg
ZGlkQ2FsbChhc3NpZ25tZW50cykKKyAgICAgICAgeworICAgICAgICAgICAgbGV0IHBvcHBlZCA9
IHRoaXMuX2Fzc2lnbm1lbnRzU3RhY2sucG9wKCk7CisgICAgICAgICAgICBpZiAocG9wcGVkICE9
IGFzc2lnbm1lbnRzKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5tYXRjaGVk
IGFzc2lnbm1lbnRzIHB1c2gvcG9wYCk7CisgICAgICAgIH0KKworICAgICAgICB2aXNpdENhbGxF
eHByZXNzaW9uKG5vZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgdGhpcy4gVGhpcyBuZWVkcyB0byBiZSBtb2RlbGxlZCBhcyBhc3NpZ25tZW50cyB0byB0aGUg
cGFyYW1ldGVycy4KKyAgICAgICAgICAgIHN1cGVyLnZpc2l0Q2FsbEV4cHJlc3Npb24obm9kZSk7
CisgICAgICAgICAgICBsZXQgZnVuYyA9IG5vZGUuZnVuYzsKKyAgICAgICAgICAgIHRoaXMuX3B1
c2hDb250cm9sRmxvdyhmdW5jLCAiZnVuYyIpOworICAgICAgICAgICAgbGV0IGFzc2lnbm1lbnRz
ID0gdGhpcy53aWxsQ2FsbChmdW5jKTsKKyAgICAgICAgICAgIGZ1bmMudmlzaXQodGhpcyk7Cisg
ICAgICAgICAgICB0aGlzLmRpZENhbGwoYXNzaWdubWVudHMpOworICAgICAgICB9CisgICAgCisg
ICAgICAgIHZpc2l0TG9naWNhbE5vdChub2RlKQorICAgICAgICB7CisgICAgICAgICAgICBzdXBl
ci52aXNpdExvZ2ljYWxOb3Qobm9kZSk7CisgICAgICAgICAgICBsZXQgdmFsdWVHcmFwaE5vZGUg
PSB0aGlzLl9sb29rdXAobm9kZS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGxldCBuZXdHcmFwaE5v
ZGUgPSB0aGlzLl9yZWdpc3Rlck5ld0dyYXBoTm9kZShub2RlKTsKKyAgICAgICAgICAgIHRoaXMu
X2FkZEVkZ2UodmFsdWVHcmFwaE5vZGUsIG5ld0dyYXBoTm9kZSk7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIHZpc2l0TG9naWNhbEV4cHJlc3Npb24obm9kZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgc3VwZXIudmlzaXRMb2dpY2FsRXhwcmVzc2lvbihub2RlKTsKKyAgICAgICAgICAg
IGxldCBsZWZ0R3JhcGhOb2RlID0gdGhpcy5fbG9va3VwKG5vZGUubGVmdCk7CisgICAgICAgICAg
ICBsZXQgcmlnaHRHcmFwaE5vZGUgPSB0aGlzLl9sb29rdXAobm9kZS5yaWdodCk7CisgICAgICAg
ICAgICBsZXQgbmV3R3JhcGhOb2RlID0gdGhpcy5fcmVnaXN0ZXJOZXdHcmFwaE5vZGUobm9kZSk7
CisgICAgICAgICAgICB0aGlzLl9hZGRFZGdlKGxlZnRHcmFwaE5vZGUsIG5ld0dyYXBoTm9kZSk7
CisgICAgICAgICAgICB0aGlzLl9hZGRFZGdlKHJpZ2h0R3JhcGhOb2RlLCBuZXdHcmFwaE5vZGUp
OworICAgICAgICB9CisgICAgCisgICAgICAgIHZpc2l0QW5vbnltb3VzVmFyaWFibGUobm9kZSkK
KyAgICAgICAgeworICAgICAgICAgICAgLy8gVXNlZCB3aXRoIFJlYWRNb2RpZnlXcml0ZUV4cHJl
c3Npb24KKyAgICAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgdmlzaXRJZGVudGl0eUV4cHJlc3Npb24obm9kZSkKKyAgICAgICAg
eworICAgICAgICAgICAgc3VwZXIudmlzaXRJZGVudGl0eUV4cHJlc3Npb24obm9kZSk7CisgICAg
ICAgICAgICBsZXQgdmFsdWVHcmFwaE5vZGUgPSB0aGlzLl9sb29rdXAobm9kZS50YXJnZXQpOwor
ICAgICAgICAgICAgbGV0IG5ld0dyYXBoTm9kZSA9IHRoaXMuX3JlZ2lzdGVyTmV3R3JhcGhOb2Rl
KG5vZGUpOworICAgICAgICAgICAgdGhpcy5fYWRkRWRnZSh2YWx1ZUdyYXBoTm9kZSwgbmV3R3Jh
cGhOb2RlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIHBvbGx1dGUoZWRnZXMs
IGdyYXBoTm9kZSkKKyAgICB7CisgICAgICAgIGxldCByZXN1bHQgPSBuZXcgU2V0KCk7CisgICAg
ICAgIGxldCB3b3JrTGlzdCA9IFtncmFwaE5vZGVdOworICAgICAgICB3aGlsZSAod29ya0xpc3Qu
bGVuZ3RoICE9IDApIHsKKyAgICAgICAgICAgIGxldCB3b3JrSXRlbSA9IHdvcmtMaXN0LnNoaWZ0
KCk7CisgICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXMod29ya0l0ZW0pKSB7CisgICAgICAgICAg
ICAgICAgcmVzdWx0LmFkZCh3b3JrSXRlbSk7CisgICAgICAgICAgICAgICAgaWYgKGVkZ2VzLmhh
cyh3b3JrSXRlbSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgYWRqYWNlbnROb2Rl
IG9mIGVkZ2VzLmdldCh3b3JrSXRlbSkpCisgICAgICAgICAgICAgICAgICAgICAgICB3b3JrTGlz
dC5wdXNoKGFkamFjZW50Tm9kZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgZnVuY3Rpb24g
c2V0VW5pb24oYSwgYikKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgU2V0KFsuLi5hLCAuLi5i
XSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gbm9uVW5pZm9ybVBhcmFtZXRlckluZGljZXMoZnVu
YykKKyAgICB7CisgICAgICAgIGxldCByZXN1bHQgPSBbXTsKKyAgICAgICAgbGV0IGVudHJ5UG9p
bnRQYXJhbWV0ZXJzID0gZ2F0aGVyRW50cnlQb2ludFBhcmFtZXRlcnMoZnVuYyk7CisgICAgICAg
IC8vIEZJWE1FOiBUaGlzIGNhbiBiZSBPKG4pIGJlY2F1c2UgZW50cnlQb2ludFBhcmFtZXRlcnMg
c2hvdWxkIGJlIHNvcnRlZC4KKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmdW5jLnBhcmFt
ZXRlcnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGxldCBpc1VuaWZvcm0gPSB0cnVlOwor
ICAgICAgICAgICAgZm9yIChsZXQgZW50cnlQb2ludFBhcmFtZXRlciBvZiBlbnRyeVBvaW50UGFy
YW1ldGVycykgeworICAgICAgICAgICAgICAgIGlmIChlbnRyeVBvaW50UGFyYW1ldGVyLmluZGV4
ID09IGkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKChlbnRyeVBvaW50UGFyYW1ldGVyLnNl
bWFudGljIGluc3RhbmNlb2YgUmVzb3VyY2VTZW1hbnRpYyAmJiAoISh0eXBlIGluc3RhbmNlb2Yg
UmVmZXJlbmNlVHlwZSkgfHwgdHlwZS5hZGRyZXNzU3BhY2UgIT0gImNvbnN0YW50IikpCisgICAg
ICAgICAgICAgICAgICAgICAgICB8fCAoZW50cnlQb2ludFBhcmFtZXRlci5zZW1hbnRpYyBpbnN0
YW5jZW9mIEJ1aWx0SW5TZW1hbnRpYykKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IChlbnRy
eVBvaW50UGFyYW1ldGVyLnNlbWFudGljIGluc3RhbmNlb2YgU3RhZ2VJbk91dFNlbWFudGljKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgaXNVbmlmb3JtID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghaXNVbmlmb3JtKQorICAgICAg
ICAgICAgICAgIHJlc3VsdC5wdXNoKGkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfQorCisgICAgZnVuY3Rpb24gbWFwUGllY2UocGllY2UsIHVuaWZvcm1pdHlDYWxs
YmFjaykKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIG1hcEFzc2lnbm1lbnRzKGFzc2lnbm1lbnRz
KQorICAgICAgICB7CisgICAgICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IE1hcCgpOworICAgICAg
ICAgICAgZm9yIChsZXQgW2FzdE5vZGUsIHZhbHVlXSBvZiBhc3NpZ25tZW50cykgeworICAgICAg
ICAgICAgICAgIGxldCBtYXBwZWRWYWx1ZTsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUgaW5z
dGFuY2VvZiBBcnJheSkKKyAgICAgICAgICAgICAgICAgICAgbWFwcGVkVmFsdWUgPSB2YWx1ZS5t
YXAodW5pZm9ybWl0eUNhbGxiYWNrKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgIG1hcHBlZFZhbHVlID0gdW5pZm9ybWl0eUNhbGxiYWNrKHZhbHVlKTsKKyAgICAg
ICAgICAgICAgICByZXN1bHQuc2V0KGFzdE5vZGUsIG1hcHBlZFZhbHVlKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICAgbGV0
IHJlc3VsdCA9IG5ldyBNYXAoKTsKKyAgICAgICAgIGZvciAobGV0IFtmdW5jLCBwYXJhbWV0ZXJB
c3NpZ25tZW50c10gb2YgcGllY2UpIHsKKyAgICAgICAgICAgIGxldCByZXN1bHRQYXJhbWV0ZXJB
c3NpZ25tZW50cyA9IFtdOworICAgICAgICAgICAgZm9yIChsZXQgW3BhcmFtZXRlck5vZGVzLCBh
c3NpZ25tZW50c10gb2YgcGFyYW1ldGVyQXNzaWdubWVudHMpIHsKKyAgICAgICAgICAgICAgICBs
ZXQgYm9vbGVhblBhcmFtZXRlck5vZGVzID0gcGFyYW1ldGVyTm9kZXMubWFwKHVuaWZvcm1pdHlD
YWxsYmFjayk7CisgICAgICAgICAgICAgICAgbGV0IGJvb2xlYW5Bc3NpZ25tZW50cyA9IG1hcEFz
c2lnbm1lbnRzKGFzc2lnbm1lbnRzKTsKKyAgICAgICAgICAgICAgICByZXN1bHRQYXJhbWV0ZXJB
c3NpZ25tZW50cy5wdXNoKFtib29sZWFuUGFyYW1ldGVyTm9kZXMsIGJvb2xlYW5Bc3NpZ25tZW50
c10pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVzdWx0LnNldChmdW5jLCByZXN1bHRQ
YXJhbWV0ZXJBc3NpZ25tZW50cyk7CisgICAgICAgICB9CisgICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrVW5pZm9ybWl0eShwaWVjZSkKKyAgICB7Cisg
ICAgICAgIGNsYXNzIFVuaWZvcm1pdHlDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CisgICAgICAg
ICAgICBjb25zdHJ1Y3Rvcihhc3NpZ25tZW50cykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBzdXBlcigpOworICAgICAgICAgICAgICAgIHRoaXMuX2Fzc2lnbm1lbnRzID0gYXNzaWdu
bWVudHM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2aXNpdFZhcmlhYmxlRGVjbChub2Rl
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN1cGVyLnZpc2l0VmFyaWFibGVEZWNs
KG5vZGUpOworICAgICAgICAgICAgICAgIGlmICghdGhpcy5fYXNzaWdubWVudHMuaGFzKG5vZGUp
KQorICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYERvbid0IGhhdmUgYSB1bmlm
b3JtaXR5IGFzc2lnbm1lbnQgZm9yICR7bm9kZX1gKTsKKyAgICAgICAgICAgICAgICBpZiAoIXRo
aXMuX2Fzc2lnbm1lbnRzLmdldChub2RlKSAmJiBub2RlLnVuaWZvcm1pdHkgPT0gInVuaWZvcm0i
KQorICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihub2RlLm9yaWdpbi5v
cmlnaW5TdHJpbmcsICJWYXJpYWJsZSBkZWNsYXJhdGlvbiBpcyBtYXJrZWQgdW5pZm9ybSwgYnV0
IGl0IHdhcyBpbmZlcnJlZCB0byBiZSBhIG5vbi11bmlmb3JtIHZhbHVlIik7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgZm9yIChsZXQgW2Z1bmMsIHBhcmFtZXRlckFzc2lnbm1l
bnRzXSBvZiBwaWVjZSkgeworICAgICAgICAgICAgZm9yIChsZXQgW3BhcmFtZXRlck5vZGVzLCBh
c3NpZ25tZW50c10gb2YgcGFyYW1ldGVyQXNzaWdubWVudHMpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoZnVuYy5wYXJhbWV0ZXJzLmxlbmd0aCAhPSBwYXJhbWV0ZXJOb2Rlcy5sZW5ndGgpCisgICAg
ICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVW5pZm9ybWl0eSBpbmZlcmVuY2UgbGVu
Z3RoIGRvZXNuJ3QgbWF0Y2ggcGFyYW1ldGVyIGxlbmd0aCIpOworICAgICAgICAgICAgICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgcGFyYW1ldGVyTm9kZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCFwYXJhbWV0ZXJOb2Rlc1tpXSAmJiBmdW5jLnBhcmFtZXRlcnNbaV0u
dW5pZm9ybWl0eSA9PSAidW5pZm9ybSIpCisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBu
ZXcgV1R5cGVFcnJvcihmdW5jLnBhcmFtZXRlcnNbaV0ub3JpZ2luLm9yaWdpblN0cmluZywgIlBh
cmFtZXRlciBpcyBtYXJrZWQgdW5pZm9ybSwgYnV0IGl0IHdhcyBpbmZlcnJlZCB0byBiZSBhIG5v
bi11bmlmb3JtIHZhbHVlIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZ1
bmMudmlzaXQobmV3IFVuaWZvcm1pdHlDaGVja2VyKGFzc2lnbm1lbnRzKSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBpbnNlcnRJbnRvUmVzdWx0KHJl
c3VsdCwgcGllY2UpCisgICAgeworICAgICAgICBmdW5jdGlvbiBmaW5kSW5kZXgobmVlZGxlLCBo
YXlzdGFjaywgZnVuYykKKyAgICAgICAgeworICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCBoYXlzdGFjay5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIGxldCBbcGFyYW1ldGVy
Tm9kZXMsIGFzc2lnbm1lbnRzXSA9IGhheXN0YWNrW2ldOworICAgICAgICAgICAgICAgIGlmIChw
YXJhbWV0ZXJOb2Rlcy5sZW5ndGggIT0gbmVlZGxlLmxlbmd0aCkKKyAgICAgICAgICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKGBGdW5jdGlvbiAke2Z1bmMubmFtZX0gY2FuJ3QgaGF2ZSBib3Ro
ICR7cGFyYW1ldGVyTm9kZXMubGVuZ3RofSBhbmQgJHtuZWVkbGUubGVuZ3RofSBhcmd1bWVudHNg
KTsKKyAgICAgICAgICAgICAgICBsZXQgbWF0Y2ggPSB0cnVlOworICAgICAgICAgICAgICAgIGZv
ciAobGV0IGogPSAwOyBqIDwgcGFyYW1ldGVyTm9kZXMubGVuZ3RoOyArK2opIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHBhcmFtZXRlck5vZGVzW2pdICE9IG5lZWRsZVtqXSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGlmIChtYXRjaCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0Fzc2lnbm1lbnRzKGEsIGIsIGZ1bmMpIHsKKyAgICAgICAgICAgIGZ1bmN0
aW9uIGNoZWNrKGEsIGIpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBbYXN0Tm9kZSwgdmFs
dWVdIG9mIGEpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFiLmhhcyhhc3ROb2RlKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRGlmZmVyZW50IHNldCBvZiBu
b2RlcyBpbiBmdW5jdGlvbiAke2Z1bmMubmFtZX1gKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0
IGJWYWx1ZSA9IGIuZ2V0KGFzdE5vZGUpOworICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUg
aW5zdGFuY2VvZiBBcnJheSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoYlZhbHVl
IGluc3RhbmNlb2YgQXJyYXkpIHx8IHZhbHVlLmxlbmd0aCAhPSBiVmFsdWUubGVuZ3RoKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTm9kZSB1bmlmb3JtaXR5
IHNoYXBlIGRvZXNudCBtYXRjaCBmb3Igbm9kZSAke2FzdE5vZGV9YCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgKytpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlW2ldICE9IGJWYWx1ZVtpXSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBEaWZmZXJlbnQgYXNz
aWdubWVudCBmb3Igbm9kZSAke2FzdE5vZGV9YCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAodmFsdWUgIT0gYlZhbHVlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcihgRGlmZmVyZW50IGFzc2lnbm1lbnQgZm9yIG5vZGUgJHthc3ROb2RlfWApOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgY2hlY2soYSwgYik7CisgICAgICAgICAgICBjaGVjayhiLCBhKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZvciAobGV0IFtmdW5jLCBwaWVjZVBhcmFtZXRlckFzc2lnbm1lbnRzXSBv
ZiBwaWVjZSkgeworICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXMoZnVuYykpIHsKKyAgICAgICAg
ICAgICAgICBsZXQgcmVzdWx0UGFyYW1ldGVyQXNzaWdubWVudHMgPSByZXN1bHQuZ2V0KGZ1bmMp
OworICAgICAgICAgICAgICAgIGZvciAobGV0IFtwaWVjZVBhcmFtZXRlck5vZGVzLCBwaWVjZUFz
c2lnbm1lbnRzXSBvZiBwaWVjZVBhcmFtZXRlckFzc2lnbm1lbnRzKSB7CisgICAgICAgICAgICAg
ICAgICAgIGxldCBpbmRleCA9IGZpbmRJbmRleChwaWVjZVBhcmFtZXRlck5vZGVzLCByZXN1bHRQ
YXJhbWV0ZXJBc3NpZ25tZW50cywgZnVuYyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpbmRl
eCA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRQYXJhbWV0ZXJBc3NpZ25tZW50
cy5wdXNoKFtwaWVjZVBhcmFtZXRlck5vZGVzLCBwaWVjZUFzc2lnbm1lbnRzXSk7CisgICAgICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrQXNzaWdubWVu
dHMocGllY2VQYXJhbWV0ZXJOb2RlcywgcmVzdWx0UGFyYW1ldGVyQXNzaWdubWVudHNbaW5kZXhd
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAg
ICByZXN1bHQuc2V0KGZ1bmMsIHBpZWNlUGFyYW1ldGVyQXNzaWdubWVudHMpOworICAgICAgICB9
CisgICAgfQorCisgICAgbGV0IHJlc3VsdCA9IG5ldyBNYXAoKTsgLy8gRnVuY0RlZiA9PiBbKFti
b29sXSwgQVNUTm9kZSA9PiAoYm9vbCBvciBbYm9vbF0pKV0KKyAgICBmb3IgKGxldCBmdW5jdGlv
bnMgaW4gcHJvZ3JhbS5mdW5jdGlvbnMudmFsdWVzKCkpIHsKKyAgICAgICAgZm9yIChsZXQgZnVu
YyBpbiBmdW5jdGlvbnMpIHsKKyAgICAgICAgICAgIGlmIChmdW5jLnNoYWRlclR5cGUpIHsKKyAg
ICAgICAgICAgICAgICBsZXQgZ3JhcGhCdWlsZGVyID0gbmV3IEdyYXBoQnVpbGRlcihmdW5jKTsK
KyAgICAgICAgICAgICAgICBsZXQgYXNzaWdubWVudHMgPSBncmFwaEJ1aWxkZXIud2lsbENhbGwo
ZnVuYyk7CisgICAgICAgICAgICAgICAgZnVuYy52aXNpdChncmFwaEJ1aWxkZXIpOworICAgICAg
ICAgICAgICAgIGdyYXBoQnVpbGRlci5kaWRDYWxsKGFzc2lnbm1lbnRzKTsKKworICAgICAgICAg
ICAgICAgIGxldCBlZGdlcyA9IGdyYXBoQnVpbGRlci5lZGdlczsKKyAgICAgICAgICAgICAgICBs
ZXQgbm9uVW5pZm9ybUdyYXBoTm9kZXMgPSBuZXcgU2V0KCk7CisgICAgICAgICAgICAgICAgZm9y
IChsZXQgbm9uVW5pZm9ybVBhcmFtZXRlckluZGV4IG9mIG5vblVuaWZvcm1QYXJhbWV0ZXJJbmRp
Y2VzKGZ1bmMpKQorICAgICAgICAgICAgICAgICAgICBub25Vbmlmb3JtR3JhcGhOb2RlcyA9IHNl
dFVuaW9uKG5vblVuaWZvcm1HcmFwaE5vZGVzLCBwb2xsdXRlKGVkZ2VzLCBhc3NpZ25tZW50cy5n
ZXQoZnVuYy5wYXJhbWV0ZXJzW2ldKSkpOworCisgICAgICAgICAgICAgICAgbGV0IHNvbHZlZFBp
ZWNlID0gbWFwUGllY2UoZ3JhcGhCdWlsZGVyLnJlc3VsdCwgZ3JhcGhOb2RlID0+ICFub25Vbmlm
b3JtR3JhcGhOb2Rlcy5oYXMoZ3JhcGhOb2RlKSk7CisgICAgICAgICAgICAgICAgY2hlY2tVbmlm
b3JtaXR5KHNvbHZlZFBpZWNlKTsKKyAgICAgICAgICAgICAgICBpbnNlcnRJbnRvUmVzdWx0KHJl
c3VsdCwgZ3JhcGhCdWlsZGVyLnJlc3VsdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1ZhcmlhYmxlRGVjbC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1ZhcmlhYmxlRGVjbC5qcwppbmRleCA3NjhmOGJhYWFkM2I4MmQ0YzM1MTdlYjcxYjJiZWE0
OWE3ZWVkODFkLi44Y2YzZDAxMzNiNGFhOGQ3NmVhZDZmOGUwOGVjYWJjODhkOGU5OTMxIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WYXJpYWJsZURlY2wuanMKKysr
IGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmFyaWFibGVEZWNsLmpzCkBAIC0yNSwy
NCArMjUsMzIgQEAKICJ1c2Ugc3RyaWN0IjsKIAogY2xhc3MgVmFyaWFibGVEZWNsIGV4dGVuZHMg
VmFsdWUgewotICAgIGNvbnN0cnVjdG9yKG9yaWdpbiwgbmFtZSwgdHlwZSwgaW5pdGlhbGl6ZXIp
CisgICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lLCB0eXBlLCBpbml0aWFsaXplciA9IG51bGws
IHVuaWZvcm1pdHkgPSBudWxsKQogICAgIHsKICAgICAgICAgc3VwZXIoKTsKICAgICAgICAgdGhp
cy5fb3JpZ2luID0gb3JpZ2luOwogICAgICAgICB0aGlzLl9uYW1lID0gbmFtZTsKICAgICAgICAg
dGhpcy5fdHlwZSA9IHR5cGU7CiAgICAgICAgIHRoaXMuX2luaXRpYWxpemVyID0gaW5pdGlhbGl6
ZXI7CisgICAgICAgIHRoaXMuX3VuaWZvcm1pdHkgPSB1bmlmb3JtaXR5OwogICAgIH0KICAgICAK
ICAgICBnZXQgb3JpZ2luKCkgeyByZXR1cm4gdGhpcy5fb3JpZ2luOyB9CiAgICAgZ2V0IG5hbWUo
KSB7IHJldHVybiB0aGlzLl9uYW1lOyB9CiAgICAgZ2V0IHR5cGUoKSB7IHJldHVybiB0aGlzLl90
eXBlOyB9CiAgICAgZ2V0IGluaXRpYWxpemVyKCkgeyByZXR1cm4gdGhpcy5faW5pdGlhbGl6ZXI7
IH0KKyAgICBnZXQgdW5pZm9ybWl0eSgpIHsgcmV0dXJuIHRoaXMuX3VuaWZvcm1pdHk7IH0KICAg
ICBnZXQgdmFySXNMVmFsdWUoKSB7IHJldHVybiB0cnVlOyB9CiAgICAgCiAgICAgdG9TdHJpbmco
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudHlwZSArICIgIiArIHRoaXMubmFtZSArICh0
aGlzLmluaXRpYWxpemVyID8gIiA9ICIgKyB0aGlzLmluaXRpYWxpemVyIDogIiIpOworICAgICAg
ICBsZXQgcmVzdWx0ID0gIiI7CisgICAgICAgIGlmICh0aGlzLnVuaWZvcm1pdHkpCisgICAgICAg
ICAgICByZXN1bHQgKz0gYCR7dW5pZm9ybWl0eX0gYDsKKyAgICAgICAgcmVzdWx0ICs9IGAke3Ro
aXMudHlwZX0gJHt0aGlzLm5hbWV9YDsKKyAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZXIpCisg
ICAgICAgICAgICByZXN1bHQgKz0gYCA9ICR7dGhpcy5pbml0aWFsaXplcn1gOworICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvVmlzaXRvci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zp
c2l0b3IuanMKaW5kZXggNGVhMWI5ZWU0ZmEwNGQwYTUzZWY2ZTJiMDVhYTUzOGRlODNmMmZhZC4u
NTRmNDQ0ZmQzMTA5ZmNhZDVhMTQzZWFmMjU3MTEyMWM3Yjg4M2Y4OSAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcworKysgYi9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9yLmpzCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIFZpc2l0
b3IgewogICAgIHZpc2l0RnVuY1BhcmFtZXRlcihub2RlKQogICAgIHsKICAgICAgICAgbm9kZS50
eXBlLnZpc2l0KHRoaXMpOworICAgICAgICBOb2RlLnZpc2l0KG5vZGUucXVhbGlmaWVycywgdGhp
cyk7CiAgICAgICAgIE5vZGUudmlzaXQobm9kZS5zZW1hbnRpYywgdGhpcyk7CiAgICAgfQogICAg
IApAQCAtOTgsNiArOTksNyBAQCBjbGFzcyBWaXNpdG9yIHsKICAgICB2aXNpdEZpZWxkKG5vZGUp
CiAgICAgewogICAgICAgICBub2RlLnR5cGUudmlzaXQodGhpcyk7CisgICAgICAgIE5vZGUudmlz
aXQobm9kZS5xdWFsaWZpZXJzLCB0aGlzKTsKICAgICAgICAgTm9kZS52aXNpdChub2RlLnNlbWFu
dGljLCB0aGlzKTsKICAgICB9CiAgICAgCkBAIC0zNzQsNSArMzc2LDkgQEAgY2xhc3MgVmlzaXRv
ciB7CiAgICAgdmlzaXRTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMobm9kZSkKICAgICB7
CiAgICAgfQorCisgICAgdmlzaXRRdWFsaWZpZXJzKG5vZGUpCisgICAgeworICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvaW5kZXguaHRtbCBiL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWwKaW5kZXggZThkODM1OGRmZjk2
OTZmMmRiZGU0MmY1ZDYxMzdhMTU5YzE5M2Q0Mi4uZGUwZDdmM2E3ODViMGY1N2NkYzA1M2M3NjAw
ZWU5ZGE5NGYwNGFmNSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
aW5kZXguaHRtbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1s
CkBAIC01NSw2ICs1NSw3IEBACiA8c2NyaXB0IHNyYz0iRUJ1ZmZlci5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0iRUJ1ZmZlckJ1aWxkZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkVQ
dHIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkVudHJ5UG9pbnRQYXJhbWV0ZXJHYXRoZXJl
ci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iRW51bUxpdGVyYWwuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9IkVudW1NZW1iZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkVudW1U
eXBlLmpzIj48L3NjcmlwdD4KQEAgLTExMiw2ICsxMTMsNyBAQAogPHNjcmlwdCBzcmM9IlByb2dy
YW0uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlByb2dyYW1XaXRoVW5uZWNlc3NhcnlUaGlu
Z3NSZW1vdmVkLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJQdHJUeXBlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJRdWFsaWZpZXJzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJS
ZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJSZWN1
cnNpb25DaGVja2VyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJSZWN1cnNpdmVUeXBlQ2hl
Y2tlci5qcyI+PC9zY3JpcHQ+CkBAIC0xNDksNiArMTUxLDcgQEAKIDxzY3JpcHQgc3JjPSJVaW50
TGl0ZXJhbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iVWludExpdGVyYWxUeXBlLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJVbmlmaWNhdGlvbkNvbnRleHQuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9IlVuaWZvcm1pdHlDaGVja2VyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3Jj
PSJVbnJlYWNoYWJsZUNvZGVDaGVja2VyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJWYXJp
YWJsZURlY2wuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlZhcmlhYmxlUmVmLmpzIj48L3Nj
cmlwdD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>