<?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>22433</bug_id>
          
          <creation_ts>2008-11-22 22:42:49 -0800</creation_ts>
          <short_desc>Make selection rect-related methods |const|, disambiguate RenderView::selectionRect()</short_desc>
          <delta_ts>2008-11-24 12:24:00 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>adele</cc>
    
    <cc>darin</cc>
    
    <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>99815</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-11-22 22:42:49 -0800</bug_when>
    <thetext>While spelunking in the selection code, I noticed a bunch of methods that should be |const|, but were not. I also noticed some instances of virtual methods of the same name, but differing constness (which changes the signature, meaning that they don&apos;t override correctly).

I&apos;ll attach a patch, and a script that helps with finding methods that intend to override virtual methods, but have mismatched constness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99816</commentid>
    <comment_count>1</comment_count>
      <attachid>25392</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-11-22 22:43:25 -0800</bug_when>
    <thetext>Created attachment 25392
Perl script that looks for possible const mismatches</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99817</commentid>
    <comment_count>2</comment_count>
      <attachid>25393</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-11-22 22:44:18 -0800</bug_when>
    <thetext>Created attachment 25393
Output of above perl script</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99862</commentid>
    <comment_count>3</comment_count>
      <attachid>25408</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-11-23 19:54:09 -0800</bug_when>
    <thetext>Created attachment 25408
Patch to make lots of methods const, changelog

Issue caught by the script that this patch fixes:

Both const and non-const versions of selectionRect(bool):
	RenderObject::selectionRect(bool)
...
	RenderView::selectionRect(bool) const</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99864</commentid>
    <comment_count>4</comment_count>
      <attachid>25408</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-23 20:04:44 -0800</bug_when>
    <thetext>Comment on attachment 25408
Patch to make lots of methods const, changelog

My general take on this is that const doesn&apos;t work well for objects in trees such as RenderObject* and Node* and InlineBox*. Since you&apos;re walking the tree so often, it&apos;s not so useful to make a distinction and say you have a &quot;const&quot; pointer, but then have a non-const pointer to the children and parent of the node. And it&apos;s equally non-useful to treat the entire tree as const.

I was going to suggest eliminating const entirely from those classes.

Making const consistent and &quot;fan out&quot; correctly is also OK. But next time around we might want to consider eliminating the use of const from these tree node families of classes.

I suspect that there were no callers of the virtual RenderObject::selectionRect that actually wanted the RenderView::selectionRect function, and in fact by making the RenderView one override the RenderObject one we might even have introduced some sort of problem. Maybe these two functions should have different names. If the old behavior was wrong there must have been a symptom. I&apos;d really like to know what it was and maybe even make a regression test for it.

Normally we prefer to declare virtual functions virtual explicitly and it&apos;s telling that RenderView&apos;s definition doesn&apos;t declare selectionRect virtual explicitly. Maybe it should now that it&apos;s overriding a virtual function -- it wasn&apos;t before.

Would you consider checking in the perl script too?

I&apos;m going to say r=me despite these comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99881</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-11-23 22:27:23 -0800</bug_when>
    <thetext>RenderView&apos;s selectionRect() has been const back since it was RenderCanvas, and has mismatched RenderObject&apos;s since as far as I could dig (thwarted by file moves at some point).

The only place I can see that may call RenderView::selectionRect() through a base class pointer is the SelectionInfo(RenderObject*, bool) ctor. I added a printf, but never hit it during the layout tests, and I doubt that it can ever get called with a RenderView.

This would argue for renaming RenderView&apos;s (and Frame&apos;s) selectionRect() to avoid the ambiguity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99884</commentid>
    <comment_count>6</comment_count>
      <attachid>25413</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-11-23 22:48:15 -0800</bug_when>
    <thetext>Created attachment 25413
Path to rename selectionRect on RenderView to avoid ambiguity.

Here&apos;s an option for removing the selectionRect() ambiguity: rename RenderView::selectionRect() to RenderView::selectionBounds(), and same on Frame. We could then implement RenderView::selectionRect() and ASSERT if it gets called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99987</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-11-24 10:37:07 -0800</bug_when>
    <thetext>Script committed in 
r38711 = e149b8957b22cda7753ce635057267527cee0532 (trunk)
	M	WebKitTools/ChangeLog
	A	WebKitTools/Scripts/detect-mismatched-virtual-const
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99999</commentid>
    <comment_count>8</comment_count>
      <attachid>25408</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-11-24 11:27:16 -0800</bug_when>
    <thetext>Comment on attachment 25408
Patch to make lots of methods const, changelog

I think we&apos;ve decided that we don&apos;t want const creep here. Will address the RenderView::selectionRect() issue in an upcoming patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100000</commentid>
    <comment_count>9</comment_count>
      <attachid>25413</attachid>
    <who name="">mitz</who>
    <bug_when>2008-11-24 11:27:22 -0800</bug_when>
    <thetext>Comment on attachment 25413
Path to rename selectionRect on RenderView to avoid ambiguity.

I think this is the right thing to do, but I wish there was a better name for the RenderView method. You can change this to r? if you can&apos;t think of one, or otherwise upload a new patch with the new name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100003</commentid>
    <comment_count>10</comment_count>
      <attachid>25413</attachid>
    <who name="">mitz</who>
    <bug_when>2008-11-24 11:32:46 -0800</bug_when>
    <thetext>Comment on attachment 25413
Path to rename selectionRect on RenderView to avoid ambiguity.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100007</commentid>
    <comment_count>11</comment_count>
      <attachid>25413</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-11-24 11:58:23 -0800</bug_when>
    <thetext>Comment on attachment 25413
Path to rename selectionRect on RenderView to avoid ambiguity.

Committed r38716
	M	WebKit/mac/ChangeLog
	M	WebKit/mac/WebView/WebHTMLView.mm
	M	WebCore/editing/SelectionController.cpp
	M	WebCore/ChangeLog
	M	WebCore/WebCore.base.exp
	M	WebCore/page/mac/FrameMac.mm
	M	WebCore/page/Frame.h
	M	WebCore/page/DragController.cpp
	M	WebCore/page/Frame.cpp
	M	WebCore/rendering/RenderView.cpp
	M	WebCore/rendering/RenderView.h
r38716 = c3a23de1c179af0d729bc78c9ca513713aa4aed6 (trunk)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100012</commentid>
    <comment_count>12</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-11-24 12:24:00 -0800</bug_when>
    <thetext>Filed bug 22461 on the one remaining genuine &apos;const&apos; mismatch.
Filed bug 22462 general &apos;const&apos; cleanup unrelated to virtual method mismatch.

Work for this bug is done.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>25392</attachid>
            <date>2008-11-22 22:43:25 -0800</date>
            <delta_ts>2008-11-22 22:43:25 -0800</delta_ts>
            <desc>Perl script that looks for possible const mismatches</desc>
            <filename>virtual-signatures.pl</filename>
            <type>text/plain</type>
            <size>2316</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">IyEvdXNyL2Jpbi9wZXJsCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cm5vIHdhcm5pbmdzIHF3
IC9zeW50YXgvOwoKCm15ICRmaWxlID0gJEFSR1ZbMF07CgpwcmludCAiTG9va2luZyBmb3IgdW5t
YXRjaGVkIGNvbnN0IG1ldGhvZHMgaW4gJGZpbGVcbiI7CgppZiAoIW9wZW4gTk0sICIobm0gJyRm
aWxlJyB8IGMrK2ZpbHQgfCBzZWQgJ3MvXi9TVERPVVQ6LycpIDI+JjEgfCIpIHsKICAgIGRpZSAi
Q291bGQgbm90IG9wZW4gJGZpbGVcbiI7Cn0KCm15ICRuZXN0ZWRQYXJlbnM7CiAgICRuZXN0ZWRQ
YXJlbnMgPSBxciAvCiAgICAgICAgICAgICAgICAgICAgICBbKF0KICAgICAgICAgICAgICAgICAg
ICAgIFteKCldKgogICAgICAgICAgICAgICAgICAgICAgICAoPzoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAoPz97ICRuZXN0ZWRQYXJlbnMgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICBb
XigpXSoKICAgICAgICAgICAgICAgICAgICAgICAgKSoKICAgICAgICAgICAgICAgICAgICAgIFsp
XS94OwoKbXkgJG5lc3RlZEFuZ2xlQnJhY2tldHM7CiAgICRuZXN0ZWRBbmdsZUJyYWNrZXRzID0g
cXIgLwogICAgICAgICAgICAgICAgICAgICAgWzxdCiAgICAgICAgICAgICAgICAgICAgICBbXjw+
XSoKICAgICAgICAgICAgICAgICAgICAgICAgKD86CiAgICAgICAgICAgICAgICAgICAgICAgICAg
KD8/eyAkbmVzdGVkQW5nbGVCcmFja2V0cyB9KQogICAgICAgICAgICAgICAgICAgICAgICAgIFte
PD5dKgogICAgICAgICAgICAgICAgICAgICAgICApKgogICAgICAgICAgICAgICAgICAgICAgWz5d
L3g7CgpteSAkYmFsOwogICAkYmFsID0gcXIgLyhbXjpdKwogICAgICAgICAgICAgICg/P3sgJG5l
c3RlZEFuZ2xlQnJhY2tldHMgfSk/CiAgICAgICAgICAgICAgKD8/eyAkbmVzdGVkUGFyZW5zIH0p
KQogICAgICAgICAgICAgIChbXigpXSopJC94OwoKbXkgJXNpZ25hdHVyZV9tYXAgPSAoKTsKCndo
aWxlICg8Tk0+KSB7CiAgbXkgJGxpbmUgPSAkXzsKICBjaG9tcCgkbGluZSk7CiAgaWYgKCRsaW5l
ID1+IG0vIFt0VF0gV2ViQ29yZTo6KC4rKSQvKSB7CiAgICBteSAkbWV0aG9kID0gJDE7CiAgICAK
ICAgIGlmICgkbWV0aG9kID1+IC8kYmFsLykgewogICAgICBteSAkc2lnbmF0dXJlID0gJDE7CiAg
ICAgIG15ICRjb25zdCA9ICQyIGVxICIgY29uc3QiOwogICAgICAKICAgICAgbXkgJGNsYXNzID0g
c3Vic3RyKCRtZXRob2QsIDAsIGxlbmd0aCgkbWV0aG9kKSAtIGxlbmd0aCgkc2lnbmF0dXJlKSAt
ICgkY29uc3QgPyA2IDogMCkpOwoKIyAgICAgIHByaW50ICJsaW5lOiAkbGluZVxuY2xhc3M6ICRj
bGFzc1xubWV0aG9kOiAkbWV0aG9kXG5zaWduYXR1cmU6ICRzaWduYXR1cmVcbmNvbnN0OiAkY29u
c3RcblxuIjsKCiAgICAgIG15ICVtZXRob2RfaW5mbyA9ICgKICAgICAgICAgICdjbGFzcycgPT4g
JGNsYXNzLAogICAgICAgICAgJ2NvbnN0JyA9PiAkY29uc3QsCiAgICAgICAgICAnbWV0aG9kJyA9
PiAkbWV0aG9kLAogICAgICApOwogICAgICAKICAgICAgcHVzaCBAeyRzaWduYXR1cmVfbWFweyRz
aWduYXR1cmV9fSwgXCVtZXRob2RfaW5mbzsKICAgIH0gZWxzZSB7CiAgICAgIHByaW50ICJ1bm1h
dGNoZWQgbGluZSAkbWV0aG9kXG5cbiIKICAgIH0KICB9Cn0KY2xvc2UgTk07CgpteSAkc2lnOwpm
b3IgJHNpZyAoa2V5cyAlc2lnbmF0dXJlX21hcCkgewogICNwcmludCAiXG4kc2lnXG4iOwoKICBt
eSBAZW50cmllcyA9IEB7JHNpZ25hdHVyZV9tYXB7JHNpZ319OwojICBwcmludCAiJCNlbnRyaWVz
XG4iOwogIAogIG15ICRudW1fY29uc3QgPSAwOwogIG15ICRudW1fbm90X2NvbnN0ID0gMDsKICBt
eSAkaTsKICBmb3IgJGkgKDAgLi4gJCNlbnRyaWVzKSB7CiAgICBteSAkZW50cnkgPSBAZW50cmll
c1skaV07CgogICAgbXkgJGNsYXNzID0gJGVudHJ5LT57J2NsYXNzJ307CiAgICBteSAkY29uc3Qg
PSAkZW50cnktPnsnY29uc3QnfTsKICAgIAogICAgaWYgKCRjb25zdCkgewogICAgICAkbnVtX2Nv
bnN0Kys7CiAgICB9IGVsc2UgewogICAgICAkbnVtX25vdF9jb25zdCsrOwogICAgfQogIH0KCiAg
aWYgKCQjZW50cmllcyA+IDEgJiYgJG51bV9jb25zdCA+IDAgJiYgJG51bV9ub3RfY29uc3QgPiAw
KSB7CiAgICBwcmludCAiQm90aCBjb25zdCBhbmQgbm9uLWNvbnN0IHZlcnNpb25zIG9mICRzaWc6
XG4iOwoKICAgIGZvciAkaSAoMCAuLiAkI2VudHJpZXMpIHsKICAgICAgbXkgJGVudHJ5ID0gQGVu
dHJpZXNbJGldOwogICAgICBteSAkbWV0aG9kID0gJGVudHJ5LT57J21ldGhvZCd9OwogICAgICBw
cmludCAiXHQkbWV0aG9kXG4iOwogICAgfQoKICB9Cn0KCgoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>25393</attachid>
            <date>2008-11-22 22:44:18 -0800</date>
            <delta_ts>2008-11-22 22:44:18 -0800</delta_ts>
            <desc>Output of above perl script</desc>
            <filename>possible_const_issues.txt</filename>
            <type>text/plain</type>
            <size>58188</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">TG9va2luZyBmb3IgdW5tYXRjaGVkIGNvbnN0IG1ldGhvZHMgaW4gV2ViQ29yZS5mcmFtZXdvcmsv
V2ViQ29yZQpCb3RoIGNvbnN0IGFuZCBub24tY29uc3QgdmVyc2lvbnMgb2Ygb2Zmc2V0VG9wKCk6
CglFbGVtZW50OjpvZmZzZXRUb3AoKQoJUmVuZGVySW5saW5lOjpvZmZzZXRUb3AoKSBjb25zdAoJ
UmVuZGVyT2JqZWN0OjpvZmZzZXRUb3AoKSBjb25zdApCb3RoIGNvbnN0IGFuZCBub24tY29uc3Qg
dmVyc2lvbnMgb2YgaW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oV2ViQ29yZTo6VmlzaWJsZVBvc2l0
aW9uIGNvbnN0Jik6CglSZW5kZXJUZXh0Q29udHJvbDo6aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24o
V2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uIGNvbnN0JikKCUFjY2Vzc2liaWxpdHlPYmplY3Q6Omlu
ZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbiBjb25zdCYpIGNv
bnN0CglBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjppbmRleEZvclZpc2libGVQb3NpdGlvbihX
ZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24gY29uc3QmKSBjb25zdApCb3RoIGNvbnN0IGFuZCBub24t
Y29uc3QgdmVyc2lvbnMgb2YgU3RyaW5nKCk6CglTdHJpbmc6OlN0cmluZygpCglDU1NQYXJzZXJT
dHJpbmc6Om9wZXJhdG9yIFdlYkNvcmU6OlN0cmluZygpIGNvbnN0CglTeW5jaHJvbml6YWJsZVR5
cGVXcmFwcGVyPFdlYkNvcmU6OlN0cmluZz46Om9wZXJhdG9yIFdlYkNvcmU6OlN0cmluZygpIGNv
bnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25zdCB2ZXJzaW9ucyBvZiByZWFkeVN0YXRlKCk6CglN
ZWRpYVBsYXllcjo6cmVhZHlTdGF0ZSgpCglYTUxIdHRwUmVxdWVzdDo6cmVhZHlTdGF0ZSgpIGNv
bnN0CglIVE1MTWVkaWFFbGVtZW50OjpyZWFkeVN0YXRlKCkgY29uc3QKCU1lZGlhUGxheWVyUHJp
dmF0ZTo6cmVhZHlTdGF0ZSgpIGNvbnN0CglEb2N1bWVudDo6cmVhZHlTdGF0ZSgpIGNvbnN0CkJv
dGggY29uc3QgYW5kIG5vbi1jb25zdCB2ZXJzaW9ucyBvZiBmcmFtZUNvdW50KCk6CglCaXRtYXBJ
bWFnZTo6ZnJhbWVDb3VudCgpCglJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCgpIGNvbnN0CglQYWdl
OjpmcmFtZUNvdW50KCkgY29uc3QKQm90aCBjb25zdCBhbmQgbm9uLWNvbnN0IHZlcnNpb25zIG9m
IHN0cmluZygpOgoJQ2hhcmFjdGVyRGF0YTo6c3RyaW5nKCkKCUF0b21pY1N0cmluZzo6c3RyaW5n
KCkgY29uc3QKCUluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmc6OnN0cmluZygpIGNvbnN0CglL
VVJMOjpzdHJpbmcoKSBjb25zdAoJU1FMVmFsdWU6OnN0cmluZygpIGNvbnN0CkJvdGggY29uc3Qg
YW5kIG5vbi1jb25zdCB2ZXJzaW9ucyBvZiBjbGVhcigpOgoJQ2FjaGVkUGFnZTo6Y2xlYXIoKQoJ
Q2xhc3NOYW1lczo6Y2xlYXIoKQoJTGlzdFJlc3VsdDo6Y2xlYXIoKQoJUGFzdGVib2FyZDo6Y2xl
YXIoKQoJQ2FjaGVkSW1hZ2U6OmNsZWFyKCkKCUNvbnRlbnREYXRhOjpjbGVhcigpCglGaWxlQ2hv
b3Nlcjo6Y2xlYXIoKQoJR2x5cGhCdWZmZXI6OmNsZWFyKCkKCUltYWdlU291cmNlOjpjbGVhcigp
CglQb2xpY3lDaGVjazo6Y2xlYXIoKQoJUmVuZGVyQmxvY2s6OkNvbXBhY3RJbmZvOjpjbGVhcigp
CglTVkdHbHlwaE1hcDo6Y2xlYXIoKQoJQ2xpcERhdGFMaXN0OjpjbGVhcigpCglFdmVudEhhbmRs
ZXI6OmNsZWFyKCkKCUhUTUxEb2N1bWVudDo6Y2xlYXIoKQoJS2V5ZnJhbWVMaXN0OjpjbGVhcigp
CglOb2RlSXRlcmF0b3I6Ok5vZGVQb2ludGVyOjpjbGVhcigpCglTaGFyZWRCdWZmZXI6OmNsZWFy
KCkKCUpTRE9NV2luZG93QmFzZTo6Y2xlYXIoKQoJU2VnbWVudGVkU3RyaW5nOjpjbGVhcigpCglK
U0RPTVdpbmRvd1NoZWxsOjpjbGVhcigpCglEZXByZWNhdGVkUHRyTGlzdDxXZWJDb3JlOjpJbWFn
ZUxvYWRlcj46OmNsZWFyKCkKCURlcHJlY2F0ZWRQdHJMaXN0PFdlYkNvcmU6OlJlbmRlckJsb2Nr
OjpGbG9hdGluZ09iamVjdD46OmNsZWFyKCkKCVJhbmdlQm91bmRhcnlQb2ludDo6Y2xlYXIoKQoJ
U2VnbWVudGVkU3Vic3RyaW5nOjpjbGVhcigpCglEZXByZWNhdGVkVmFsdWVMaXN0PFdURjo6UmVm
UHRyPFdlYkNvcmU6OlJlZ2lzdGVyZWRFdmVudExpc3RlbmVyPiA+OjpjbGVhcigpCglEZXByZWNh
dGVkVmFsdWVMaXN0PFdlYkNvcmU6OkNTU1Byb3BlcnR5Pjo6Y2xlYXIoKQoJU2VsZWN0aW9uQ29u
dHJvbGxlcjo6Y2xlYXIoKQoJQ2lyY3VsYXJTZWFyY2hCdWZmZXI6OmNsZWFyKCkKCURlcHJlY2F0
ZWRWYWx1ZUxpc3RJbXBsOjpjbGVhcigpCglQYXRoOjpjbGVhcigpCglFZGl0b3I6OmNsZWFyKCkK
CVN0b3JhZ2U6OmNsZWFyKCkKCURvY3VtZW50OjpjbGVhcigpCglGaWxlTGlzdDo6Y2xlYXIoKQoJ
UG9zaXRpb246OmNsZWFyKCkKCURPTVdpbmRvdzo6Y2xlYXIoKQoJRnJhbWVEYXRhOjpjbGVhcigp
CglGcmFtZVZpZXc6OmNsZWFyKCkKCVBvcHVwTWVudTo6Y2xlYXIoKQoJUmVuZGVyU3R5bGU6OmNs
ZWFyKCkgY29uc3QKCUhUTUxCUkVsZW1lbnQ6OmNsZWFyKCkgY29uc3QKQm90aCBjb25zdCBhbmQg
bm9uLWNvbnN0IHZlcnNpb25zIG9mIG9mZnNldExlZnQoKToKCUVsZW1lbnQ6Om9mZnNldExlZnQo
KQoJUmVuZGVySW5saW5lOjpvZmZzZXRMZWZ0KCkgY29uc3QKCVJlbmRlck9iamVjdDo6b2Zmc2V0
TGVmdCgpIGNvbnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25zdCB2ZXJzaW9ucyBvZiBGbG9hdFJl
Y3QoKToKCUpTU1ZHU3RhdGljUE9EVHlwZVdyYXBwZXI8V2ViQ29yZTo6RmxvYXRSZWN0Pjo6b3Bl
cmF0b3IgV2ViQ29yZTo6RmxvYXRSZWN0KCkKCUpTU1ZHRHluYW1pY1BPRFR5cGVXcmFwcGVyPFdl
YkNvcmU6OkZsb2F0UmVjdCwgV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUZW1wbGF0ZTxXZWJDb3JlOjpG
bG9hdFJlY3Q+ID46Om9wZXJhdG9yIFdlYkNvcmU6OkZsb2F0UmVjdCgpCglGbG9hdFJlY3Q6OkZs
b2F0UmVjdCgpCglTeW5jaHJvbml6YWJsZVR5cGVXcmFwcGVyPFdlYkNvcmU6OkZsb2F0UmVjdD46
Om9wZXJhdG9yIFdlYkNvcmU6OkZsb2F0UmVjdCgpIGNvbnN0CkJvdGggY29uc3QgYW5kIG5vbi1j
b25zdCB2ZXJzaW9ucyBvZiBpc0xvYWRpbmcoKToKCUNTU1N0eWxlU2hlZXQ6OmlzTG9hZGluZygp
CglYU0xJbXBvcnRSdWxlOjppc0xvYWRpbmcoKQoJWFNMU3R5bGVTaGVldDo6aXNMb2FkaW5nKCkK
CUZyYW1lTG9hZGVyOjppc0xvYWRpbmcoKSBjb25zdAoJQ1NTSW1wb3J0UnVsZTo6aXNMb2FkaW5n
KCkgY29uc3QKCURvY3VtZW50TG9hZGVyOjppc0xvYWRpbmcoKSBjb25zdAoJU2ltcGxlRm9udERh
dGE6OmlzTG9hZGluZygpIGNvbnN0CglIVE1MTGlua0VsZW1lbnQ6OmlzTG9hZGluZygpIGNvbnN0
CglIVE1MU3R5bGVFbGVtZW50Ojppc0xvYWRpbmcoKSBjb25zdAoJU2VnbWVudGVkRm9udERhdGE6
OmlzTG9hZGluZygpIGNvbnN0CglQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmlzTG9hZGluZygpIGNv
bnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25zdCB2ZXJzaW9ucyBvZiBjYWNoZWRJbWFnZSgpOgoJ
SW1hZ2VEb2N1bWVudDo6Y2FjaGVkSW1hZ2UoKQoJUmVuZGVySW1hZ2U6OmNhY2hlZEltYWdlKCkg
Y29uc3QKCUhUTUxJbWFnZUVsZW1lbnQ6OmNhY2hlZEltYWdlKCkgY29uc3QKCVN0eWxlQ2FjaGVk
SW1hZ2U6OmNhY2hlZEltYWdlKCkgY29uc3QKQm90aCBjb25zdCBhbmQgbm9uLWNvbnN0IHZlcnNp
b25zIG9mIGxvd2VyKCk6CglTdHJpbmdJbXBsOjpsb3dlcigpCglDU1NQYXJzZXJTdHJpbmc6Omxv
d2VyKCkKCVN0cmluZzo6bG93ZXIoKSBjb25zdApCb3RoIGNvbnN0IGFuZCBub24tY29uc3QgdmVy
c2lvbnMgb2YgcGFnZSgpOgoJU2Vzc2lvblN0b3JhZ2U6OnBhZ2UoKQoJUGx1Z2luRGF0YTo6cGFn
ZSgpIGNvbnN0CglHbHlwaFBhZ2VUcmVlTm9kZTo6cGFnZSgpIGNvbnN0CglGcmFtZTo6cGFnZSgp
IGNvbnN0CglDb25zb2xlOjpwYWdlKCkgY29uc3QKCURvY3VtZW50OjpwYWdlKCkgY29uc3QKQm90
aCBjb25zdCBhbmQgbm9uLWNvbnN0IHZlcnNpb25zIG9mIHZpc2libGVQb3NpdGlvbkZvckluZGV4
KGludCk6CglSZW5kZXJUZXh0Q29udHJvbDo6dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoaW50KQoJ
QWNjZXNzaWJpbGl0eU9iamVjdDo6dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoaW50KSBjb25zdAoJ
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoaW50KSBj
b25zdApCb3RoIGNvbnN0IGFuZCBub24tY29uc3QgdmVyc2lvbnMgb2YgY2xpZW50KCk6CglDaHJv
bWU6OmNsaWVudCgpCglGcmFtZUxvYWRlcjo6Y2xpZW50KCkgY29uc3QKCURyYWdDb250cm9sbGVy
OjpjbGllbnQoKSBjb25zdAoJUmVzb3VyY2VIYW5kbGU6OmNsaWVudCgpIGNvbnN0CglFZGl0b3I6
OmNsaWVudCgpIGNvbnN0CglQb3B1cE1lbnU6OmNsaWVudCgpIGNvbnN0CglTY3JvbGxiYXI6OmNs
aWVudCgpIGNvbnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25zdCB2ZXJzaW9ucyBvZiBuYW1lKCk6
CglQYWdlR3JvdXA6Om5hbWUoKQoJRG9jdW1lbnRUeXBlOjpuYW1lKCkgY29uc3QKCVRleHRFbmNv
ZGluZzo6bmFtZSgpIGNvbnN0CglFeGNlcHRpb25CYXNlOjpuYW1lKCkgY29uc3QKCUZvcm1FbGVt
ZW50S2V5OjpuYW1lKCkgY29uc3QKCUhUTUxNYXBFbGVtZW50OjpuYW1lKCkgY29uc3QKCURhdGFi
YXNlRGV0YWlsczo6bmFtZSgpIGNvbnN0CglIVE1MRm9ybUVsZW1lbnQ6Om5hbWUoKSBjb25zdAoJ
SFRNTE1ldGFFbGVtZW50OjpuYW1lKCkgY29uc3QKCUhUTUxJbWFnZUVsZW1lbnQ6Om5hbWUoKSBj
b25zdAoJSFRNTElucHV0RWxlbWVudDo6bmFtZSgpIGNvbnN0CglIVE1MUGFyYW1FbGVtZW50Ojpu
YW1lKCkgY29uc3QKCUhUTUxBbmNob3JFbGVtZW50OjpuYW1lKCkgY29uc3QKCUhUTUxQbHVnSW5F
bGVtZW50OjpuYW1lKCkgY29uc3QKCUtleWZyYW1lQW5pbWF0aW9uOjpuYW1lKCkgY29uc3QKCUhU
TUxGcmFtZUVsZW1lbnRCYXNlOjpuYW1lKCkgY29uc3QKCUhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6
Om5hbWUoKSBjb25zdAoJV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZTo6bmFtZSgpIGNvbnN0CglBdHRy
OjpuYW1lKCkgY29uc3QKCUNvbG9yOjpuYW1lKCkgY29uc3QKCUxvYWRlcjo6SG9zdDo6bmFtZSgp
IGNvbnN0CglQbHVnaW46Om5hbWUoKSBjb25zdAoJQW5pbWF0aW9uOjpuYW1lKCkgY29uc3QKCUF0
dHJpYnV0ZTo6bmFtZSgpIGNvbnN0CglET01XaW5kb3c6Om5hbWUoKSBjb25zdAoJRnJhbWVUcmVl
OjpuYW1lKCkgY29uc3QKQm90aCBjb25zdCBhbmQgbm9uLWNvbnN0IHZlcnNpb25zIG9mIHNjcm9s
bEhlaWdodCgpOgoJUmVuZGVyTGF5ZXI6OnNjcm9sbEhlaWdodCgpCglFbGVtZW50OjpzY3JvbGxI
ZWlnaHQoKQoJUmVuZGVyT2JqZWN0OjpzY3JvbGxIZWlnaHQoKSBjb25zdAoJUmVuZGVyTGlzdEJv
eDo6c2Nyb2xsSGVpZ2h0KCkgY29uc3QKCUhUTUxCb2R5RWxlbWVudDo6c2Nyb2xsSGVpZ2h0KCkg
Y29uc3QKCVJlbmRlclRleHRDb250cm9sOjpzY3JvbGxIZWlnaHQoKSBjb25zdApCb3RoIGNvbnN0
IGFuZCBub24tY29uc3QgdmVyc2lvbnMgb2YgbWFyaygpOgoJSlNEb2N1bWVudDo6bWFyaygpCglO
b2RlRmlsdGVyOjptYXJrKCkKCUpTRE9NV2luZG93OjptYXJrKCkKCUpTTmF2aWdhdG9yOjptYXJr
KCkKCUpTTm9kZUZpbHRlcjo6bWFyaygpCglKU1N0eWxlU2hlZXQ6Om1hcmsoKQoJSlNUcmVlV2Fs
a2VyOjptYXJrKCkKCUpTTWVzc2FnZVBvcnQ6Om1hcmsoKQoJSlNOb2RlSXRlcmF0b3I6Om1hcmso
KQoJSlNXb3JrZXJDb250ZXh0OjptYXJrKCkKCUpTRE9NV2luZG93U2hlbGw6Om1hcmsoKQoJSlNN
ZXNzYWdlQ2hhbm5lbDo6bWFyaygpCglKU1hNTEh0dHBSZXF1ZXN0OjptYXJrKCkKCUpTRE9NR2xv
YmFsT2JqZWN0OjptYXJrKCkKCUpTQXVkaW9Db25zdHJ1Y3Rvcjo6bWFyaygpCglKU0ltYWdlQ29u
c3RydWN0b3I6Om1hcmsoKQoJSlNPcHRpb25Db25zdHJ1Y3Rvcjo6bWFyaygpCglOb2RlRmlsdGVy
Q29uZGl0aW9uOjptYXJrKCkKCUpTRE9NQXBwbGljYXRpb25DYWNoZTo6bWFyaygpCglKU05vZGVG
aWx0ZXJDb25kaXRpb246Om1hcmsoKQoJSlNYTUxIdHRwUmVxdWVzdFVwbG9hZDo6bWFyaygpCglK
U1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlcjo6bWFyaygpCglKU1VucHJvdGVjdGVkRXZlbnRMaXN0
ZW5lcjo6bWFyaygpCglKU01lc3NhZ2VDaGFubmVsQ29uc3RydWN0b3I6Om1hcmsoKQoJSlNYTUxI
dHRwUmVxdWVzdENvbnN0cnVjdG9yOjptYXJrKCkKCUpTTm9kZTo6bWFyaygpCglKU1dvcmtlcjo6
bWFyaygpCglGcmFtZTo6bWFyaygpIGNvbnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25zdCB2ZXJz
aW9ucyBvZiBzdHlsZSgpOgoJU3R5bGVkRWxlbWVudDo6c3R5bGUoKQoJU1ZHU3R5bGVkRWxlbWVu
dDo6c3R5bGUoKQoJQXR0cjo6c3R5bGUoKQoJRWxlbWVudDo6c3R5bGUoKQoJQm9yZGVyVmFsdWU6
OnN0eWxlKCkgY29uc3QKCUNTU1BhZ2VSdWxlOjpzdHlsZSgpIGNvbnN0CglDU1NTdHlsZVJ1bGU6
OnN0eWxlKCkgY29uc3QKCVJlbmRlck9iamVjdDo6c3R5bGUoKSBjb25zdAoJS2V5ZnJhbWVWYWx1
ZTo6c3R5bGUoKSBjb25zdAoJQ1NTRm9udEZhY2VSdWxlOjpzdHlsZSgpIGNvbnN0CglNYXBwZWRB
dHRyaWJ1dGU6OnN0eWxlKCkgY29uc3QKCUNTU1N0eWxlU2VsZWN0b3I6OnN0eWxlKCkgY29uc3QK
CUNvbGxhcHNlZEJvcmRlclZhbHVlOjpzdHlsZSgpIGNvbnN0CglXZWJLaXRDU1NLZXlmcmFtZVJ1
bGU6OnN0eWxlKCkgY29uc3QKCVBlbjo6c3R5bGUoKSBjb25zdAoJQXR0cmlidXRlOjpzdHlsZSgp
IGNvbnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25zdCB2ZXJzaW9ucyBvZiBjbGlwKCk6CglDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsaXAoKQoJUmVuZGVyU3R5bGU6OmNsaXAoKSBjb25zdAoJ
RmlsbExheWVyOjpjbGlwKCkgY29uc3QKQm90aCBjb25zdCBhbmQgbm9uLWNvbnN0IHZlcnNpb25z
IG9mIGdldEl0ZW0odW5zaWduZWQgaW50LCBpbnQmKToKCVNWR1BPRExpc3Q8V2ViQ29yZTo6Rmxv
YXRQb2ludD46OmdldEl0ZW0odW5zaWduZWQgaW50LCBpbnQmKQoJU1ZHUE9ETGlzdDxXZWJDb3Jl
OjpTVkdUcmFuc2Zvcm0+OjpnZXRJdGVtKHVuc2lnbmVkIGludCwgaW50JikKCVNWR1BPRExpc3Q8
V2ViQ29yZTo6U1ZHTGVuZ3RoPjo6Z2V0SXRlbSh1bnNpZ25lZCBpbnQsIGludCYpCglTVkdMaXN0
PFdURjo6UmVmUHRyPFdlYkNvcmU6OlNWR1BhdGhTZWc+ID46OmdldEl0ZW0odW5zaWduZWQgaW50
LCBpbnQmKQoJU1ZHTGlzdDxXVEY6OlJlZlB0cjxXZWJDb3JlOjpTVkdQT0RMaXN0SXRlbTxXZWJD
b3JlOjpGbG9hdFBvaW50PiA+ID46OmdldEl0ZW0odW5zaWduZWQgaW50LCBpbnQmKQoJU1ZHTGlz
dDxXVEY6OlJlZlB0cjxXZWJDb3JlOjpTVkdQT0RMaXN0SXRlbTxXZWJDb3JlOjpTVkdUcmFuc2Zv
cm0+ID4gPjo6Z2V0SXRlbSh1bnNpZ25lZCBpbnQsIGludCYpCglTVkdMaXN0PFdURjo6UmVmUHRy
PFdlYkNvcmU6OlNWR1BPRExpc3RJdGVtPFdlYkNvcmU6OlNWR0xlbmd0aD4gPiA+OjpnZXRJdGVt
KHVuc2lnbmVkIGludCwgaW50JikKCVNWR0xpc3Q8V2ViQ29yZTo6U3RyaW5nPjo6Z2V0SXRlbSh1
bnNpZ25lZCBpbnQsIGludCYpCglTVkdMaXN0PGZsb2F0Pjo6Z2V0SXRlbSh1bnNpZ25lZCBpbnQs
IGludCYpCglTVkdQT0RMaXN0PFdlYkNvcmU6OkZsb2F0UG9pbnQ+OjpnZXRJdGVtKHVuc2lnbmVk
IGludCwgaW50JikgY29uc3QKCVNWR1BPRExpc3Q8V2ViQ29yZTo6U1ZHVHJhbnNmb3JtPjo6Z2V0
SXRlbSh1bnNpZ25lZCBpbnQsIGludCYpIGNvbnN0CglTVkdQT0RMaXN0PFdlYkNvcmU6OlNWR0xl
bmd0aD46OmdldEl0ZW0odW5zaWduZWQgaW50LCBpbnQmKSBjb25zdAoJU1ZHTGlzdDxXVEY6OlJl
ZlB0cjxXZWJDb3JlOjpTVkdQYXRoU2VnPiA+OjpnZXRJdGVtKHVuc2lnbmVkIGludCwgaW50Jikg
Y29uc3QKCVNWR0xpc3Q8V1RGOjpSZWZQdHI8V2ViQ29yZTo6U1ZHUE9ETGlzdEl0ZW08V2ViQ29y
ZTo6RmxvYXRQb2ludD4gPiA+OjpnZXRJdGVtKHVuc2lnbmVkIGludCwgaW50JikgY29uc3QKCVNW
R0xpc3Q8V1RGOjpSZWZQdHI8V2ViQ29yZTo6U1ZHUE9ETGlzdEl0ZW08V2ViQ29yZTo6U1ZHVHJh
bnNmb3JtPiA+ID46OmdldEl0ZW0odW5zaWduZWQgaW50LCBpbnQmKSBjb25zdAoJU1ZHTGlzdDxX
VEY6OlJlZlB0cjxXZWJDb3JlOjpTVkdQT0RMaXN0SXRlbTxXZWJDb3JlOjpTVkdMZW5ndGg+ID4g
Pjo6Z2V0SXRlbSh1bnNpZ25lZCBpbnQsIGludCYpIGNvbnN0CglTVkdMaXN0PGZsb2F0Pjo6Z2V0
SXRlbSh1bnNpZ25lZCBpbnQsIGludCYpIGNvbnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25zdCB2
ZXJzaW9ucyBvZiBlbmNvZGUodW5zaWduZWQgc2hvcnQgY29uc3QqLCB1bnNpZ25lZCBsb25nLCBX
ZWJDb3JlOjpVbmVuY29kYWJsZUhhbmRsaW5nKToKCVRleHRDb2RlY0lDVTo6ZW5jb2RlKHVuc2ln
bmVkIHNob3J0IGNvbnN0KiwgdW5zaWduZWQgbG9uZywgV2ViQ29yZTo6VW5lbmNvZGFibGVIYW5k
bGluZykKCVRleHRDb2RlY01hYzo6ZW5jb2RlKHVuc2lnbmVkIHNob3J0IGNvbnN0KiwgdW5zaWdu
ZWQgbG9uZywgV2ViQ29yZTo6VW5lbmNvZGFibGVIYW5kbGluZykKCVRleHRDb2RlY1VURjE2Ojpl
bmNvZGUodW5zaWduZWQgc2hvcnQgY29uc3QqLCB1bnNpZ25lZCBsb25nLCBXZWJDb3JlOjpVbmVu
Y29kYWJsZUhhbmRsaW5nKQoJVGV4dENvZGVjTGF0aW4xOjplbmNvZGUodW5zaWduZWQgc2hvcnQg
Y29uc3QqLCB1bnNpZ25lZCBsb25nLCBXZWJDb3JlOjpVbmVuY29kYWJsZUhhbmRsaW5nKQoJVGV4
dENvZGVjVXNlckRlZmluZWQ6OmVuY29kZSh1bnNpZ25lZCBzaG9ydCBjb25zdCosIHVuc2lnbmVk
IGxvbmcsIFdlYkNvcmU6OlVuZW5jb2RhYmxlSGFuZGxpbmcpCglUZXh0RW5jb2Rpbmc6OmVuY29k
ZSh1bnNpZ25lZCBzaG9ydCBjb25zdCosIHVuc2lnbmVkIGxvbmcsIFdlYkNvcmU6OlVuZW5jb2Rh
YmxlSGFuZGxpbmcpIGNvbnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25zdCB2ZXJzaW9ucyBvZiBo
YXNQZW5kaW5nQWN0aXZpdHkoKToKCU1lc3NhZ2VQb3J0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKQoJ
V29ya2VyQ29udGV4dDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKCUFjdGl2ZURPTU9iamVj
dDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKCVdvcmtlcjo6aGFzUGVuZGluZ0FjdGl2aXR5
KCkgY29uc3QKQm90aCBjb25zdCBhbmQgbm9uLWNvbnN0IHZlcnNpb25zIG9mIGRvY3VtZW50TG9h
ZGVyKCk6CglDYWNoZWRQYWdlOjpkb2N1bWVudExvYWRlcigpCglGcmFtZUxvYWRlcjo6ZG9jdW1l
bnRMb2FkZXIoKSBjb25zdAoJUmVzb3VyY2VMb2FkZXI6OmRvY3VtZW50TG9hZGVyKCkgY29uc3QK
Qm90aCBjb25zdCBhbmQgbm9uLWNvbnN0IHZlcnNpb25zIG9mIHNpemUoKToKCUNsYXNzTmFtZXNE
YXRhOjpzaXplKCkKCUNsYXNzTmFtZXM6OnNpemUoKSBjb25zdAoJQ3Vyc29yTGlzdDo6c2l6ZSgp
IGNvbnN0CglCaXRtYXBJbWFnZTo6c2l6ZSgpIGNvbnN0CglHbHlwaEJ1ZmZlcjo6c2l6ZSgpIGNv
bnN0CglJbWFnZUJ1ZmZlcjo6c2l6ZSgpIGNvbnN0CglJbWFnZVNvdXJjZTo6c2l6ZSgpIGNvbnN0
CglLZXlmcmFtZUxpc3Q6OnNpemUoKSBjb25zdAoJU2NyaXB0U3RyaW5nOjpzaXplKCkgY29uc3QK
CVNoYXJlZEJ1ZmZlcjo6c2l6ZSgpIGNvbnN0CglBbmltYXRpb25MaXN0OjpzaXplKCkgY29uc3QK
CUhUTUxIUkVsZW1lbnQ6OnNpemUoKSBjb25zdAoJUmVuZGVyTGlzdEJveDo6c2l6ZSgpIGNvbnN0
CglDYWNoZWRSZXNvdXJjZTo6c2l6ZSgpIGNvbnN0CglHZW5lcmF0ZWRJbWFnZTo6c2l6ZSgpIGNv
bnN0CglIVE1MRm9udEVsZW1lbnQ6OnNpemUoKSBjb25zdAoJRm9udFBsYXRmb3JtRGF0YTo6c2l6
ZSgpIGNvbnN0CglIVE1MSW5wdXRFbGVtZW50OjpzaXplKCkgY29uc3QKCVBERkRvY3VtZW50SW1h
Z2U6OnNpemUoKSBjb25zdAoJSFRNTENhbnZhc0VsZW1lbnQ6OnNpemUoKSBjb25zdAoJSFRNTFNl
bGVjdEVsZW1lbnQ6OnNpemUoKSBjb25zdAoJQ1NTUGFyc2VyVmFsdWVMaXN0OjpzaXplKCkgY29u
c3QKCUFjY2Vzc2liaWxpdHlPYmplY3Q6OnNpemUoKSBjb25zdAoJSFRNTEJhc2VGb250RWxlbWVu
dDo6c2l6ZSgpIGNvbnN0CglSZW5kZXJJbWFnZVNjYWxlRGF0YTo6c2l6ZSgpIGNvbnN0CglBY2Nl
c3NpYmlsaXR5VGFibGVDb2x1bW46OnNpemUoKSBjb25zdAoJQWNjZXNzaWJpbGl0eUltYWdlTWFw
TGluazo6c2l6ZSgpIGNvbnN0CglBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzaXplKCkgY29u
c3QKCUFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uOjpzaXplKCkgY29uc3QKCUFjY2Vzc2liaWxp
dHlUYWJsZUhlYWRlckNvbnRhaW5lcjo6c2l6ZSgpIGNvbnN0CglGb250OjpzaXplKCkgY29uc3QK
CVhQYXRoOjpOb2RlU2V0OjpzaXplKCkgY29uc3QKCUludFJlY3Q6OnNpemUoKSBjb25zdAoJU1ZH
SW1hZ2U6OnNpemUoKSBjb25zdAoJRmlsbExheWVyOjpzaXplKCkgY29uc3QKCUZsb2F0UmVjdDo6
c2l6ZSgpIGNvbnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25zdCB2ZXJzaW9ucyBvZiBkYXRhKCk6
CglDU3RyaW5nQnVmZmVyOjpkYXRhKCkKCUNhbnZhc1BpeGVsQXJyYXk6OmRhdGEoKQoJSW1hZ2U6
OmRhdGEoKQoJRm9ybURhdGFMaXN0OjpJdGVtOjpkYXRhKCkgY29uc3QKCU1lc3NhZ2VFdmVudDo6
ZGF0YSgpIGNvbnN0CglTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAoJQ2hhcmFjdGVyRGF0YTo6
ZGF0YSgpIGNvbnN0CglDYWNoZWRSZXNvdXJjZTo6ZGF0YSgpIGNvbnN0CglTdHlsZUNhY2hlZElt
YWdlOjpkYXRhKCkgY29uc3QKCUhUTUxPYmplY3RFbGVtZW50OjpkYXRhKCkgY29uc3QKCVN1YnN0
aXR1dGVSZXNvdXJjZTo6ZGF0YSgpIGNvbnN0CglTdHlsZUdlbmVyYXRlZEltYWdlOjpkYXRhKCkg
Y29uc3QKCVN0cmluZ1NvdXJjZVByb3ZpZGVyOjpkYXRhKCkgY29uc3QKCVByb2Nlc3NpbmdJbnN0
cnVjdGlvbjo6ZGF0YSgpIGNvbnN0CglDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlcjo6ZGF0YSgp
IGNvbnN0CglYUGF0aDo6U3RlcDo6Tm9kZVRlc3Q6OmRhdGEoKSBjb25zdAoJQ1N0cmluZzo6ZGF0
YSgpIGNvbnN0CglJbWFnZURhdGE6OmRhdGEoKSBjb25zdAoJVGV4dEV2ZW50OjpkYXRhKCkgY29u
c3QKQm90aCBjb25zdCBhbmQgbm9uLWNvbnN0IHZlcnNpb25zIG9mIGhlaWdodCgpOgoJSFRNTERv
Y3VtZW50OjpoZWlnaHQoKQoJTGVuZ3RoU2l6ZTo6aGVpZ2h0KCkgY29uc3QKCVJlbmRlclRleHQ6
OmhlaWdodCgpIGNvbnN0CglSZW5kZXJMYXllcjo6aGVpZ2h0KCkgY29uc3QKCVJlbmRlclN0eWxl
OjpoZWlnaHQoKSBjb25zdAoJUmVuZGVySW5saW5lOjpoZWlnaHQoKSBjb25zdAoJUmVuZGVyT2Jq
ZWN0OjpoZWlnaHQoKSBjb25zdAoJU1ZHU1ZHRWxlbWVudDo6aGVpZ2h0KCkgY29uc3QKCVNWR1Vz
ZUVsZW1lbnQ6OmhlaWdodCgpIGNvbnN0CglTVkdNYXNrRWxlbWVudDo6aGVpZ2h0KCkgY29uc3QK
CVNWR1JlY3RFbGVtZW50OjpoZWlnaHQoKSBjb25zdAoJU1ZHSW1hZ2VFbGVtZW50OjpoZWlnaHQo
KSBjb25zdAoJSFRNTFZpZGVvRWxlbWVudDo6aGVpZ2h0KCkgY29uc3QKCUhUTUxDYW52YXNFbGVt
ZW50OjpoZWlnaHQoKSBjb25zdAoJSFRNTElGcmFtZUVsZW1lbnQ6OmhlaWdodCgpIGNvbnN0CglI
VE1MUGx1Z0luRWxlbWVudDo6aGVpZ2h0KCkgY29uc3QKCVBhdHRlcm5BdHRyaWJ1dGVzOjpoZWln
aHQoKSBjb25zdAoJU1ZHUGF0dGVybkVsZW1lbnQ6OmhlaWdodCgpIGNvbnN0CglSZW5kZXJTVkdD
b250YWluZXI6OmhlaWdodCgpIGNvbnN0CglIVE1MRnJhbWVFbGVtZW50QmFzZTo6aGVpZ2h0KCkg
Y29uc3QKCUhUTUxUYWJsZUNlbGxFbGVtZW50OjpoZWlnaHQoKSBjb25zdAoJU1ZHRm9yZWlnbk9i
amVjdEVsZW1lbnQ6OmhlaWdodCgpIGNvbnN0CglGb250OjpoZWlnaHQoKSBjb25zdAoJSW1hZ2U6
OmhlaWdodCgpIGNvbnN0CglTY3JlZW46OmhlaWdodCgpIGNvbnN0CglXaWRnZXQ6OmhlaWdodCgp
IGNvbnN0CglJbnRSZWN0OjpoZWlnaHQoKSBjb25zdAoJSW50U2l6ZTo6aGVpZ2h0KCkgY29uc3QK
CUZsb2F0UmVjdDo6aGVpZ2h0KCkgY29uc3QKCUZsb2F0U2l6ZTo6aGVpZ2h0KCkgY29uc3QKCUlt
YWdlRGF0YTo6aGVpZ2h0KCkgY29uc3QKCUlubGluZUJveDo6aGVpZ2h0KCkgY29uc3QKCVJlbmRl
ckJveDo6aGVpZ2h0KCkgY29uc3QKQm90aCBjb25zdCBhbmQgbm9uLWNvbnN0IHZlcnNpb25zIG9m
IHByZXZpb3VzU2libGluZygpOgoJVHJlZVdhbGtlcjo6cHJldmlvdXNTaWJsaW5nKCkKCUNvdW50
ZXJOb2RlOjpwcmV2aW91c1NpYmxpbmcoKSBjb25zdAoJUmVuZGVyTGF5ZXI6OnByZXZpb3VzU2li
bGluZygpIGNvbnN0CglSZW5kZXJPYmplY3Q6OnByZXZpb3VzU2libGluZygpIGNvbnN0CglTVkdF
bGVtZW50SW5zdGFuY2U6OnByZXZpb3VzU2libGluZygpIGNvbnN0CglBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpwcmV2aW91c1NpYmxpbmcoKSBjb25zdAoJQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
cHJldmlvdXNTaWJsaW5nKCkgY29uc3QKCU5vZGU6OnByZXZpb3VzU2libGluZygpIGNvbnN0CglG
cmFtZVRyZWU6OnByZXZpb3VzU2libGluZygpIGNvbnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25z
dCB2ZXJzaW9ucyBvZiBzZWxlY3Rpb25TdGFydCgpOgoJUmVuZGVyVGV4dENvbnRyb2w6OnNlbGVj
dGlvblN0YXJ0KCkKCUhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNlbGVjdGlvblN0YXJ0KCkKCVJlbmRl
clZpZXc6OnNlbGVjdGlvblN0YXJ0KCkgY29uc3QKCUhUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlv
blN0YXJ0KCkgY29uc3QKCUFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdGlvblN0YXJ0KCkgY29u
c3QKQm90aCBjb25zdCBhbmQgbm9uLWNvbnN0IHZlcnNpb25zIG9mIG1hcmdpblJpZ2h0KCk6CglJ
bmxpbmVGbG93Qm94OjptYXJnaW5SaWdodCgpCglSZW5kZXJUZXh0OjptYXJnaW5SaWdodCgpIGNv
bnN0CglSZW5kZXJTdHlsZTo6bWFyZ2luUmlnaHQoKSBjb25zdAoJUmVuZGVyT2JqZWN0OjptYXJn
aW5SaWdodCgpIGNvbnN0CglSZW5kZXJCb3g6Om1hcmdpblJpZ2h0KCkgY29uc3QKQm90aCBjb25z
dCBhbmQgbm9uLWNvbnN0IHZlcnNpb25zIG9mIHNjcm9sbFdpZHRoKCk6CglSZW5kZXJMYXllcjo6
c2Nyb2xsV2lkdGgoKQoJRWxlbWVudDo6c2Nyb2xsV2lkdGgoKQoJUmVuZGVyT2JqZWN0OjpzY3Jv
bGxXaWR0aCgpIGNvbnN0CglSZW5kZXJMaXN0Qm94OjpzY3JvbGxXaWR0aCgpIGNvbnN0CglIVE1M
Qm9keUVsZW1lbnQ6OnNjcm9sbFdpZHRoKCkgY29uc3QKCVJlbmRlclRleHRDb250cm9sOjpzY3Jv
bGxXaWR0aCgpIGNvbnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25zdCB2ZXJzaW9ucyBvZiBzZWxl
Y3Rpb25FbmQoKToKCVJlbmRlclRleHRDb250cm9sOjpzZWxlY3Rpb25FbmQoKQoJSFRNTFRleHRB
cmVhRWxlbWVudDo6c2VsZWN0aW9uRW5kKCkKCVJlbmRlclZpZXc6OnNlbGVjdGlvbkVuZCgpIGNv
bnN0CglIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25FbmQoKSBjb25zdAoJQWNjZXNzaWJpbGl0
eU9iamVjdDo6c2VsZWN0aW9uRW5kKCkgY29uc3QKQm90aCBjb25zdCBhbmQgbm9uLWNvbnN0IHZl
cnNpb25zIG9mIGxlbmd0aCgpOgoJU3RyaW5nSW1wbDo6bGVuZ3RoKCkKCVBhdGg6Omxlbmd0aCgp
CglTdHlsZUxpc3Q6Omxlbmd0aCgpCglSZW5kZXJUZXh0OjpsZW5ndGgoKSBjb25zdAoJU3RvcmFn
ZU1hcDo6bGVuZ3RoKCkgY29uc3QKCVRpbWVSYW5nZXM6Omxlbmd0aCgpIGNvbnN0CglDU1NSdWxl
TGlzdDo6bGVuZ3RoKCkgY29uc3QKCVBsdWdpbkFycmF5OjpsZW5ndGgoKSBjb25zdAoJU3RvcmFn
ZUFyZWE6Omxlbmd0aCgpIGNvbnN0CglBdG9taWNTdHJpbmc6Omxlbmd0aCgpIGNvbnN0CglDU1NW
YWx1ZUxpc3Q6Omxlbmd0aCgpIGNvbnN0CglOYW1lZEF0dHJNYXA6Omxlbmd0aCgpIGNvbnN0CglS
ZW5kZXJPYmplY3Q6Omxlbmd0aCgpIGNvbnN0CglTdHJpbmdCdWZmZXI6Omxlbmd0aCgpIGNvbnN0
CglUZXh0SXRlcmF0b3I6Omxlbmd0aCgpIGNvbnN0CglDU3RyaW5nQnVmZmVyOjpsZW5ndGgoKSBj
b25zdAoJQ2hhcmFjdGVyRGF0YTo6bGVuZ3RoKCkgY29uc3QKCUNoaWxkTm9kZUxpc3Q6Omxlbmd0
aCgpIGNvbnN0CglNaW1lVHlwZUFycmF5OjpsZW5ndGgoKSBjb25zdAoJSFRNTENvbGxlY3Rpb246
Omxlbmd0aCgpIGNvbnN0CglTdGF0aWNOb2RlTGlzdDo6bGVuZ3RoKCkgY29uc3QKCVN0eWxlU2hl
ZXRMaXN0OjpsZW5ndGgoKSBjb25zdAoJRHluYW1pY05vZGVMaXN0OjpsZW5ndGgoKSBjb25zdAoJ
SFRNTEZvcm1FbGVtZW50OjpsZW5ndGgoKSBjb25zdAoJU2VnbWVudGVkU3RyaW5nOjpsZW5ndGgo
KSBjb25zdAoJQ2FudmFzUGl4ZWxBcnJheTo6bGVuZ3RoKCkgY29uc3QKCUxvY2FsU3RvcmFnZUFy
ZWE6Omxlbmd0aCgpIGNvbnN0CglQcm9wZXJ0eUxvbmdoYW5kOjpsZW5ndGgoKSBjb25zdAoJQ2hh
cmFjdGVySXRlcmF0b3I6Omxlbmd0aCgpIGNvbnN0CglIVE1MU2VsZWN0RWxlbWVudDo6bGVuZ3Ro
KCkgY29uc3QKCVdvcmRBd2FyZUl0ZXJhdG9yOjpsZW5ndGgoKSBjb25zdAoJRE9NQXBwbGljYXRp
b25DYWNoZTo6bGVuZ3RoKCkgY29uc3QKCVNRTFJlc3VsdFNldFJvd0xpc3Q6Omxlbmd0aCgpIGNv
bnN0CglDaXJjdWxhclNlYXJjaEJ1ZmZlcjo6bGVuZ3RoKCkgY29uc3QKCVN0cmluZ1NvdXJjZVBy
b3ZpZGVyOjpsZW5ndGgoKSBjb25zdAoJU1ZHRWxlbWVudEluc3RhbmNlTGlzdDo6bGVuZ3RoKCkg
Y29uc3QKCVdlYktpdENTU0tleWZyYW1lc1J1bGU6Omxlbmd0aCgpIGNvbnN0CglDU1NWYXJpYWJs
ZXNEZWNsYXJhdGlvbjo6bGVuZ3RoKCkgY29uc3QKCUNTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
OjpsZW5ndGgoKSBjb25zdAoJQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXI6Omxlbmd0aCgpIGNv
bnN0CglDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246Omxlbmd0aCgpIGNvbnN0CglTaW1wbGlm
aWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjpsZW5ndGgoKSBjb25zdAoJUGx1Z2luOjpsZW5ndGgo
KSBjb25zdAoJU3RyaW5nOjpsZW5ndGgoKSBjb25zdAoJQ1N0cmluZzo6bGVuZ3RoKCkgY29uc3QK
CUhpc3Rvcnk6Omxlbmd0aCgpIGNvbnN0CglTdG9yYWdlOjpsZW5ndGgoKSBjb25zdAoJVGV4dFJ1
bjo6bGVuZ3RoKCkgY29uc3QKCUZpbGVMaXN0OjpsZW5ndGgoKSBjb25zdAoJRE9NV2luZG93Ojps
ZW5ndGgoKSBjb25zdAoJTWVkaWFMaXN0OjpsZW5ndGgoKSBjb25zdApCb3RoIGNvbnN0IGFuZCBu
b24tY29uc3QgdmVyc2lvbnMgb2YgZGVyZWYoKToKCVRyZWVTaGFyZWQ8V2ViQ29yZTo6U1ZHRWxl
bWVudEluc3RhbmNlPjo6ZGVyZWYoKQoJVHJlZVNoYXJlZDxXZWJDb3JlOjpOb2RlPjo6ZGVyZWYo
KQoJRXZlbnRUYXJnZXQ6OmRlcmVmKCkKCVF1YWxpZmllZE5hbWU6OmRlcmVmKCkKCURPTUltcGxl
bWVudGF0aW9uRnJvbnQ6OmRlcmVmKCkKCVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRlcmVmKCkK
CUNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZGVyZWYoKQoJRnJhbWVWaWV3OjpkZXJlZigpCglC
aWRpQ29udGV4dDo6ZGVyZWYoKSBjb25zdAoJRm9ybUVsZW1lbnRLZXk6OmRlcmVmKCkgY29uc3QK
Qm90aCBjb25zdCBhbmQgbm9uLWNvbnN0IHZlcnNpb25zIG9mIHNoYWRvd1RyZWVSb290Tm9kZSgp
OgoJTm9kZTo6c2hhZG93VHJlZVJvb3ROb2RlKCkKCVNlbGVjdGlvbkNvbnRyb2xsZXI6OnNoYWRv
d1RyZWVSb290Tm9kZSgpIGNvbnN0CglSYW5nZTo6c2hhZG93VHJlZVJvb3ROb2RlKCkgY29uc3QK
CVNlbGVjdGlvbjo6c2hhZG93VHJlZVJvb3ROb2RlKCkgY29uc3QKQm90aCBjb25zdCBhbmQgbm9u
LWNvbnN0IHZlcnNpb25zIG9mIHN0b3AoKToKCUZyYW1lTG9hZGVyOjpzdG9wKCkKCVJlbmRlck1h
cnF1ZWU6OnN0b3AoKQoJWE1MSHR0cFJlcXVlc3Q6OnN0b3AoKQoJQWN0aXZlRE9NT2JqZWN0Ojpz
dG9wKCkKCVNRTGl0ZVRyYW5zYWN0aW9uOjpzdG9wKCkKCUhUTUxNYXJxdWVlRWxlbWVudDo6c3Rv
cCgpCglEYXRhYmFzZTo6c3RvcCgpCglET01XaW5kb3c6OnN0b3AoKQoJVGltZXJCYXNlOjpzdG9w
KCkKCUJpZGlDaGFyYWN0ZXJSdW46OnN0b3AoKSBjb25zdApCb3RoIGNvbnN0IGFuZCBub24tY29u
c3QgdmVyc2lvbnMgb2YgZG9BY2Nlc3NpYmlsaXR5SGl0VGVzdChXZWJDb3JlOjpJbnRQb2ludCBj
b25zdCYpOgoJQWNjZXNzaWJpbGl0eUxpc3RCb3g6OmRvQWNjZXNzaWJpbGl0eUhpdFRlc3QoV2Vi
Q29yZTo6SW50UG9pbnQgY29uc3QmKQoJQWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9BY2Nlc3NpYmls
aXR5SGl0VGVzdChXZWJDb3JlOjpJbnRQb2ludCBjb25zdCYpIGNvbnN0CglBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0Ojpkb0FjY2Vzc2liaWxpdHlIaXRUZXN0KFdlYkNvcmU6OkludFBvaW50IGNv
bnN0JikgY29uc3QKQm90aCBjb25zdCBhbmQgbm9uLWNvbnN0IHZlcnNpb25zIG9mIGl0ZW0odW5z
aWduZWQgaW50KToKCUNTU1J1bGVMaXN0OjppdGVtKHVuc2lnbmVkIGludCkKCVBsdWdpbkFycmF5
OjppdGVtKHVuc2lnbmVkIGludCkKCUNTU1ZhbHVlTGlzdDo6aXRlbSh1bnNpZ25lZCBpbnQpCglN
aW1lVHlwZUFycmF5OjppdGVtKHVuc2lnbmVkIGludCkKCVN0eWxlU2hlZXRMaXN0OjppdGVtKHVu
c2lnbmVkIGludCkKCUhUTUxGb3JtRWxlbWVudDo6aXRlbSh1bnNpZ25lZCBpbnQpCglIVE1MU2Vs
ZWN0RWxlbWVudDo6aXRlbSh1bnNpZ25lZCBpbnQpCglTVkdFbGVtZW50SW5zdGFuY2VMaXN0Ojpp
dGVtKHVuc2lnbmVkIGludCkKCVdlYktpdENTU0tleWZyYW1lc1J1bGU6Oml0ZW0odW5zaWduZWQg
aW50KQoJQ1NTVmFyaWFibGVzRGVjbGFyYXRpb246Oml0ZW0odW5zaWduZWQgaW50KQoJUGx1Z2lu
OjppdGVtKHVuc2lnbmVkIGludCkKCVN0eWxlTGlzdDo6aXRlbSh1bnNpZ25lZCBpbnQpCglOYW1l
ZEF0dHJNYXA6Oml0ZW0odW5zaWduZWQgaW50KSBjb25zdAoJQ2hpbGROb2RlTGlzdDo6aXRlbSh1
bnNpZ25lZCBpbnQpIGNvbnN0CglIVE1MQ29sbGVjdGlvbjo6aXRlbSh1bnNpZ25lZCBpbnQpIGNv
bnN0CglTdGF0aWNOb2RlTGlzdDo6aXRlbSh1bnNpZ25lZCBpbnQpIGNvbnN0CglEeW5hbWljTm9k
ZUxpc3Q6Oml0ZW0odW5zaWduZWQgaW50KSBjb25zdAoJSFRNTEZvcm1Db2xsZWN0aW9uOjppdGVt
KHVuc2lnbmVkIGludCkgY29uc3QKCVdlYktpdENTU0tleWZyYW1lc1J1bGU6Oml0ZW0odW5zaWdu
ZWQgaW50KSBjb25zdAoJQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246Oml0ZW0odW5zaWduZWQg
aW50KSBjb25zdAoJQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjppdGVtKHVuc2lnbmVkIGlu
dCkgY29uc3QKCUZpbGVMaXN0OjppdGVtKHVuc2lnbmVkIGludCkgY29uc3QKCU1lZGlhTGlzdDo6
aXRlbSh1bnNpZ25lZCBpbnQpIGNvbnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25zdCB2ZXJzaW9u
cyBvZiB0b0Zsb2F0KGJvb2wqKToKCVN0cmluZ0ltcGw6OnRvRmxvYXQoYm9vbCopCglBdG9taWNT
dHJpbmc6OnRvRmxvYXQoYm9vbCopIGNvbnN0CglTdHJpbmc6OnRvRmxvYXQoYm9vbCopIGNvbnN0
CkJvdGggY29uc3QgYW5kIG5vbi1jb25zdCB2ZXJzaW9ucyBvZiByZXF1ZXN0KCk6CglEb2N1bWVu
dExvYWRlcjo6cmVxdWVzdCgpCglQb2xpY3lDaGVjazo6cmVxdWVzdCgpIGNvbnN0CglEb2N1bWVu
dExvYWRlcjo6cmVxdWVzdCgpIGNvbnN0CglSZXNvdXJjZUhhbmRsZTo6cmVxdWVzdCgpIGNvbnN0
CglSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdCgpIGNvbnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25z
dCB2ZXJzaW9ucyBvZiBjb2x1bW5Db3VudCgpOgoJU1FMaXRlU3RhdGVtZW50Ojpjb2x1bW5Db3Vu
dCgpCglBY2Nlc3NpYmlsaXR5VGFibGU6OmNvbHVtbkNvdW50KCkKCVJlbmRlclN0eWxlOjpjb2x1
bW5Db3VudCgpIGNvbnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25zdCB2ZXJzaW9ucyBvZiB0b1Bh
dGhEYXRhKCk6CglTVkdQYXRoU2VnTGlzdDo6dG9QYXRoRGF0YSgpCglTVkdMaW5lRWxlbWVudDo6
dG9QYXRoRGF0YSgpIGNvbnN0CglTVkdQYXRoRWxlbWVudDo6dG9QYXRoRGF0YSgpIGNvbnN0CglT
VkdSZWN0RWxlbWVudDo6dG9QYXRoRGF0YSgpIGNvbnN0CglTVkdDaXJjbGVFbGVtZW50Ojp0b1Bh
dGhEYXRhKCkgY29uc3QKCVNWR0VsbGlwc2VFbGVtZW50Ojp0b1BhdGhEYXRhKCkgY29uc3QKCVNW
R1BvbHlnb25FbGVtZW50Ojp0b1BhdGhEYXRhKCkgY29uc3QKCVNWR1BvbHlsaW5lRWxlbWVudDo6
dG9QYXRoRGF0YSgpIGNvbnN0CglTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6dG9QYXRo
RGF0YSgpIGNvbnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25zdCB2ZXJzaW9ucyBvZiBsYXN0Q2hp
bGQoKToKCVRyZWVXYWxrZXI6Omxhc3RDaGlsZCgpCglDb3VudGVyTm9kZTo6bGFzdENoaWxkKCkg
Y29uc3QKCVJlbmRlckxheWVyOjpsYXN0Q2hpbGQoKSBjb25zdAoJUmVuZGVyTWVkaWE6Omxhc3RD
aGlsZCgpIGNvbnN0CglSZW5kZXJPYmplY3Q6Omxhc3RDaGlsZCgpIGNvbnN0CglDb250YWluZXJO
b2RlOjpsYXN0Q2hpbGQoKSBjb25zdAoJSW5saW5lRmxvd0JveDo6bGFzdENoaWxkKCkgY29uc3QK
CVJlbmRlckNvbnRhaW5lcjo6bGFzdENoaWxkKCkgY29uc3QKCVJlbmRlclNWR0NvbnRhaW5lcjo6
bGFzdENoaWxkKCkgY29uc3QKCVNWR0VsZW1lbnRJbnN0YW5jZTo6bGFzdENoaWxkKCkgY29uc3QK
CUFjY2Vzc2liaWxpdHlPYmplY3Q6Omxhc3RDaGlsZCgpIGNvbnN0CglSZXBsYWNlbWVudEZyYWdt
ZW50OjpsYXN0Q2hpbGQoKSBjb25zdAoJQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bGFzdENo
aWxkKCkgY29uc3QKCU5vZGU6Omxhc3RDaGlsZCgpIGNvbnN0CglGcmFtZVRyZWU6Omxhc3RDaGls
ZCgpIGNvbnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25zdCB2ZXJzaW9ucyBvZiBwbHVnaW5zKCk6
CglEb2N1bWVudDo6cGx1Z2lucygpCglQbHVnaW5EYXRhOjpwbHVnaW5zKCkgY29uc3QKCU5hdmln
YXRvcjo6cGx1Z2lucygpIGNvbnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25zdCB2ZXJzaW9ucyBv
ZiBib3JkZXJMZWZ0KCk6CglJbmxpbmVGbG93Qm94Ojpib3JkZXJMZWZ0KCkKCVJlbmRlclN0eWxl
Ojpib3JkZXJMZWZ0KCkgY29uc3QKCVJlbmRlclRhYmxlOjpib3JkZXJMZWZ0KCkgY29uc3QKCVJl
bmRlck9iamVjdDo6Ym9yZGVyTGVmdCgpIGNvbnN0CglSZW5kZXJUYWJsZUNlbGw6OmJvcmRlckxl
ZnQoKSBjb25zdApCb3RoIGNvbnN0IGFuZCBub24tY29uc3QgdmVyc2lvbnMgb2YgZnJvbUxhc3Qo
KToKCURlcHJlY2F0ZWRWYWx1ZUxpc3Q8V2ViQ29yZTo6Q1NTUHJvcGVydHk+Ojpmcm9tTGFzdCgp
CglEZXByZWNhdGVkVmFsdWVMaXN0SW1wbDo6ZnJvbUxhc3QoKQoJRGVwcmVjYXRlZFZhbHVlTGlz
dDxXZWJDb3JlOjpDU1NQcm9wZXJ0eT46OmZyb21MYXN0KCkgY29uc3QKCURlcHJlY2F0ZWRWYWx1
ZUxpc3RJbXBsOjpmcm9tTGFzdCgpIGNvbnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25zdCB2ZXJz
aW9ucyBvZiBmaXJzdE5vZGUoKToKCURlcHJlY2F0ZWRWYWx1ZUxpc3RJbXBsOjpmaXJzdE5vZGUo
KQoJRGVwcmVjYXRlZFZhbHVlTGlzdEltcGw6OmZpcnN0Tm9kZSgpIGNvbnN0CglSYW5nZTo6Zmly
c3ROb2RlKCkgY29uc3QKCVhQYXRoOjpOb2RlU2V0OjpmaXJzdE5vZGUoKSBjb25zdApCb3RoIGNv
bnN0IGFuZCBub24tY29uc3QgdmVyc2lvbnMgb2YgYmVnaW4oKToKCUZyYW1lTG9hZGVyOjpiZWdp
bigpCglIVE1MVG9rZW5pemVyOjpiZWdpbigpCglQcmVsb2FkU2Nhbm5lcjo6YmVnaW4oKQoJU01J
TFRpbWVDb250YWluZXI6OmJlZ2luKCkKCVNRTGl0ZVRyYW5zYWN0aW9uOjpiZWdpbigpCglEZXBy
ZWNhdGVkVmFsdWVMaXN0PFdURjo6UmVmUHRyPFdlYkNvcmU6OlJlZ2lzdGVyZWRFdmVudExpc3Rl
bmVyPiA+OjpiZWdpbigpCglEZXByZWNhdGVkVmFsdWVMaXN0SW1wbDo6YmVnaW4oKQoJQXBwbGlj
YXRpb25DYWNoZTo6YmVnaW4oKSBjb25zdAoJRGVwcmVjYXRlZFZhbHVlTGlzdDxXZWJDb3JlOjpD
U1NQcm9wZXJ0eT46OmJlZ2luKCkgY29uc3QKCURlcHJlY2F0ZWRWYWx1ZUxpc3RJbXBsOjpiZWdp
bigpIGNvbnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25zdCB2ZXJzaW9ucyBvZiBmb2N1cygpOgoJ
RW1wdHlDaHJvbWVDbGllbnQ6OmZvY3VzKCkKCURPTVdpbmRvdzo6Zm9jdXMoKQoJQ2hyb21lOjpm
b2N1cygpIGNvbnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25zdCB2ZXJzaW9ucyBvZiBpc1ZhbGlk
KCk6CglTVkdUcmFuc2Zvcm06OmlzVmFsaWQoKQoJU1ZHRWxlbWVudDo6aXNWYWxpZCgpIGNvbnN0
CglDU1NGb250RmFjZTo6aXNWYWxpZCgpIGNvbnN0CglTVkdBRWxlbWVudDo6aXNWYWxpZCgpIGNv
bnN0CglTVkdHRWxlbWVudDo6aXNWYWxpZCgpIGNvbnN0CglUZXh0RW5jb2Rpbmc6OmlzVmFsaWQo
KSBjb25zdAoJU1ZHU1ZHRWxlbWVudDo6aXNWYWxpZCgpIGNvbnN0CglTVkdVc2VFbGVtZW50Ojpp
c1ZhbGlkKCkgY29uc3QKCVNWR0RlZnNFbGVtZW50Ojppc1ZhbGlkKCkgY29uc3QKCVNWR0xpbmVF
bGVtZW50Ojppc1ZhbGlkKCkgY29uc3QKCVNWR01hc2tFbGVtZW50Ojppc1ZhbGlkKCkgY29uc3QK
CVNWR1BhdGhFbGVtZW50Ojppc1ZhbGlkKCkgY29uc3QKCVNWR1BvbHlFbGVtZW50Ojppc1ZhbGlk
KCkgY29uc3QKCVNWR1JlY3RFbGVtZW50Ojppc1ZhbGlkKCkgY29uc3QKCVN1YnN0aXR1dGVEYXRh
Ojppc1ZhbGlkKCkgY29uc3QKCVNWR0ltYWdlRWxlbWVudDo6aXNWYWxpZCgpIGNvbnN0CglTVkdD
aXJjbGVFbGVtZW50Ojppc1ZhbGlkKCkgY29uc3QKCVNWR0N1cnNvckVsZW1lbnQ6OmlzVmFsaWQo
KSBjb25zdAoJU1ZHU3dpdGNoRWxlbWVudDo6aXNWYWxpZCgpIGNvbnN0CglDU1NGb250RmFjZVNv
dXJjZTo6aXNWYWxpZCgpIGNvbnN0CglTVkdFbGxpcHNlRWxlbWVudDo6aXNWYWxpZCgpIGNvbnN0
CglTVkdQYXR0ZXJuRWxlbWVudDo6aXNWYWxpZCgpIGNvbnN0CglTVkdDbGlwUGF0aEVsZW1lbnQ6
OmlzVmFsaWQoKSBjb25zdAoJSmF2YVNjcmlwdENhbGxGcmFtZTo6aXNWYWxpZCgpIGNvbnN0CglD
U1NTZWdtZW50ZWRGb250RmFjZTo6aXNWYWxpZCgpIGNvbnN0CglTVkdUZXh0Q29udGVudEVsZW1l
bnQ6OmlzVmFsaWQoKSBjb25zdAoJU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OmlzVmFsaWQoKSBj
b25zdAoJS1VSTDo6aXNWYWxpZCgpIGNvbnN0CglDb2xvcjo6aXNWYWxpZCgpIGNvbnN0CglTVkdU
ZXN0czo6aXNWYWxpZCgpIGNvbnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25zdCB2ZXJzaW9ucyBv
ZiBjb3B5KCk6CglTdG9yYWdlTWFwOjpjb3B5KCkKCVN0cmluZ0ltcGw6OmNvcHkoKQoJU2VjdXJp
dHlPcmlnaW46OmNvcHkoKQoJRWRpdG9yOjpjb3B5KCkKCUhpc3RvcnlJdGVtOjpjb3B5KCkgY29u
c3QKCVNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CglTdHlsZUJveERhdGE6OmNvcHkoKSBjb25z
dAoJU3R5bGVDbGlwRGF0YTo6Y29weSgpIGNvbnN0CglTdHlsZUZpbGxEYXRhOjpjb3B5KCkgY29u
c3QKCVN0eWxlTWFza0RhdGE6OmNvcHkoKSBjb25zdAoJU3R5bGVNaXNjRGF0YTo6Y29weSgpIGNv
bnN0CglTdHlsZVN0b3BEYXRhOjpjb3B5KCkgY29uc3QKCVN0eWxlVGV4dERhdGE6OmNvcHkoKSBj
b25zdAoJU1ZHUmVuZGVyU3R5bGU6OmNvcHkoKSBjb25zdAoJU3R5bGVNYXJrZXJEYXRhOjpjb3B5
KCkgY29uc3QKCVN0eWxlU3Ryb2tlRGF0YTo6Y29weSgpIGNvbnN0CglTdHlsZVZpc3VhbERhdGE6
OmNvcHkoKSBjb25zdAoJU3R5bGVNYXJxdWVlRGF0YTo6Y29weSgpIGNvbnN0CglTdHlsZU11bHRp
Q29sRGF0YTo6Y29weSgpIGNvbnN0CglTdHlsZVN1cnJvdW5kRGF0YTo6Y29weSgpIGNvbnN0CglT
dHlsZUluaGVyaXRlZERhdGE6OmNvcHkoKSBjb25zdAoJU3R5bGVUcmFuc2Zvcm1EYXRhOjpjb3B5
KCkgY29uc3QKCVN0eWxlQmFja2dyb3VuZERhdGE6OmNvcHkoKSBjb25zdAoJU3R5bGVGbGV4aWJs
ZUJveERhdGE6OmNvcHkoKSBjb25zdAoJU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6Y29weSgpIGNv
bnN0CglTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpjb3B5KCkgY29uc3QKCUNTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uOjpjb3B5KCkgY29uc3QKCUNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bjo6Y29weSgpIGNvbnN0CglTdHJpbmc6OmNvcHkoKSBjb25zdAoJRm9ybURhdGE6OmNvcHkoKSBj
b25zdApCb3RoIGNvbnN0IGFuZCBub24tY29uc3QgdmVyc2lvbnMgb2YgZG9jTG9hZGVyKCk6CglY
U0xTdHlsZVNoZWV0Ojpkb2NMb2FkZXIoKQoJUmVxdWVzdDo6ZG9jTG9hZGVyKCkKCURvY3VtZW50
Ojpkb2NMb2FkZXIoKQoJQ1NTRm9udFNlbGVjdG9yOjpkb2NMb2FkZXIoKSBjb25zdApCb3RoIGNv
bnN0IGFuZCBub24tY29uc3QgdmVyc2lvbnMgb2YgaWRlbnRpZmllcigpOgoJUGFnZUdyb3VwOjpp
ZGVudGlmaWVyKCkKCUNvdW50ZXJDb250ZW50OjppZGVudGlmaWVyKCkgY29uc3QKCVJlc291cmNl
TG9hZGVyOjppZGVudGlmaWVyKCkgY29uc3QKCUNvdW50ZXI6OmlkZW50aWZpZXIoKSBjb25zdApC
b3RoIGNvbnN0IGFuZCBub24tY29uc3QgdmVyc2lvbnMgb2YgY29tcHV0ZWRTdHlsZSgpOgoJTm9k
ZTo6Y29tcHV0ZWRTdHlsZSgpCglFbGVtZW50Ojpjb21wdXRlZFN0eWxlKCkKCVBvc2l0aW9uOjpj
b21wdXRlZFN0eWxlKCkgY29uc3QKQm90aCBjb25zdCBhbmQgbm9uLWNvbnN0IHZlcnNpb25zIG9m
IHRvU3RyaW5nKCk6CglET01TZWxlY3Rpb246OnRvU3RyaW5nKCkKCVNWR1BhdGhTZWc6OnRvU3Ry
aW5nKCkgY29uc3QKCUdlb3Bvc2l0aW9uOjp0b1N0cmluZygpIGNvbnN0CglFeGNlcHRpb25CYXNl
Ojp0b1N0cmluZygpIGNvbnN0CglRdWFsaWZpZWROYW1lOjp0b1N0cmluZygpIGNvbnN0CglTVkdQ
YXRoU2VnQXJjOjp0b1N0cmluZygpIGNvbnN0CglTdHJpbmdCdWlsZGVyOjp0b1N0cmluZygpIGNv
bnN0CglTZWN1cml0eU9yaWdpbjo6dG9TdHJpbmcoKSBjb25zdAoJV29ya2VyTG9jYXRpb246OnRv
U3RyaW5nKCkgY29uc3QKCVNlZ21lbnRlZFN0cmluZzo6dG9TdHJpbmcoKSBjb25zdAoJSFRNTEFu
Y2hvckVsZW1lbnQ6OnRvU3RyaW5nKCkgY29uc3QKCVNWR1BhdGhTZWdDbG9zZVBhdGg6OnRvU3Ry
aW5nKCkgY29uc3QKCVNWR1BhdGhTZWdTaW5nbGVDb29yZDo6dG9TdHJpbmcoKSBjb25zdAoJU1ZH
UGF0aFNlZ0N1cnZldG9DdWJpYzo6dG9TdHJpbmcoKSBjb25zdAoJU1ZHUGF0aFNlZ0xpbmV0b1Zl
cnRpY2FsOjp0b1N0cmluZygpIGNvbnN0CglTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpYzo6dG9T
dHJpbmcoKSBjb25zdAoJU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWw6OnRvU3RyaW5nKCkgY29u
c3QKCVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGg6OnRvU3RyaW5nKCkgY29uc3QKCVhQYXRo
OjpWYWx1ZTo6dG9TdHJpbmcoKSBjb25zdAoJTG9jYXRpb246OnRvU3RyaW5nKCkgY29uc3QKQm90
aCBjb25zdCBhbmQgbm9uLWNvbnN0IHZlcnNpb25zIG9mIHZhbHVlKCk6CglIVE1MU2VsZWN0RWxl
bWVudDo6dmFsdWUoKQoJQ1NTUHJvcGVydHk6OnZhbHVlKCkgY29uc3QKCUNvdW50ZXJOb2RlOjp2
YWx1ZSgpIGNvbnN0CglIVE1MTElFbGVtZW50Ojp2YWx1ZSgpIGNvbnN0CglNZWRpYVF1ZXJ5RXhw
Ojp2YWx1ZSgpIGNvbnN0CglSZW5kZXJMaXN0SXRlbTo6dmFsdWUoKSBjb25zdAoJU1ZHUE9ETGlz
dEl0ZW08V2ViQ29yZTo6RmxvYXRQb2ludD46OnZhbHVlKCkgY29uc3QKCVNWR1BPRExpc3RJdGVt
PFdlYkNvcmU6OlNWR1RyYW5zZm9ybT46OnZhbHVlKCkgY29uc3QKCUhUTUxJbnB1dEVsZW1lbnQ6
OnZhbHVlKCkgY29uc3QKCUhUTUxQYXJhbUVsZW1lbnQ6OnZhbHVlKCkgY29uc3QKCUhUTUxCdXR0
b25FbGVtZW50Ojp2YWx1ZSgpIGNvbnN0CglIVE1MT3B0aW9uRWxlbWVudDo6dmFsdWUoKSBjb25z
dAoJSFRNTFRleHRBcmVhRWxlbWVudDo6dmFsdWUoKSBjb25zdAoJU1ZHQW5pbWF0ZWRQcm9wZXJ0
eTxXZWJDb3JlOjpTVkdBRWxlbWVudCwgV2ViQ29yZTo6U3RyaW5nLCAmKFdlYkNvcmU6OlNWR05h
bWVzOjphVGFnU3RyaW5nKSwgJihXZWJDb3JlOjpTVkdOYW1lczo6dGFyZ2V0QXR0clN0cmluZyk+
Ojp2YWx1ZSgpIGNvbnN0CglTVkdBbmltYXRlZFByb3BlcnR5PFdlYkNvcmU6OlNWR1NWR0VsZW1l
bnQsIFdlYkNvcmU6OlNWR0xlbmd0aCwgJihXZWJDb3JlOjpTVkdOYW1lczo6c3ZnVGFnU3RyaW5n
KSwgJihXZWJDb3JlOjpTVkdOYW1lczo6eEF0dHJTdHJpbmcpPjo6dmFsdWUoKSBjb25zdAoJU1ZH
QW5pbWF0ZWRQcm9wZXJ0eTxXZWJDb3JlOjpTVkdTVkdFbGVtZW50LCBXZWJDb3JlOjpTVkdMZW5n
dGgsICYoV2ViQ29yZTo6U1ZHTmFtZXM6OnN2Z1RhZ1N0cmluZyksICYoV2ViQ29yZTo6U1ZHTmFt
ZXM6OnlBdHRyU3RyaW5nKT46OnZhbHVlKCkgY29uc3QKCVNWR0FuaW1hdGVkUHJvcGVydHk8V2Vi
Q29yZTo6U1ZHU1ZHRWxlbWVudCwgV2ViQ29yZTo6U1ZHTGVuZ3RoLCAmKFdlYkNvcmU6OlNWR05h
bWVzOjpzdmdUYWdTdHJpbmcpLCAmKFdlYkNvcmU6OlNWR05hbWVzOjp3aWR0aEF0dHJTdHJpbmcp
Pjo6dmFsdWUoKSBjb25zdAoJU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxXZWJDb3JlOjpTVkdTVkdFbGVt
ZW50LCBXZWJDb3JlOjpTVkdMZW5ndGgsICYoV2ViQ29yZTo6U1ZHTmFtZXM6OnN2Z1RhZ1N0cmlu
ZyksICYoV2ViQ29yZTo6U1ZHTmFtZXM6OmhlaWdodEF0dHJTdHJpbmcpPjo6dmFsdWUoKSBjb25z
dAoJU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxXZWJDb3JlOjpTVkdVc2VFbGVtZW50LCBXZWJDb3JlOjpT
VkdMZW5ndGgsICYoV2ViQ29yZTo6U1ZHTmFtZXM6OnVzZVRhZ1N0cmluZyksICYoV2ViQ29yZTo6
U1ZHTmFtZXM6OnhBdHRyU3RyaW5nKT46OnZhbHVlKCkgY29uc3QKCVNWR0FuaW1hdGVkUHJvcGVy
dHk8V2ViQ29yZTo6U1ZHVXNlRWxlbWVudCwgV2ViQ29yZTo6U1ZHTGVuZ3RoLCAmKFdlYkNvcmU6
OlNWR05hbWVzOjp1c2VUYWdTdHJpbmcpLCAmKFdlYkNvcmU6OlNWR05hbWVzOjp5QXR0clN0cmlu
Zyk+Ojp2YWx1ZSgpIGNvbnN0CglTVkdBbmltYXRlZFByb3BlcnR5PFdlYkNvcmU6OlNWR1VzZUVs
ZW1lbnQsIFdlYkNvcmU6OlNWR0xlbmd0aCwgJihXZWJDb3JlOjpTVkdOYW1lczo6dXNlVGFnU3Ry
aW5nKSwgJihXZWJDb3JlOjpTVkdOYW1lczo6d2lkdGhBdHRyU3RyaW5nKT46OnZhbHVlKCkgY29u
c3QKCVNWR0FuaW1hdGVkUHJvcGVydHk8V2ViQ29yZTo6U1ZHVXNlRWxlbWVudCwgV2ViQ29yZTo6
U1ZHTGVuZ3RoLCAmKFdlYkNvcmU6OlNWR05hbWVzOjp1c2VUYWdTdHJpbmcpLCAmKFdlYkNvcmU6
OlNWR05hbWVzOjpoZWlnaHRBdHRyU3RyaW5nKT46OnZhbHVlKCkgY29uc3QKCVNWR0FuaW1hdGVk
UHJvcGVydHk8V2ViQ29yZTo6U1ZHTGluZUVsZW1lbnQsIFdlYkNvcmU6OlNWR0xlbmd0aCwgJihX
ZWJDb3JlOjpTVkdOYW1lczo6bGluZVRhZ1N0cmluZyksICYoV2ViQ29yZTo6U1ZHTmFtZXM6Ongx
QXR0clN0cmluZyk+Ojp2YWx1ZSgpIGNvbnN0CglTVkdBbmltYXRlZFByb3BlcnR5PFdlYkNvcmU6
OlNWR0xpbmVFbGVtZW50LCBXZWJDb3JlOjpTVkdMZW5ndGgsICYoV2ViQ29yZTo6U1ZHTmFtZXM6
OmxpbmVUYWdTdHJpbmcpLCAmKFdlYkNvcmU6OlNWR05hbWVzOjp4MkF0dHJTdHJpbmcpPjo6dmFs
dWUoKSBjb25zdAoJU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxXZWJDb3JlOjpTVkdMaW5lRWxlbWVudCwg
V2ViQ29yZTo6U1ZHTGVuZ3RoLCAmKFdlYkNvcmU6OlNWR05hbWVzOjpsaW5lVGFnU3RyaW5nKSwg
JihXZWJDb3JlOjpTVkdOYW1lczo6eTFBdHRyU3RyaW5nKT46OnZhbHVlKCkgY29uc3QKCVNWR0Fu
aW1hdGVkUHJvcGVydHk8V2ViQ29yZTo6U1ZHTGluZUVsZW1lbnQsIFdlYkNvcmU6OlNWR0xlbmd0
aCwgJihXZWJDb3JlOjpTVkdOYW1lczo6bGluZVRhZ1N0cmluZyksICYoV2ViQ29yZTo6U1ZHTmFt
ZXM6OnkyQXR0clN0cmluZyk+Ojp2YWx1ZSgpIGNvbnN0CglTVkdBbmltYXRlZFByb3BlcnR5PFdl
YkNvcmU6OlNWR01hc2tFbGVtZW50LCBXZWJDb3JlOjpTVkdMZW5ndGgsICYoV2ViQ29yZTo6U1ZH
TmFtZXM6Om1hc2tUYWdTdHJpbmcpLCAmKFdlYkNvcmU6OlNWR05hbWVzOjp4QXR0clN0cmluZyk+
Ojp2YWx1ZSgpIGNvbnN0CglTVkdBbmltYXRlZFByb3BlcnR5PFdlYkNvcmU6OlNWR01hc2tFbGVt
ZW50LCBXZWJDb3JlOjpTVkdMZW5ndGgsICYoV2ViQ29yZTo6U1ZHTmFtZXM6Om1hc2tUYWdTdHJp
bmcpLCAmKFdlYkNvcmU6OlNWR05hbWVzOjp5QXR0clN0cmluZyk+Ojp2YWx1ZSgpIGNvbnN0CglT
VkdBbmltYXRlZFByb3BlcnR5PFdlYkNvcmU6OlNWR01hc2tFbGVtZW50LCBXZWJDb3JlOjpTVkdM
ZW5ndGgsICYoV2ViQ29yZTo6U1ZHTmFtZXM6Om1hc2tUYWdTdHJpbmcpLCAmKFdlYkNvcmU6OlNW
R05hbWVzOjp3aWR0aEF0dHJTdHJpbmcpPjo6dmFsdWUoKSBjb25zdAoJU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eTxXZWJDb3JlOjpTVkdNYXNrRWxlbWVudCwgV2ViQ29yZTo6U1ZHTGVuZ3RoLCAmKFdlYkNv
cmU6OlNWR05hbWVzOjptYXNrVGFnU3RyaW5nKSwgJihXZWJDb3JlOjpTVkdOYW1lczo6aGVpZ2h0
QXR0clN0cmluZyk+Ojp2YWx1ZSgpIGNvbnN0CglTVkdBbmltYXRlZFByb3BlcnR5PFdlYkNvcmU6
OlNWR01hc2tFbGVtZW50LCBpbnQsICYoV2ViQ29yZTo6U1ZHTmFtZXM6Om1hc2tUYWdTdHJpbmcp
LCAmKFdlYkNvcmU6OlNWR05hbWVzOjptYXNrVW5pdHNBdHRyU3RyaW5nKT46OnZhbHVlKCkgY29u
c3QKCVNWR0FuaW1hdGVkUHJvcGVydHk8V2ViQ29yZTo6U1ZHTWFza0VsZW1lbnQsIGludCwgJihX
ZWJDb3JlOjpTVkdOYW1lczo6bWFza1RhZ1N0cmluZyksICYoV2ViQ29yZTo6U1ZHTmFtZXM6Om1h
c2tDb250ZW50VW5pdHNBdHRyU3RyaW5nKT46OnZhbHVlKCkgY29uc3QKCVNWR0FuaW1hdGVkUHJv
cGVydHk8V2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQsIGZsb2F0LCAmKFdlYkNvcmU6OlNWR05hbWVz
OjpwYXRoVGFnU3RyaW5nKSwgJihXZWJDb3JlOjpTVkdOYW1lczo6cGF0aExlbmd0aEF0dHJTdHJp
bmcpPjo6dmFsdWUoKSBjb25zdAoJU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxXZWJDb3JlOjpTVkdSZWN0
RWxlbWVudCwgV2ViQ29yZTo6U1ZHTGVuZ3RoLCAmKFdlYkNvcmU6OlNWR05hbWVzOjpyZWN0VGFn
U3RyaW5nKSwgJihXZWJDb3JlOjpTVkdOYW1lczo6eEF0dHJTdHJpbmcpPjo6dmFsdWUoKSBjb25z
dAoJU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxXZWJDb3JlOjpTVkdSZWN0RWxlbWVudCwgV2ViQ29yZTo6
U1ZHTGVuZ3RoLCAmKFdlYkNvcmU6OlNWR05hbWVzOjpyZWN0VGFnU3RyaW5nKSwgJihXZWJDb3Jl
OjpTVkdOYW1lczo6eUF0dHJTdHJpbmcpPjo6dmFsdWUoKSBjb25zdAoJU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eTxXZWJDb3JlOjpTVkdSZWN0RWxlbWVudCwgV2ViQ29yZTo6U1ZHTGVuZ3RoLCAmKFdlYkNv
cmU6OlNWR05hbWVzOjpyZWN0VGFnU3RyaW5nKSwgJihXZWJDb3JlOjpTVkdOYW1lczo6cnhBdHRy
U3RyaW5nKT46OnZhbHVlKCkgY29uc3QKCVNWR0FuaW1hdGVkUHJvcGVydHk8V2ViQ29yZTo6U1ZH
UmVjdEVsZW1lbnQsIFdlYkNvcmU6OlNWR0xlbmd0aCwgJihXZWJDb3JlOjpTVkdOYW1lczo6cmVj
dFRhZ1N0cmluZyksICYoV2ViQ29yZTo6U1ZHTmFtZXM6OnJ5QXR0clN0cmluZyk+Ojp2YWx1ZSgp
IGNvbnN0CglTVkdBbmltYXRlZFByb3BlcnR5PFdlYkNvcmU6OlNWR1JlY3RFbGVtZW50LCBXZWJD
b3JlOjpTVkdMZW5ndGgsICYoV2ViQ29yZTo6U1ZHTmFtZXM6OnJlY3RUYWdTdHJpbmcpLCAmKFdl
YkNvcmU6OlNWR05hbWVzOjp3aWR0aEF0dHJTdHJpbmcpPjo6dmFsdWUoKSBjb25zdAoJU1ZHQW5p
bWF0ZWRQcm9wZXJ0eTxXZWJDb3JlOjpTVkdSZWN0RWxlbWVudCwgV2ViQ29yZTo6U1ZHTGVuZ3Ro
LCAmKFdlYkNvcmU6OlNWR05hbWVzOjpyZWN0VGFnU3RyaW5nKSwgJihXZWJDb3JlOjpTVkdOYW1l
czo6aGVpZ2h0QXR0clN0cmluZyk+Ojp2YWx1ZSgpIGNvbnN0CglTVkdBbmltYXRlZFByb3BlcnR5
PFdlYkNvcmU6OlNWR1N0b3BFbGVtZW50LCBmbG9hdCwgJihXZWJDb3JlOjpTVkdOYW1lczo6c3Rv
cFRhZ1N0cmluZyksICYoV2ViQ29yZTo6U1ZHTmFtZXM6Om9mZnNldEF0dHJTdHJpbmcpPjo6dmFs
dWUoKSBjb25zdAoJU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxXZWJDb3JlOjpTVkdUZXh0RWxlbWVudCwg
V2ViQ29yZTo6U1ZHVHJhbnNmb3JtTGlzdCwgJihXZWJDb3JlOjpTVkdOYW1lczo6dGV4dFRhZ1N0
cmluZyksICYoV2ViQ29yZTo6U1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHJTdHJpbmcpPjo6dmFsdWUo
KSBjb25zdAoJU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxXZWJDb3JlOjpTVkdGaXRUb1ZpZXdCb3gsIFdl
YkNvcmU6OlNWR1ByZXNlcnZlQXNwZWN0UmF0aW8sICYoV2ViQ29yZTo6U1ZHRml0VG9WaWV3Qm94
SWRlbnRpZmllciksICYoV2ViQ29yZTo6U1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRy
U3RyaW5nKT46OnZhbHVlKCkgY29uc3QKCVNWR0FuaW1hdGVkUHJvcGVydHk8V2ViQ29yZTo6U1ZH
Rml0VG9WaWV3Qm94LCBXZWJDb3JlOjpGbG9hdFJlY3QsICYoV2ViQ29yZTo6U1ZHRml0VG9WaWV3
Qm94SWRlbnRpZmllciksICYoV2ViQ29yZTo6U1ZHTmFtZXM6OnZpZXdCb3hBdHRyU3RyaW5nKT46
OnZhbHVlKCkgY29uc3QKCVNWR0FuaW1hdGVkUHJvcGVydHk8V2ViQ29yZTo6U1ZHSW1hZ2VFbGVt
ZW50LCBXZWJDb3JlOjpTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLCAmKFdlYkNvcmU6OlNWR05hbWVz
OjppbWFnZVRhZ1N0cmluZyksICYoV2ViQ29yZTo6U1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0
aW9BdHRyU3RyaW5nKT46OnZhbHVlKCkgY29uc3QKCVNWR0FuaW1hdGVkUHJvcGVydHk8V2ViQ29y
ZTo6U1ZHSW1hZ2VFbGVtZW50LCBXZWJDb3JlOjpTVkdMZW5ndGgsICYoV2ViQ29yZTo6U1ZHTmFt
ZXM6OmltYWdlVGFnU3RyaW5nKSwgJihXZWJDb3JlOjpTVkdOYW1lczo6eEF0dHJTdHJpbmcpPjo6
dmFsdWUoKSBjb25zdAoJU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxXZWJDb3JlOjpTVkdJbWFnZUVsZW1l
bnQsIFdlYkNvcmU6OlNWR0xlbmd0aCwgJihXZWJDb3JlOjpTVkdOYW1lczo6aW1hZ2VUYWdTdHJp
bmcpLCAmKFdlYkNvcmU6OlNWR05hbWVzOjp5QXR0clN0cmluZyk+Ojp2YWx1ZSgpIGNvbnN0CglT
VkdBbmltYXRlZFByb3BlcnR5PFdlYkNvcmU6OlNWR0ltYWdlRWxlbWVudCwgV2ViQ29yZTo6U1ZH
TGVuZ3RoLCAmKFdlYkNvcmU6OlNWR05hbWVzOjppbWFnZVRhZ1N0cmluZyksICYoV2ViQ29yZTo6
U1ZHTmFtZXM6OndpZHRoQXR0clN0cmluZyk+Ojp2YWx1ZSgpIGNvbnN0CglTVkdBbmltYXRlZFBy
b3BlcnR5PFdlYkNvcmU6OlNWR0ltYWdlRWxlbWVudCwgV2ViQ29yZTo6U1ZHTGVuZ3RoLCAmKFdl
YkNvcmU6OlNWR05hbWVzOjppbWFnZVRhZ1N0cmluZyksICYoV2ViQ29yZTo6U1ZHTmFtZXM6Omhl
aWdodEF0dHJTdHJpbmcpPjo6dmFsdWUoKSBjb25zdAoJU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxXZWJD
b3JlOjpTVkdVUklSZWZlcmVuY2UsIFdlYkNvcmU6OlN0cmluZywgJihXZWJDb3JlOjpTVkdVUklS
ZWZlcmVuY2VJZGVudGlmaWVyKSwgJihXZWJDb3JlOjpYTGlua05hbWVzOjpocmVmQXR0clN0cmlu
Zyk+Ojp2YWx1ZSgpIGNvbnN0CglTVkdBbmltYXRlZFByb3BlcnR5PFdlYkNvcmU6OlNWR0NpcmNs
ZUVsZW1lbnQsIFdlYkNvcmU6OlNWR0xlbmd0aCwgJihXZWJDb3JlOjpTVkdOYW1lczo6Y2lyY2xl
VGFnU3RyaW5nKSwgJihXZWJDb3JlOjpTVkdOYW1lczo6ckF0dHJTdHJpbmcpPjo6dmFsdWUoKSBj
b25zdAoJU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxXZWJDb3JlOjpTVkdDaXJjbGVFbGVtZW50LCBXZWJD
b3JlOjpTVkdMZW5ndGgsICYoV2ViQ29yZTo6U1ZHTmFtZXM6OmNpcmNsZVRhZ1N0cmluZyksICYo
V2ViQ29yZTo6U1ZHTmFtZXM6OmN4QXR0clN0cmluZyk+Ojp2YWx1ZSgpIGNvbnN0CglTVkdBbmlt
YXRlZFByb3BlcnR5PFdlYkNvcmU6OlNWR0NpcmNsZUVsZW1lbnQsIFdlYkNvcmU6OlNWR0xlbmd0
aCwgJihXZWJDb3JlOjpTVkdOYW1lczo6Y2lyY2xlVGFnU3RyaW5nKSwgJihXZWJDb3JlOjpTVkdO
YW1lczo6Y3lBdHRyU3RyaW5nKT46OnZhbHVlKCkgY29uc3QKCVNWR0FuaW1hdGVkUHJvcGVydHk8
V2ViQ29yZTo6U1ZHQ3Vyc29yRWxlbWVudCwgV2ViQ29yZTo6U1ZHTGVuZ3RoLCAmKFdlYkNvcmU6
OlNWR05hbWVzOjpjdXJzb3JUYWdTdHJpbmcpLCAmKFdlYkNvcmU6OlNWR05hbWVzOjp4QXR0clN0
cmluZyk+Ojp2YWx1ZSgpIGNvbnN0CglTVkdBbmltYXRlZFByb3BlcnR5PFdlYkNvcmU6OlNWR0N1
cnNvckVsZW1lbnQsIFdlYkNvcmU6OlNWR0xlbmd0aCwgJihXZWJDb3JlOjpTVkdOYW1lczo6Y3Vy
c29yVGFnU3RyaW5nKSwgJihXZWJDb3JlOjpTVkdOYW1lczo6eUF0dHJTdHJpbmcpPjo6dmFsdWUo
KSBjb25zdAoJU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50LCBX
ZWJDb3JlOjpTVkdBbmdsZSwgJihXZWJDb3JlOjpTVkdOYW1lczo6bWFya2VyVGFnU3RyaW5nKSwg
JihXZWJDb3JlOjpTVkdPcmllbnRBbmdsZUF0dHJJZGVudGlmaWVyKT46OnZhbHVlKCkgY29uc3QK
CVNWR0FuaW1hdGVkUHJvcGVydHk8V2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudCwgV2ViQ29yZTo6
U1ZHTGVuZ3RoLCAmKFdlYkNvcmU6OlNWR05hbWVzOjptYXJrZXJUYWdTdHJpbmcpLCAmKFdlYkNv
cmU6OlNWR05hbWVzOjpyZWZYQXR0clN0cmluZyk+Ojp2YWx1ZSgpIGNvbnN0CglTVkdBbmltYXRl
ZFByb3BlcnR5PFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQsIFdlYkNvcmU6OlNWR0xlbmd0aCwg
JihXZWJDb3JlOjpTVkdOYW1lczo6bWFya2VyVGFnU3RyaW5nKSwgJihXZWJDb3JlOjpTVkdOYW1l
czo6cmVmWUF0dHJTdHJpbmcpPjo6dmFsdWUoKSBjb25zdAoJU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxX
ZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50LCBXZWJDb3JlOjpTVkdMZW5ndGgsICYoV2ViQ29yZTo6
U1ZHTmFtZXM6Om1hcmtlclRhZ1N0cmluZyksICYoV2ViQ29yZTo6U1ZHTmFtZXM6Om1hcmtlcldp
ZHRoQXR0clN0cmluZyk+Ojp2YWx1ZSgpIGNvbnN0CglTVkdBbmltYXRlZFByb3BlcnR5PFdlYkNv
cmU6OlNWR01hcmtlckVsZW1lbnQsIFdlYkNvcmU6OlNWR0xlbmd0aCwgJihXZWJDb3JlOjpTVkdO
YW1lczo6bWFya2VyVGFnU3RyaW5nKSwgJihXZWJDb3JlOjpTVkdOYW1lczo6bWFya2VySGVpZ2h0
QXR0clN0cmluZyk+Ojp2YWx1ZSgpIGNvbnN0CglTVkdBbmltYXRlZFByb3BlcnR5PFdlYkNvcmU6
OlNWR01hcmtlckVsZW1lbnQsIGludCwgJihXZWJDb3JlOjpTVkdOYW1lczo6bWFya2VyVGFnU3Ry
aW5nKSwgJihXZWJDb3JlOjpTVkdOYW1lczo6bWFya2VyVW5pdHNBdHRyU3RyaW5nKT46OnZhbHVl
KCkgY29uc3QKCVNWR0FuaW1hdGVkUHJvcGVydHk8V2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudCwg
aW50LCAmKFdlYkNvcmU6OlNWR05hbWVzOjptYXJrZXJUYWdTdHJpbmcpLCAmKFdlYkNvcmU6OlNW
R09yaWVudFR5cGVBdHRySWRlbnRpZmllcik+Ojp2YWx1ZSgpIGNvbnN0CglTVkdBbmltYXRlZFBy
b3BlcnR5PFdlYkNvcmU6OlNWR1N0eWxlZEVsZW1lbnQsIFdlYkNvcmU6OlN0cmluZywgJihXZWJD
b3JlOjpTVkdTdHlsZWRFbGVtZW50SWRlbnRpZmllciksICYoV2ViQ29yZTo6SFRNTE5hbWVzOjpj
bGFzc0F0dHJTdHJpbmcpPjo6dmFsdWUoKSBjb25zdAoJU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxXZWJD
b3JlOjpTVkdFbGxpcHNlRWxlbWVudCwgV2ViQ29yZTo6U1ZHTGVuZ3RoLCAmKFdlYkNvcmU6OlNW
R05hbWVzOjplbGxpcHNlVGFnU3RyaW5nKSwgJihXZWJDb3JlOjpTVkdOYW1lczo6Y3hBdHRyU3Ry
aW5nKT46OnZhbHVlKCkgY29uc3QKCVNWR0FuaW1hdGVkUHJvcGVydHk8V2ViQ29yZTo6U1ZHRWxs
aXBzZUVsZW1lbnQsIFdlYkNvcmU6OlNWR0xlbmd0aCwgJihXZWJDb3JlOjpTVkdOYW1lczo6ZWxs
aXBzZVRhZ1N0cmluZyksICYoV2ViQ29yZTo6U1ZHTmFtZXM6OmN5QXR0clN0cmluZyk+Ojp2YWx1
ZSgpIGNvbnN0CglTVkdBbmltYXRlZFByb3BlcnR5PFdlYkNvcmU6OlNWR0VsbGlwc2VFbGVtZW50
LCBXZWJDb3JlOjpTVkdMZW5ndGgsICYoV2ViQ29yZTo6U1ZHTmFtZXM6OmVsbGlwc2VUYWdTdHJp
bmcpLCAmKFdlYkNvcmU6OlNWR05hbWVzOjpyeEF0dHJTdHJpbmcpPjo6dmFsdWUoKSBjb25zdAoJ
U1ZHQW5pbWF0ZWRQcm9wZXJ0eTxXZWJDb3JlOjpTVkdFbGxpcHNlRWxlbWVudCwgV2ViQ29yZTo6
U1ZHTGVuZ3RoLCAmKFdlYkNvcmU6OlNWR05hbWVzOjplbGxpcHNlVGFnU3RyaW5nKSwgJihXZWJD
b3JlOjpTVkdOYW1lczo6cnlBdHRyU3RyaW5nKT46OnZhbHVlKCkgY29uc3QKCVNWR0FuaW1hdGVk
UHJvcGVydHk8V2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQsIFdlYkNvcmU6OlNWR1RyYW5zZm9y
bUxpc3QsICYoV2ViQ29yZTo6U1ZHTmFtZXM6OnBhdHRlcm5UYWdTdHJpbmcpLCAmKFdlYkNvcmU6
OlNWR05hbWVzOjpwYXR0ZXJuVHJhbnNmb3JtQXR0clN0cmluZyk+Ojp2YWx1ZSgpIGNvbnN0CglT
VkdBbmltYXRlZFByb3BlcnR5PFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50LCBXZWJDb3JlOjpT
VkdMZW5ndGgsICYoV2ViQ29yZTo6U1ZHTmFtZXM6OnBhdHRlcm5UYWdTdHJpbmcpLCAmKFdlYkNv
cmU6OlNWR05hbWVzOjp4QXR0clN0cmluZyk+Ojp2YWx1ZSgpIGNvbnN0CglTVkdBbmltYXRlZFBy
b3BlcnR5PFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50LCBXZWJDb3JlOjpTVkdMZW5ndGgsICYo
V2ViQ29yZTo6U1ZHTmFtZXM6OnBhdHRlcm5UYWdTdHJpbmcpLCAmKFdlYkNvcmU6OlNWR05hbWVz
Ojp5QXR0clN0cmluZyk+Ojp2YWx1ZSgpIGNvbnN0CglTVkdBbmltYXRlZFByb3BlcnR5PFdlYkNv
cmU6OlNWR1BhdHRlcm5FbGVtZW50LCBXZWJDb3JlOjpTVkdMZW5ndGgsICYoV2ViQ29yZTo6U1ZH
TmFtZXM6OnBhdHRlcm5UYWdTdHJpbmcpLCAmKFdlYkNvcmU6OlNWR05hbWVzOjp3aWR0aEF0dHJT
dHJpbmcpPjo6dmFsdWUoKSBjb25zdAoJU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxXZWJDb3JlOjpTVkdQ
YXR0ZXJuRWxlbWVudCwgV2ViQ29yZTo6U1ZHTGVuZ3RoLCAmKFdlYkNvcmU6OlNWR05hbWVzOjpw
YXR0ZXJuVGFnU3RyaW5nKSwgJihXZWJDb3JlOjpTVkdOYW1lczo6aGVpZ2h0QXR0clN0cmluZyk+
Ojp2YWx1ZSgpIGNvbnN0CglTVkdBbmltYXRlZFByb3BlcnR5PFdlYkNvcmU6OlNWR1BhdHRlcm5F
bGVtZW50LCBpbnQsICYoV2ViQ29yZTo6U1ZHTmFtZXM6OnBhdHRlcm5UYWdTdHJpbmcpLCAmKFdl
YkNvcmU6OlNWR05hbWVzOjpwYXR0ZXJuVW5pdHNBdHRyU3RyaW5nKT46OnZhbHVlKCkgY29uc3QK
CVNWR0FuaW1hdGVkUHJvcGVydHk8V2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQsIGludCwgJihX
ZWJDb3JlOjpTVkdOYW1lczo6cGF0dGVyblRhZ1N0cmluZyksICYoV2ViQ29yZTo6U1ZHTmFtZXM6
OnBhdHRlcm5Db250ZW50VW5pdHNBdHRyU3RyaW5nKT46OnZhbHVlKCkgY29uc3QKCVNWR0FuaW1h
dGVkUHJvcGVydHk8V2ViQ29yZTo6U1ZHQ2xpcFBhdGhFbGVtZW50LCBpbnQsICYoV2ViQ29yZTo6
U1ZHTmFtZXM6OmNsaXBQYXRoVGFnU3RyaW5nKSwgJihXZWJDb3JlOjpTVkdOYW1lczo6Y2xpcFBh
dGhVbml0c0F0dHJTdHJpbmcpPjo6dmFsdWUoKSBjb25zdAoJU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxX
ZWJDb3JlOjpTVkdHcmFkaWVudEVsZW1lbnQsIFdlYkNvcmU6OlNWR1RyYW5zZm9ybUxpc3QsICYo
V2ViQ29yZTo6U1ZHR3JhZGllbnRFbGVtZW50SWRlbnRpZmllciksICYoV2ViQ29yZTo6U1ZHTmFt
ZXM6OmdyYWRpZW50VHJhbnNmb3JtQXR0clN0cmluZyk+Ojp2YWx1ZSgpIGNvbnN0CglTVkdBbmlt
YXRlZFByb3BlcnR5PFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVudCwgaW50LCAmKFdlYkNvcmU6
OlNWR0dyYWRpZW50RWxlbWVudElkZW50aWZpZXIpLCAmKFdlYkNvcmU6OlNWR05hbWVzOjpzcHJl
YWRNZXRob2RBdHRyU3RyaW5nKT46OnZhbHVlKCkgY29uc3QKCVNWR0FuaW1hdGVkUHJvcGVydHk8
V2ViQ29yZTo6U1ZHR3JhZGllbnRFbGVtZW50LCBpbnQsICYoV2ViQ29yZTo6U1ZHR3JhZGllbnRF
bGVtZW50SWRlbnRpZmllciksICYoV2ViQ29yZTo6U1ZHTmFtZXM6OmdyYWRpZW50VW5pdHNBdHRy
U3RyaW5nKT46OnZhbHVlKCkgY29uc3QKCVNWR0FuaW1hdGVkUHJvcGVydHk8V2ViQ29yZTo6U1ZH
VGV4dFBhdGhFbGVtZW50LCBXZWJDb3JlOjpTVkdMZW5ndGgsICYoV2ViQ29yZTo6U1ZHTmFtZXM6
OnRleHRQYXRoVGFnU3RyaW5nKSwgJihXZWJDb3JlOjpTVkdOYW1lczo6c3RhcnRPZmZzZXRBdHRy
U3RyaW5nKT46OnZhbHVlKCkgY29uc3QKCVNWR0FuaW1hdGVkUHJvcGVydHk8V2ViQ29yZTo6U1ZH
VGV4dFBhdGhFbGVtZW50LCBpbnQsICYoV2ViQ29yZTo6U1ZHTmFtZXM6OnRleHRQYXRoVGFnU3Ry
aW5nKSwgJihXZWJDb3JlOjpTVkdOYW1lczo6bWV0aG9kQXR0clN0cmluZyk+Ojp2YWx1ZSgpIGNv
bnN0CglTVkdBbmltYXRlZFByb3BlcnR5PFdlYkNvcmU6OlNWR1RleHRQYXRoRWxlbWVudCwgaW50
LCAmKFdlYkNvcmU6OlNWR05hbWVzOjp0ZXh0UGF0aFRhZ1N0cmluZyksICYoV2ViQ29yZTo6U1ZH
TmFtZXM6OnNwYWNpbmdBdHRyU3RyaW5nKT46OnZhbHVlKCkgY29uc3QKCVNWR0FuaW1hdGVkUHJv
cGVydHk8V2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50LCBXZWJDb3JlOjpTVkdMZW5ndGgs
ICYoV2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50SWRlbnRpZmllciksICYoV2ViQ29yZTo6
U1ZHTmFtZXM6OnRleHRMZW5ndGhBdHRyU3RyaW5nKT46OnZhbHVlKCkgY29uc3QKCVNWR0FuaW1h
dGVkUHJvcGVydHk8V2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50LCBpbnQsICYoV2ViQ29y
ZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50SWRlbnRpZmllciksICYoV2ViQ29yZTo6U1ZHTmFtZXM6
Omxlbmd0aEFkanVzdEF0dHJTdHJpbmcpPjo6dmFsdWUoKSBjb25zdAoJU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eTxXZWJDb3JlOjpTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgV2ViQ29yZTo6U1ZHTGVuZ3Ro
LCAmKFdlYkNvcmU6OlNWR05hbWVzOjpmb3JlaWduT2JqZWN0VGFnU3RyaW5nKSwgJihXZWJDb3Jl
OjpTVkdOYW1lczo6eEF0dHJTdHJpbmcpPjo6dmFsdWUoKSBjb25zdAoJU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eTxXZWJDb3JlOjpTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgV2ViQ29yZTo6U1ZHTGVuZ3Ro
LCAmKFdlYkNvcmU6OlNWR05hbWVzOjpmb3JlaWduT2JqZWN0VGFnU3RyaW5nKSwgJihXZWJDb3Jl
OjpTVkdOYW1lczo6eUF0dHJTdHJpbmcpPjo6dmFsdWUoKSBjb25zdAoJU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eTxXZWJDb3JlOjpTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgV2ViQ29yZTo6U1ZHTGVuZ3Ro
LCAmKFdlYkNvcmU6OlNWR05hbWVzOjpmb3JlaWduT2JqZWN0VGFnU3RyaW5nKSwgJihXZWJDb3Jl
OjpTVkdOYW1lczo6d2lkdGhBdHRyU3RyaW5nKT46OnZhbHVlKCkgY29uc3QKCVNWR0FuaW1hdGVk
UHJvcGVydHk8V2ViQ29yZTo6U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFdlYkNvcmU6OlNWR0xl
bmd0aCwgJihXZWJDb3JlOjpTVkdOYW1lczo6Zm9yZWlnbk9iamVjdFRhZ1N0cmluZyksICYoV2Vi
Q29yZTo6U1ZHTmFtZXM6OmhlaWdodEF0dHJTdHJpbmcpPjo6dmFsdWUoKSBjb25zdAoJU1ZHQW5p
bWF0ZWRQcm9wZXJ0eTxXZWJDb3JlOjpTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFdlYkNvcmU6
OlNWR0xlbmd0aCwgJihXZWJDb3JlOjpTVkdOYW1lczo6bGluZWFyR3JhZGllbnRUYWdTdHJpbmcp
LCAmKFdlYkNvcmU6OlNWR05hbWVzOjp4MUF0dHJTdHJpbmcpPjo6dmFsdWUoKSBjb25zdAoJU1ZH
QW5pbWF0ZWRQcm9wZXJ0eTxXZWJDb3JlOjpTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFdlYkNv
cmU6OlNWR0xlbmd0aCwgJihXZWJDb3JlOjpTVkdOYW1lczo6bGluZWFyR3JhZGllbnRUYWdTdHJp
bmcpLCAmKFdlYkNvcmU6OlNWR05hbWVzOjp4MkF0dHJTdHJpbmcpPjo6dmFsdWUoKSBjb25zdAoJ
U1ZHQW5pbWF0ZWRQcm9wZXJ0eTxXZWJDb3JlOjpTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFdl
YkNvcmU6OlNWR0xlbmd0aCwgJihXZWJDb3JlOjpTVkdOYW1lczo6bGluZWFyR3JhZGllbnRUYWdT
dHJpbmcpLCAmKFdlYkNvcmU6OlNWR05hbWVzOjp5MUF0dHJTdHJpbmcpPjo6dmFsdWUoKSBjb25z
dAoJU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxXZWJDb3JlOjpTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQs
IFdlYkNvcmU6OlNWR0xlbmd0aCwgJihXZWJDb3JlOjpTVkdOYW1lczo6bGluZWFyR3JhZGllbnRU
YWdTdHJpbmcpLCAmKFdlYkNvcmU6OlNWR05hbWVzOjp5MkF0dHJTdHJpbmcpPjo6dmFsdWUoKSBj
b25zdAoJU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxXZWJDb3JlOjpTVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQsIFdlYkNvcmU6OlNWR0xlbmd0aCwgJihXZWJDb3JlOjpTVkdOYW1lczo6cmFkaWFsR3JhZGll
bnRUYWdTdHJpbmcpLCAmKFdlYkNvcmU6OlNWR05hbWVzOjpyQXR0clN0cmluZyk+Ojp2YWx1ZSgp
IGNvbnN0CglTVkdBbmltYXRlZFByb3BlcnR5PFdlYkNvcmU6OlNWR1JhZGlhbEdyYWRpZW50RWxl
bWVudCwgV2ViQ29yZTo6U1ZHTGVuZ3RoLCAmKFdlYkNvcmU6OlNWR05hbWVzOjpyYWRpYWxHcmFk
aWVudFRhZ1N0cmluZyksICYoV2ViQ29yZTo6U1ZHTmFtZXM6OmN4QXR0clN0cmluZyk+Ojp2YWx1
ZSgpIGNvbnN0CglTVkdBbmltYXRlZFByb3BlcnR5PFdlYkNvcmU6OlNWR1JhZGlhbEdyYWRpZW50
RWxlbWVudCwgV2ViQ29yZTo6U1ZHTGVuZ3RoLCAmKFdlYkNvcmU6OlNWR05hbWVzOjpyYWRpYWxH
cmFkaWVudFRhZ1N0cmluZyksICYoV2ViQ29yZTo6U1ZHTmFtZXM6OmN5QXR0clN0cmluZyk+Ojp2
YWx1ZSgpIGNvbnN0CglTVkdBbmltYXRlZFByb3BlcnR5PFdlYkNvcmU6OlNWR1JhZGlhbEdyYWRp
ZW50RWxlbWVudCwgV2ViQ29yZTo6U1ZHTGVuZ3RoLCAmKFdlYkNvcmU6OlNWR05hbWVzOjpyYWRp
YWxHcmFkaWVudFRhZ1N0cmluZyksICYoV2ViQ29yZTo6U1ZHTmFtZXM6OmZ4QXR0clN0cmluZyk+
Ojp2YWx1ZSgpIGNvbnN0CglTVkdBbmltYXRlZFByb3BlcnR5PFdlYkNvcmU6OlNWR1JhZGlhbEdy
YWRpZW50RWxlbWVudCwgV2ViQ29yZTo6U1ZHTGVuZ3RoLCAmKFdlYkNvcmU6OlNWR05hbWVzOjpy
YWRpYWxHcmFkaWVudFRhZ1N0cmluZyksICYoV2ViQ29yZTo6U1ZHTmFtZXM6OmZ5QXR0clN0cmlu
Zyk+Ojp2YWx1ZSgpIGNvbnN0CglTVkdBbmltYXRlZFByb3BlcnR5PFdlYkNvcmU6OlNWR1RleHRQ
b3NpdGlvbmluZ0VsZW1lbnQsIFdlYkNvcmU6OlNWR0xlbmd0aExpc3QsICYoV2ViQ29yZTo6U1ZH
VGV4dFBvc2l0aW9uaW5nRWxlbWVudElkZW50aWZpZXIpLCAmKFdlYkNvcmU6OlNWR05hbWVzOjp4
QXR0clN0cmluZyk+Ojp2YWx1ZSgpIGNvbnN0CglTVkdBbmltYXRlZFByb3BlcnR5PFdlYkNvcmU6
OlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFdlYkNvcmU6OlNWR0xlbmd0aExpc3QsICYoV2Vi
Q29yZTo6U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudElkZW50aWZpZXIpLCAmKFdlYkNvcmU6OlNW
R05hbWVzOjp5QXR0clN0cmluZyk+Ojp2YWx1ZSgpIGNvbnN0CglTVkdBbmltYXRlZFByb3BlcnR5
PFdlYkNvcmU6OlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFdlYkNvcmU6OlNWR0xlbmd0aExp
c3QsICYoV2ViQ29yZTo6U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudElkZW50aWZpZXIpLCAmKFdl
YkNvcmU6OlNWR05hbWVzOjpkeEF0dHJTdHJpbmcpPjo6dmFsdWUoKSBjb25zdAoJU1ZHQW5pbWF0
ZWRQcm9wZXJ0eTxXZWJDb3JlOjpTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LCBXZWJDb3JlOjpT
VkdMZW5ndGhMaXN0LCAmKFdlYkNvcmU6OlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnRJZGVudGlm
aWVyKSwgJihXZWJDb3JlOjpTVkdOYW1lczo6ZHlBdHRyU3RyaW5nKT46OnZhbHVlKCkgY29uc3QK
CVNWR0FuaW1hdGVkUHJvcGVydHk8V2ViQ29yZTo6U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwg
V2ViQ29yZTo6U1ZHTnVtYmVyTGlzdCwgJihXZWJDb3JlOjpTVkdUZXh0UG9zaXRpb25pbmdFbGVt
ZW50SWRlbnRpZmllciksICYoV2ViQ29yZTo6U1ZHTmFtZXM6OnJvdGF0ZUF0dHJTdHJpbmcpPjo6
dmFsdWUoKSBjb25zdAoJU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxXZWJDb3JlOjpTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLCBib29sLCAmKFdlYkNvcmU6OlNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWRJZGVudGlmaWVyKSwgJihXZWJDb3JlOjpTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZEF0dHJTdHJpbmcpPjo6dmFsdWUoKSBjb25zdAoJU1ZHQW5pbWF0ZWRQcm9wZXJ0eTxX
ZWJDb3JlOjpTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCwgV2ViQ29yZTo6U1ZHVHJhbnNm
b3JtTGlzdCwgJihXZWJDb3JlOjpTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudElkZW50aWZp
ZXIpLCAmKFdlYkNvcmU6OlNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyU3RyaW5nKT46OnZhbHVlKCkg
Y29uc3QKCUF0dHI6OnZhbHVlKCkgY29uc3QKCUxlbmd0aDo6dmFsdWUoKSBjb25zdAoJU01JTFRp
bWU6OnZhbHVlKCkgY29uc3QKCVNWR0FuZ2xlOjp2YWx1ZSgpIGNvbnN0CglBdHRyaWJ1dGU6OnZh
bHVlKCkgY29uc3QKCVNjcm9sbGJhcjo6dmFsdWUoKSBjb25zdApCb3RoIGNvbnN0IGFuZCBub24t
Y29uc3QgdmVyc2lvbnMgb2YgZW5kKCk6CglGcmFtZUxvYWRlcjo6ZW5kKCkKCVhNTFRva2VuaXpl
cjo6ZW5kKCkKCUhUTUxUb2tlbml6ZXI6OmVuZCgpCglQcmVsb2FkU2Nhbm5lcjo6ZW5kKCkKCURl
cHJlY2F0ZWRWYWx1ZUxpc3Q8V1RGOjpSZWZQdHI8V2ViQ29yZTo6UmVnaXN0ZXJlZEV2ZW50TGlz
dGVuZXI+ID46OmVuZCgpCglEZXByZWNhdGVkVmFsdWVMaXN0SW1wbDo6ZW5kKCkKCUlubGluZVRl
eHRCb3g6OmVuZCgpIGNvbnN0CglBcHBsaWNhdGlvbkNhY2hlOjplbmQoKSBjb25zdAoJSFRNTE1l
ZGlhRWxlbWVudDo6ZW5kKCkgY29uc3QKCVJlbmRlclRleHRGcmFnbWVudDo6ZW5kKCkgY29uc3QK
CVNlbGVjdGlvbkNvbnRyb2xsZXI6OmVuZCgpIGNvbnN0CglEZXByZWNhdGVkVmFsdWVMaXN0SW1w
bDo6ZW5kKCkgY29uc3QKCVNlbGVjdGlvbjo6ZW5kKCkgY29uc3QKQm90aCBjb25zdCBhbmQgbm9u
LWNvbnN0IHZlcnNpb25zIG9mIGZpcnN0Q2hpbGQoKToKCVRyZWVXYWxrZXI6OmZpcnN0Q2hpbGQo
KQoJQ291bnRlck5vZGU6OmZpcnN0Q2hpbGQoKSBjb25zdAoJUmVuZGVyTGF5ZXI6OmZpcnN0Q2hp
bGQoKSBjb25zdAoJUmVuZGVyTWVkaWE6OmZpcnN0Q2hpbGQoKSBjb25zdAoJUmVuZGVyT2JqZWN0
OjpmaXJzdENoaWxkKCkgY29uc3QKCUNvbnRhaW5lck5vZGU6OmZpcnN0Q2hpbGQoKSBjb25zdAoJ
SW5saW5lRmxvd0JveDo6Zmlyc3RDaGlsZCgpIGNvbnN0CglSZW5kZXJDb250YWluZXI6OmZpcnN0
Q2hpbGQoKSBjb25zdAoJUmVuZGVyU1ZHQ29udGFpbmVyOjpmaXJzdENoaWxkKCkgY29uc3QKCVNW
R0VsZW1lbnRJbnN0YW5jZTo6Zmlyc3RDaGlsZCgpIGNvbnN0CglBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpmaXJzdENoaWxkKCkgY29uc3QKCVJlcGxhY2VtZW50RnJhZ21lbnQ6OmZpcnN0Q2hpbGQoKSBj
b25zdAoJQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Zmlyc3RDaGlsZCgpIGNvbnN0CglOb2Rl
OjpmaXJzdENoaWxkKCkgY29uc3QKCUZyYW1lVHJlZTo6Zmlyc3RDaGlsZCgpIGNvbnN0CkJvdGgg
Y29uc3QgYW5kIG5vbi1jb25zdCB2ZXJzaW9ucyBvZiBuZXR3b3JrU3RhdGUoKToKCU1lZGlhUGxh
eWVyOjpuZXR3b3JrU3RhdGUoKQoJSFRNTE1lZGlhRWxlbWVudDo6bmV0d29ya1N0YXRlKCkgY29u
c3QKCU1lZGlhUGxheWVyUHJpdmF0ZTo6bmV0d29ya1N0YXRlKCkgY29uc3QKQm90aCBjb25zdCBh
bmQgbm9uLWNvbnN0IHZlcnNpb25zIG9mIGRhdGFiYXNlKCk6CglTUUxUcmFuc2FjdGlvbjo6ZGF0
YWJhc2UoKQoJU1FMaXRlU3RhdGVtZW50OjpkYXRhYmFzZSgpCglEYXRhYmFzZVRhc2s6OmRhdGFi
YXNlKCkgY29uc3QKQm90aCBjb25zdCBhbmQgbm9uLWNvbnN0IHZlcnNpb25zIG9mIGVuYWJsZWQo
KToKCUJhY2tGb3J3YXJkTGlzdDo6ZW5hYmxlZCgpCglTZWFyY2hQb3B1cE1lbnU6OmVuYWJsZWQo
KQoJQ29udGV4dE1lbnVJdGVtOjplbmFibGVkKCkgY29uc3QKCUluc3BlY3RvckNvbnRyb2xsZXI6
OmVuYWJsZWQoKSBjb25zdAoJRGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6ZW5hYmxlZCgpIGNvbnN0
CglTY3JvbGxiYXI6OmVuYWJsZWQoKSBjb25zdApCb3RoIGNvbnN0IGFuZCBub24tY29uc3QgdmVy
c2lvbnMgb2Ygb3duZXJEb2N1bWVudCgpOgoJWFNMU3R5bGVTaGVldDo6b3duZXJEb2N1bWVudCgp
CglYUGF0aE5hbWVzcGFjZTo6b3duZXJEb2N1bWVudCgpIGNvbnN0CglOb2RlOjpvd25lckRvY3Vt
ZW50KCkgY29uc3QKCVJhbmdlOjpvd25lckRvY3VtZW50KCkgY29uc3QKQm90aCBjb25zdCBhbmQg
bm9uLWNvbnN0IHZlcnNpb25zIG9mIHNob3coKToKCVNjcm9sbFZpZXc6OnNob3coKQoJRW1wdHlD
aHJvbWVDbGllbnQ6OnNob3coKQoJSW5zcGVjdG9yQ29udHJvbGxlcjo6c2hvdygpCglXaWRnZXQ6
OnNob3coKQoJQ2hyb21lOjpzaG93KCkgY29uc3QKQm90aCBjb25zdCBhbmQgbm9uLWNvbnN0IHZl
cnNpb25zIG9mIGltYWdlKFdlYkNvcmU6OlJlbmRlck9iamVjdCosIFdlYkNvcmU6OkludFNpemUg
Y29uc3QmKToKCUNTU0NhbnZhc1ZhbHVlOjppbWFnZShXZWJDb3JlOjpSZW5kZXJPYmplY3QqLCBX
ZWJDb3JlOjpJbnRTaXplIGNvbnN0JikKCUNTU0dyYWRpZW50VmFsdWU6OmltYWdlKFdlYkNvcmU6
OlJlbmRlck9iamVjdCosIFdlYkNvcmU6OkludFNpemUgY29uc3QmKQoJU3R5bGVDYWNoZWRJbWFn
ZTo6aW1hZ2UoV2ViQ29yZTo6UmVuZGVyT2JqZWN0KiwgV2ViQ29yZTo6SW50U2l6ZSBjb25zdCYp
IGNvbnN0CglTdHlsZUdlbmVyYXRlZEltYWdlOjppbWFnZShXZWJDb3JlOjpSZW5kZXJPYmplY3Qq
LCBXZWJDb3JlOjpJbnRTaXplIGNvbnN0JikgY29uc3QKQm90aCBjb25zdCBhbmQgbm9uLWNvbnN0
IHZlcnNpb25zIG9mIHBhZGRpbmdSaWdodCgpOgoJSW5saW5lRmxvd0JveDo6cGFkZGluZ1JpZ2h0
KCkKCVJlbmRlclN0eWxlOjpwYWRkaW5nUmlnaHQoKSBjb25zdAoJUmVuZGVyT2JqZWN0OjpwYWRk
aW5nUmlnaHQoKSBjb25zdApCb3RoIGNvbnN0IGFuZCBub24tY29uc3QgdmVyc2lvbnMgb2YgdG9J
bnQoYm9vbCopOgoJU3RyaW5nSW1wbDo6dG9JbnQoYm9vbCopCglBdG9taWNTdHJpbmc6OnRvSW50
KGJvb2wqKSBjb25zdAoJU3RyaW5nOjp0b0ludChib29sKikgY29uc3QKQm90aCBjb25zdCBhbmQg
bm9uLWNvbnN0IHZlcnNpb25zIG9mIGxvb2t1cE5hbWVzcGFjZVVSSShXZWJDb3JlOjpTdHJpbmcg
Y29uc3QmKToKCU5hdGl2ZVhQYXRoTlNSZXNvbHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJKFdlYkNv
cmU6OlN0cmluZyBjb25zdCYpCglKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcjo6bG9va3VwTmFtZXNw
YWNlVVJJKFdlYkNvcmU6OlN0cmluZyBjb25zdCYpCglET01DdXN0b21YUGF0aE5TUmVzb2x2ZXI6
Omxvb2t1cE5hbWVzcGFjZVVSSShXZWJDb3JlOjpTdHJpbmcgY29uc3QmKQoJTm9kZTo6bG9va3Vw
TmFtZXNwYWNlVVJJKFdlYkNvcmU6OlN0cmluZyBjb25zdCYpIGNvbnN0CkJvdGggY29uc3QgYW5k
IG5vbi1jb25zdCB2ZXJzaW9ucyBvZiByb3dzKCk6CglIVE1MVGFibGVFbGVtZW50Ojpyb3dzKCkK
CUFjY2Vzc2liaWxpdHlUYWJsZTo6cm93cygpCglIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6cm93
cygpCglTUUxSZXN1bHRTZXQ6OnJvd3MoKSBjb25zdAoJSFRNTEZyYW1lU2V0RWxlbWVudDo6cm93
cygpIGNvbnN0CglIVE1MVGV4dEFyZWFFbGVtZW50Ojpyb3dzKCkgY29uc3QKQm90aCBjb25zdCBh
bmQgbm9uLWNvbnN0IHZlcnNpb25zIG9mIHdpZHRoKCk6CglIVE1MRG9jdW1lbnQ6OndpZHRoKCkK
CUxlbmd0aFNpemU6OndpZHRoKCkgY29uc3QKCVJlbmRlclRleHQ6OndpZHRoKCkgY29uc3QKCVJl
bmRlckxheWVyOjp3aWR0aCgpIGNvbnN0CglSZW5kZXJTdHlsZTo6d2lkdGgoKSBjb25zdAoJVGV4
dE1ldHJpY3M6OndpZHRoKCkgY29uc3QKCVJlbmRlcklubGluZTo6d2lkdGgoKSBjb25zdAoJUmVu
ZGVyT2JqZWN0Ojp3aWR0aCgpIGNvbnN0CglIVE1MSFJFbGVtZW50Ojp3aWR0aCgpIGNvbnN0CglT
VkdTVkdFbGVtZW50Ojp3aWR0aCgpIGNvbnN0CglTVkdVc2VFbGVtZW50Ojp3aWR0aCgpIGNvbnN0
CglIVE1MUHJlRWxlbWVudDo6d2lkdGgoKSBjb25zdAoJU1ZHTWFza0VsZW1lbnQ6OndpZHRoKCkg
Y29uc3QKCVNWR1JlY3RFbGVtZW50Ojp3aWR0aCgpIGNvbnN0CglTVkdJbWFnZUVsZW1lbnQ6Ondp
ZHRoKCkgY29uc3QKCUhUTUxUYWJsZUVsZW1lbnQ6OndpZHRoKCkgY29uc3QKCUhUTUxWaWRlb0Vs
ZW1lbnQ6OndpZHRoKCkgY29uc3QKCUhUTUxDYW52YXNFbGVtZW50Ojp3aWR0aCgpIGNvbnN0CglI
VE1MSUZyYW1lRWxlbWVudDo6d2lkdGgoKSBjb25zdAoJSFRNTFBsdWdJbkVsZW1lbnQ6OndpZHRo
KCkgY29uc3QKCVBhdHRlcm5BdHRyaWJ1dGVzOjp3aWR0aCgpIGNvbnN0CglTVkdQYXR0ZXJuRWxl
bWVudDo6d2lkdGgoKSBjb25zdAoJUmVuZGVyU1ZHQ29udGFpbmVyOjp3aWR0aCgpIGNvbnN0CglI
VE1MVGFibGVDb2xFbGVtZW50Ojp3aWR0aCgpIGNvbnN0CglDb2xsYXBzZWRCb3JkZXJWYWx1ZTo6
d2lkdGgoKSBjb25zdAoJSFRNTEZyYW1lRWxlbWVudEJhc2U6OndpZHRoKCkgY29uc3QKCUhUTUxU
YWJsZUNlbGxFbGVtZW50Ojp3aWR0aCgpIGNvbnN0CglTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6
d2lkdGgoKSBjb25zdAoJUGVuOjp3aWR0aCgpIGNvbnN0CglJbWFnZTo6d2lkdGgoKSBjb25zdAoJ
U2NyZWVuOjp3aWR0aCgpIGNvbnN0CglXaWRnZXQ6OndpZHRoKCkgY29uc3QKCUludFJlY3Q6Ondp
ZHRoKCkgY29uc3QKCUludFNpemU6OndpZHRoKCkgY29uc3QKCUZsb2F0UmVjdDo6d2lkdGgoKSBj
b25zdAoJRmxvYXRTaXplOjp3aWR0aCgpIGNvbnN0CglJbWFnZURhdGE6OndpZHRoKCkgY29uc3QK
CUlubGluZUJveDo6d2lkdGgoKSBjb25zdAoJUmVuZGVyQm94Ojp3aWR0aCgpIGNvbnN0CkJvdGgg
Y29uc3QgYW5kIG5vbi1jb25zdCB2ZXJzaW9ucyBvZiBwYXJlbnRSdWxlKCk6CglDU1NWYXJpYWJs
ZXNEZWNsYXJhdGlvbjo6cGFyZW50UnVsZSgpCglDU1NTdHlsZURlY2xhcmF0aW9uOjpwYXJlbnRS
dWxlKCkgY29uc3QKCUNTU1J1bGU6OnBhcmVudFJ1bGUoKSBjb25zdApCb3RoIGNvbnN0IGFuZCBu
b24tY29uc3QgdmVyc2lvbnMgb2YgcG9zaXRpb24oKToKCUNTU1J1bGVEYXRhOjpwb3NpdGlvbigp
CglSZW5kZXJTdHlsZTo6cG9zaXRpb24oKSBjb25zdAoJQmlkaVJlc29sdmVyPFdlYkNvcmU6Oklu
bGluZUl0ZXJhdG9yLCBXZWJDb3JlOjpCaWRpUnVuPjo6cG9zaXRpb24oKSBjb25zdAoJUG9zaXRp
b25lZFZlY3RvcjxmbG9hdD46OnBvc2l0aW9uKCkgY29uc3QKCVJhbmdlQm91bmRhcnlQb2ludDo6
cG9zaXRpb24oKSBjb25zdAoJWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50Ojpwb3NpdGlvbigp
IGNvbnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25zdCB2ZXJzaW9ucyBvZiBub2RlKCk6CglEZXBy
ZWNhdGVkVmFsdWVMaXN0SW1wbEl0ZXJhdG9yOjpub2RlKCkKCVJlbmRlck9iamVjdDo6bm9kZSgp
IGNvbnN0CglUZXh0SXRlcmF0b3I6Om5vZGUoKSBjb25zdAoJTm9kZVdpdGhJbmRleDo6bm9kZSgp
IGNvbnN0CglQb3NpdGlvbkl0ZXJhdG9yOjpub2RlKCkgY29uc3QKCURlcHJlY2F0ZWRWYWx1ZUxp
c3RJbXBsSXRlcmF0b3I6Om5vZGUoKSBjb25zdAoJUG9zaXRpb246Om5vZGUoKSBjb25zdApCb3Ro
IGNvbnN0IGFuZCBub24tY29uc3QgdmVyc2lvbnMgb2Ygc2VsZWN0aW9uU3RhcnRFbmQoaW50Jiwg
aW50Jik6CglJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25TdGFydEVuZChpbnQmLCBpbnQmKQoJUmVu
ZGVyVmlldzo6c2VsZWN0aW9uU3RhcnRFbmQoaW50JiwgaW50JikgY29uc3QKCVJlbmRlck9iamVj
dDo6c2VsZWN0aW9uU3RhcnRFbmQoaW50JiwgaW50JikgY29uc3QKQm90aCBjb25zdCBhbmQgbm9u
LWNvbnN0IHZlcnNpb25zIG9mIG5leHQoKToKCUNTU1J1bGVEYXRhOjpuZXh0KCkKCUNTU1NlbGVj
dG9yOjpuZXh0KCkKCUZsZXhCb3hJdGVyYXRvcjo6bmV4dCgpCglEZXByZWNhdGVkUHRyTGlzdDxX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6RmxvYXRpbmdPYmplY3Q+OjpuZXh0KCkKCUNTU1BhcnNlclZh
bHVlTGlzdDo6bmV4dCgpCglJbmxpbmVNaW5NYXhJdGVyYXRvcjo6bmV4dCgpCglEZXByZWNhdGVk
UHRyTGlzdEltcGw6Om5leHQoKQoJQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI6Om5leHQoKQoJ
QmlkaVJ1bjo6bmV4dCgpCglGaWxsTGF5ZXI6Om5leHQoKQoJRm9udEZhbWlseTo6bmV4dCgpIGNv
bnN0CglCaWRpQ2hhcmFjdGVyUnVuOjpuZXh0KCkgY29uc3QKCUZpbGxMYXllcjo6bmV4dCgpIGNv
bnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25zdCB2ZXJzaW9ucyBvZiByZWYoKToKCVRyZWVTaGFy
ZWQ8V2ViQ29yZTo6U1ZHRWxlbWVudEluc3RhbmNlPjo6cmVmKCkKCVRyZWVTaGFyZWQ8V2ViQ29y
ZTo6Tm9kZT46OnJlZigpCglFdmVudFRhcmdldDo6cmVmKCkKCVJlbmRlcldpZGdldDo6cmVmKCkK
CVF1YWxpZmllZE5hbWU6OnJlZigpCglET01JbXBsZW1lbnRhdGlvbkZyb250OjpyZWYoKQoJU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6cmVmKCkKCUNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cmVm
KCkKCUNsaXBSZWN0czo6cmVmKCkKCUZyYW1lVmlldzo6cmVmKCkKCUJpZGlDb250ZXh0OjpyZWYo
KSBjb25zdAoJRm9ybUVsZW1lbnRLZXk6OnJlZigpIGNvbnN0CglLVVJMOjpyZWYoKSBjb25zdApC
b3RoIGNvbnN0IGFuZCBub24tY29uc3QgdmVyc2lvbnMgb2YgZnJhbWUoKToKCUpTQ3VzdG9tU1FM
VHJhbnNhY3Rpb25DYWxsYmFjazo6RGF0YTo6ZnJhbWUoKQoJRE9NV2luZG93OjpmcmFtZSgpCglG
cmFtZUxvYWRlcjo6ZnJhbWUoKSBjb25zdAoJRE9NU2VsZWN0aW9uOjpmcmFtZSgpIGNvbnN0CglE
b2N1bWVudExvYWRlcjo6ZnJhbWUoKSBjb25zdAoJSFRNTFRhYmxlRWxlbWVudDo6ZnJhbWUoKSBj
b25zdAoJRWRpdG9yOjpmcmFtZSgpIGNvbnN0CglIaXN0b3J5OjpmcmFtZSgpIGNvbnN0CglEb2N1
bWVudDo6ZnJhbWUoKSBjb25zdAoJTG9jYXRpb246OmZyYW1lKCkgY29uc3QKCURvY0xvYWRlcjo6
ZnJhbWUoKSBjb25zdAoJRnJhbWVWaWV3OjpmcmFtZSgpIGNvbnN0CglOYXZpZ2F0b3I6OmZyYW1l
KCkgY29uc3QKQm90aCBjb25zdCBhbmQgbm9uLWNvbnN0IHZlcnNpb25zIG9mIG9wZXJhdG9yIE5T
U3RyaW5nKigpOgoJU3RyaW5nSW1wbDo6b3BlcmF0b3IgTlNTdHJpbmcqKCkKCUF0b21pY1N0cmlu
Zzo6b3BlcmF0b3IgTlNTdHJpbmcqKCkgY29uc3QKCUtVUkw6Om9wZXJhdG9yIE5TU3RyaW5nKigp
IGNvbnN0CglTdHJpbmc6Om9wZXJhdG9yIE5TU3RyaW5nKigpIGNvbnN0CkJvdGggY29uc3QgYW5k
IG5vbi1jb25zdCB2ZXJzaW9ucyBvZiBnbG9iYWxPYmplY3QoKToKCVNjcmlwdENvbnRyb2xsZXI6
Omdsb2JhbE9iamVjdCgpCglKU0V2ZW50TGlzdGVuZXI6Omdsb2JhbE9iamVjdCgpIGNvbnN0CglK
U1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcjo6Z2xvYmFsT2JqZWN0KCkgY29uc3QKQm90aCBjb25z
dCBhbmQgbm9uLWNvbnN0IHZlcnNpb25zIG9mIGJvcmRlclJpZ2h0KCk6CglJbmxpbmVGbG93Qm94
Ojpib3JkZXJSaWdodCgpCglSZW5kZXJTdHlsZTo6Ym9yZGVyUmlnaHQoKSBjb25zdAoJUmVuZGVy
VGFibGU6OmJvcmRlclJpZ2h0KCkgY29uc3QKCVJlbmRlck9iamVjdDo6Ym9yZGVyUmlnaHQoKSBj
b25zdAoJUmVuZGVyVGFibGVDZWxsOjpib3JkZXJSaWdodCgpIGNvbnN0CkJvdGggY29uc3QgYW5k
IG5vbi1jb25zdCB2ZXJzaW9ucyBvZiBjaGlsZHJlbigpOgoJSFRNTEVsZW1lbnQ6OmNoaWxkcmVu
KCkKCUFjY2Vzc2liaWxpdHlPYmplY3Q6OmNoaWxkcmVuKCkKCUFjY2Vzc2liaWxpdHlUYWJsZUNv
bHVtbjo6Y2hpbGRyZW4oKQoJQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y2hpbGRyZW4oKQoJ
QWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyOjpjaGlsZHJlbigpCglTY3JvbGxWaWV3
OjpjaGlsZHJlbigpIGNvbnN0CglIaXN0b3J5SXRlbTo6Y2hpbGRyZW4oKSBjb25zdApCb3RoIGNv
bnN0IGFuZCBub24tY29uc3QgdmVyc2lvbnMgb2YgYm91bmRpbmdCb3goKToKCVJhbmdlOjpib3Vu
ZGluZ0JveCgpCglIaXRUZXN0UmVzdWx0Ojpib3VuZGluZ0JveCgpIGNvbnN0CglGbG9hdFF1YWQ6
OmJvdW5kaW5nQm94KCkgY29uc3QKQm90aCBjb25zdCBhbmQgbm9uLWNvbnN0IHZlcnNpb25zIG9m
IG5leHRTaWJsaW5nKCk6CglUcmVlV2Fsa2VyOjpuZXh0U2libGluZygpCglDb3VudGVyTm9kZTo6
bmV4dFNpYmxpbmcoKSBjb25zdAoJUmVuZGVyTGF5ZXI6Om5leHRTaWJsaW5nKCkgY29uc3QKCVJl
bmRlck9iamVjdDo6bmV4dFNpYmxpbmcoKSBjb25zdAoJU1ZHRWxlbWVudEluc3RhbmNlOjpuZXh0
U2libGluZygpIGNvbnN0CglBY2Nlc3NpYmlsaXR5T2JqZWN0OjpuZXh0U2libGluZygpIGNvbnN0
CglBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpuZXh0U2libGluZygpIGNvbnN0CglOb2RlOjpu
ZXh0U2libGluZygpIGNvbnN0CglGcmFtZVRyZWU6Om5leHRTaWJsaW5nKCkgY29uc3QKQm90aCBj
b25zdCBhbmQgbm9uLWNvbnN0IHZlcnNpb25zIG9mIHNjcm9sbFRvcCgpOgoJRWxlbWVudDo6c2Ny
b2xsVG9wKCkKCVJlbmRlck9iamVjdDo6c2Nyb2xsVG9wKCkgY29uc3QKCVJlbmRlckxpc3RCb3g6
OnNjcm9sbFRvcCgpIGNvbnN0CglIVE1MQm9keUVsZW1lbnQ6OnNjcm9sbFRvcCgpIGNvbnN0CglS
ZW5kZXJUZXh0Q29udHJvbDo6c2Nyb2xsVG9wKCkgY29uc3QKQm90aCBjb25zdCBhbmQgbm9uLWNv
bnN0IHZlcnNpb25zIG9mIGZpcnN0KCk6CglDU1NSdWxlRGF0YUxpc3Q6OmZpcnN0KCkKCUZsZXhC
b3hJdGVyYXRvcjo6Zmlyc3QoKQoJRGVwcmVjYXRlZFB0ckxpc3Q8V2ViQ29yZTo6UmVuZGVyQmxv
Y2s6OkZsb2F0aW5nT2JqZWN0Pjo6Zmlyc3QoKQoJRGVwcmVjYXRlZFB0ckxpc3RJbXBsOjpmaXJz
dCgpCglQYWlyOjpmaXJzdCgpIGNvbnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25zdCB2ZXJzaW9u
cyBvZiBpY29uVVJMKCk6CglJY29uUmVjb3JkOjppY29uVVJMKCkKCUZyYW1lTG9hZGVyOjppY29u
VVJMKCkKCURvY3VtZW50OjppY29uVVJMKCkgY29uc3QKQm90aCBjb25zdCBhbmQgbm9uLWNvbnN0
IHZlcnNpb25zIG9mIHdpZHRoRm9yR2x5cGgodW5zaWduZWQgc2hvcnQpOgoJR2x5cGhXaWR0aE1h
cDo6d2lkdGhGb3JHbHlwaCh1bnNpZ25lZCBzaG9ydCkKCUdseXBoV2lkdGhNYXA6OkdseXBoV2lk
dGhQYWdlOjp3aWR0aEZvckdseXBoKHVuc2lnbmVkIHNob3J0KSBjb25zdAoJU2ltcGxlRm9udERh
dGE6OndpZHRoRm9yR2x5cGgodW5zaWduZWQgc2hvcnQpIGNvbnN0CkJvdGggY29uc3QgYW5kIG5v
bi1jb25zdCB2ZXJzaW9ucyBvZiBhZGRMaW5lQm94UmVjdHMoV1RGOjpWZWN0b3I8V2ViQ29yZTo6
SW50UmVjdCwgMHVsPiYsIHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50LCBib29sKToKCVJlbmRl
ck9iamVjdDo6YWRkTGluZUJveFJlY3RzKFdURjo6VmVjdG9yPFdlYkNvcmU6OkludFJlY3QsIDB1
bD4mLCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCwgYm9vbCkKCVJlbmRlckNvbnRhaW5lcjo6
YWRkTGluZUJveFJlY3RzKFdURjo6VmVjdG9yPFdlYkNvcmU6OkludFJlY3QsIDB1bD4mLCB1bnNp
Z25lZCBpbnQsIHVuc2lnbmVkIGludCwgYm9vbCkKCVJlbmRlclRleHQ6OmFkZExpbmVCb3hSZWN0
cyhXVEY6OlZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0LCAwdWw+JiwgdW5zaWduZWQgaW50LCB1bnNp
Z25lZCBpbnQsIGJvb2wpIGNvbnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25zdCB2ZXJzaW9ucyBv
ZiB0eXBlKCk6CglSZW5kZXJCbG9jazo6RmxvYXRpbmdPYmplY3Q6OnR5cGUoKQoJQ1NTUGFnZVJ1
bGU6OnR5cGUoKSBjb25zdAoJQ1NTTWVkaWFSdWxlOjp0eXBlKCkgY29uc3QKCUNTU1N0eWxlUnVs
ZTo6dHlwZSgpIGNvbnN0CglET01TZWxlY3Rpb246OnR5cGUoKSBjb25zdAoJU1ZHVHJhbnNmb3Jt
Ojp0eXBlKCkgY29uc3QKCUNTU0ltcG9ydFJ1bGU6OnR5cGUoKSBjb25zdAoJQ1NTU3R5bGVTaGVl
dDo6dHlwZSgpIGNvbnN0CglIVE1MTElFbGVtZW50Ojp0eXBlKCkgY29uc3QKCUljb25MaW5rRW50
cnk6OnR5cGUoKSBjb25zdAoJWFNMU3R5bGVTaGVldDo6dHlwZSgpIGNvbnN0CglDU1NDaGFyc2V0
UnVsZTo6dHlwZSgpIGNvbnN0CglDYWNoZWRSZXNvdXJjZTo6dHlwZSgpIGNvbnN0CglGb3JtRWxl
bWVudEtleTo6dHlwZSgpIGNvbnN0CglIVE1MQ29sbGVjdGlvbjo6dHlwZSgpIGNvbnN0CglUaW1p
bmdGdW5jdGlvbjo6dHlwZSgpIGNvbnN0CglDU1NGb250RmFjZVJ1bGU6OnR5cGUoKSBjb25zdAoJ
Q29udGV4dE1lbnVJdGVtOjp0eXBlKCkgY29uc3QKCUhUTUxMaW5rRWxlbWVudDo6dHlwZSgpIGNv
bnN0CglTVkdTdHlsZUVsZW1lbnQ6OnR5cGUoKSBjb25zdAoJQ1NTR3JhZGllbnRWYWx1ZTo6dHlw
ZSgpIGNvbnN0CglDU1NWYXJpYWJsZXNSdWxlOjp0eXBlKCkgY29uc3QKCUhUTUxFbWJlZEVsZW1l
bnQ6OnR5cGUoKSBjb25zdAoJSFRNTElucHV0RWxlbWVudDo6dHlwZSgpIGNvbnN0CglIVE1MT0xp
c3RFbGVtZW50Ojp0eXBlKCkgY29uc3QKCUhUTUxQYXJhbUVsZW1lbnQ6OnR5cGUoKSBjb25zdAoJ
SFRNTFN0eWxlRWxlbWVudDo6dHlwZSgpIGNvbnN0CglIVE1MVUxpc3RFbGVtZW50Ojp0eXBlKCkg
Y29uc3QKCVNWR1NjcmlwdEVsZW1lbnQ6OnR5cGUoKSBjb25zdAoJSFRNTEFuY2hvckVsZW1lbnQ6
OnR5cGUoKSBjb25zdAoJSFRNTEJ1dHRvbkVsZW1lbnQ6OnR5cGUoKSBjb25zdAoJSFRNTEtleWdl
bkVsZW1lbnQ6OnR5cGUoKSBjb25zdAoJSFRNTExlZ2VuZEVsZW1lbnQ6OnR5cGUoKSBjb25zdAoJ
SFRNTE9iamVjdEVsZW1lbnQ6OnR5cGUoKSBjb25zdAoJSFRNTE9wdGlvbkVsZW1lbnQ6OnR5cGUo
KSBjb25zdAoJSFRNTFNjcmlwdEVsZW1lbnQ6OnR5cGUoKSBjb25zdAoJSFRNTFNlbGVjdEVsZW1l
bnQ6OnR5cGUoKSBjb25zdAoJSFRNTFNvdXJjZUVsZW1lbnQ6OnR5cGUoKSBjb25zdAoJSW5zcGVj
dG9yUmVzb3VyY2U6OnR5cGUoKSBjb25zdAoJSFRNTEZpZWxkU2V0RWxlbWVudDo6dHlwZSgpIGNv
bnN0CglIVE1MT3B0R3JvdXBFbGVtZW50Ojp0eXBlKCkgY29uc3QKCUhUTUxUZXh0QXJlYUVsZW1l
bnQ6OnR5cGUoKSBjb25zdAoJSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZzo6dHlwZSgpIGNv
bnN0CglKYXZhU2NyaXB0Q2FsbEZyYW1lOjp0eXBlKCkgY29uc3QKCVNWR1BhaW50U2VydmVyU29s
aWQ6OnR5cGUoKSBjb25zdAoJUGxhdGZvcm1LZXlib2FyZEV2ZW50Ojp0eXBlKCkgY29uc3QKCVNW
R1BhaW50U2VydmVyUGF0dGVybjo6dHlwZSgpIGNvbnN0CglXZWJLaXRDU1NLZXlmcmFtZVJ1bGU6
OnR5cGUoKSBjb25zdAoJVHJhbnNmb3JtT3BlcmF0aW9uSW5mbzo6dHlwZSgpIGNvbnN0CglXZWJL
aXRDU1NLZXlmcmFtZXNSdWxlOjp0eXBlKCkgY29uc3QKCUFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZTo6dHlwZSgpIGNvbnN0CglTVkdQYWludFNlcnZlckxpbmVhckdyYWRpZW50Ojp0eXBlKCkgY29u
c3QKCVNWR1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnQ6OnR5cGUoKSBjb25zdAoJRXZlbnQ6OnR5
cGUoKSBjb25zdAoJWFBhdGg6OlZhbHVlOjp0eXBlKCkgY29uc3QKCUxlbmd0aDo6dHlwZSgpIGNv
bnN0CglNaW1lVHlwZTo6dHlwZSgpIGNvbnN0CglTUUxWYWx1ZTo6dHlwZSgpIGNvbnN0CglGaWxs
TGF5ZXI6OnR5cGUoKSBjb25zdApCb3RoIGNvbnN0IGFuZCBub24tY29uc3QgdmVyc2lvbnMgb2Yg
ZXJyb3IoKToKCUNhY2hlZEZvbnQ6OmVycm9yKCkKCUNhY2hlZEltYWdlOjplcnJvcigpCglDYWNo
ZWRTY3JpcHQ6OmVycm9yKCkKCUNhY2hlZENTU1N0eWxlU2hlZXQ6OmVycm9yKCkKCUNhY2hlZFhT
TFN0eWxlU2hlZXQ6OmVycm9yKCkKCUhUTUxNZWRpYUVsZW1lbnQ6OmVycm9yKCkgY29uc3QKCUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTo6ZXJyb3IoKSBjb25zdApCb3RoIGNvbnN0IGFuZCBu
b24tY29uc3QgdmVyc2lvbnMgb2YgY3VycmVudFRpbWUoKToKCWN1cnJlbnRUaW1lKCkKCU1lZGlh
UGxheWVyOjpjdXJyZW50VGltZSgpIGNvbnN0CglIVE1MTWVkaWFFbGVtZW50OjpjdXJyZW50VGlt
ZSgpIGNvbnN0CglNZWRpYVBsYXllclByaXZhdGU6OmN1cnJlbnRUaW1lKCkgY29uc3QKQm90aCBj
b25zdCBhbmQgbm9uLWNvbnN0IHZlcnNpb25zIG9mIGRpcigpOgoJSFRNTERvY3VtZW50OjpkaXIo
KQoJQmlkaUNvbnRleHQ6OmRpcigpIGNvbnN0CglIVE1MRWxlbWVudDo6ZGlyKCkgY29uc3QKCUJp
ZGlSZXNvbHZlcjxXZWJDb3JlOjpJbmxpbmVJdGVyYXRvciwgV2ViQ29yZTo6QmlkaVJ1bj46OmRp
cigpIGNvbnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25zdCB2ZXJzaW9ucyBvZiBzdGFydCgpOgoJ
TWVzc2FnZVBvcnQ6OnN0YXJ0KCkKCVdvcmtlclRocmVhZDo6c3RhcnQoKQoJUmVuZGVyTWFycXVl
ZTo6c3RhcnQoKQoJRGF0YWJhc2VUaHJlYWQ6OnN0YXJ0KCkKCUhUTUxNYXJxdWVlRWxlbWVudDo6
c3RhcnQoKQoJTG9jYWxTdG9yYWdlVGhyZWFkOjpzdGFydCgpCglJbmxpbmVUZXh0Qm94OjpzdGFy
dCgpIGNvbnN0CglCaWRpQ2hhcmFjdGVyUnVuOjpzdGFydCgpIGNvbnN0CglIVE1MTWVkaWFFbGVt
ZW50OjpzdGFydCgpIGNvbnN0CglIVE1MT0xpc3RFbGVtZW50OjpzdGFydCgpIGNvbnN0CglSZW5k
ZXJUZXh0RnJhZ21lbnQ6OnN0YXJ0KCkgY29uc3QKCVNlbGVjdGlvbkNvbnRyb2xsZXI6OnN0YXJ0
KCkgY29uc3QKCVNlbGVjdGlvbjo6c3RhcnQoKSBjb25zdApCb3RoIGNvbnN0IGFuZCBub24tY29u
c3QgdmVyc2lvbnMgb2Ygc2hlZXQoKToKCVNWR1N0eWxlRWxlbWVudDo6c2hlZXQoKQoJSFRNTFN0
eWxlRWxlbWVudDo6c2hlZXQoKQoJSFRNTExpbmtFbGVtZW50OjpzaGVldCgpIGNvbnN0CglQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb246OnNoZWV0KCkgY29uc3QKQm90aCBjb25zdCBhbmQgbm9uLWNvbnN0
IHZlcnNpb25zIG9mIG1hcmdpbkxlZnQoKToKCUlubGluZUZsb3dCb3g6Om1hcmdpbkxlZnQoKQoJ
UmVuZGVyVGV4dDo6bWFyZ2luTGVmdCgpIGNvbnN0CglSZW5kZXJTdHlsZTo6bWFyZ2luTGVmdCgp
IGNvbnN0CglSZW5kZXJPYmplY3Q6Om1hcmdpbkxlZnQoKSBjb25zdAoJUmVuZGVyQm94OjptYXJn
aW5MZWZ0KCkgY29uc3QKQm90aCBjb25zdCBhbmQgbm9uLWNvbnN0IHZlcnNpb25zIG9mIGNvbXBs
ZXRlVVJMKFdlYkNvcmU6OlN0cmluZyBjb25zdCYpOgoJRnJhbWVMb2FkZXI6OmNvbXBsZXRlVVJM
KFdlYkNvcmU6OlN0cmluZyBjb25zdCYpCglXb3JrZXJDb250ZXh0Ojpjb21wbGV0ZVVSTChXZWJD
b3JlOjpTdHJpbmcgY29uc3QmKSBjb25zdAoJRG9jdW1lbnQ6OmNvbXBsZXRlVVJMKFdlYkNvcmU6
OlN0cmluZyBjb25zdCYpIGNvbnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25zdCB2ZXJzaW9ucyBv
ZiBlcnJvck9jY3VycmVkKCk6CglHZW9sb2NhdGlvblNlcnZpY2U6OmVycm9yT2NjdXJyZWQoKQoJ
U3R5bGVJbWFnZTo6ZXJyb3JPY2N1cnJlZCgpIGNvbnN0CglSZW5kZXJJbWFnZTo6ZXJyb3JPY2N1
cnJlZCgpIGNvbnN0CglDYWNoZWRSZXNvdXJjZTo6ZXJyb3JPY2N1cnJlZCgpIGNvbnN0CglTdHls
ZUNhY2hlZEltYWdlOjplcnJvck9jY3VycmVkKCkgY29uc3QKCVJlbmRlckltYWdlR2VuZXJhdGVk
Q29udGVudDo6ZXJyb3JPY2N1cnJlZCgpIGNvbnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25zdCB2
ZXJzaW9ucyBvZiBvcGVyYXRvcltdKHVuc2lnbmVkIGludCk6CglTdHJpbmdJbXBsOjpvcGVyYXRv
cltdKHVuc2lnbmVkIGludCkKCVN0cmluZ0J1ZmZlcjo6b3BlcmF0b3JbXSh1bnNpZ25lZCBpbnQp
CglBdG9taWNTdHJpbmc6Om9wZXJhdG9yW10odW5zaWduZWQgaW50KSBjb25zdAoJRGVwcmVjYXRl
ZFZhbHVlTGlzdDxXZWJDb3JlOjpDU1NQcm9wZXJ0eT46Om9wZXJhdG9yW10odW5zaWduZWQgaW50
KSBjb25zdAoJWFBhdGg6Ok5vZGVTZXQ6Om9wZXJhdG9yW10odW5zaWduZWQgaW50KSBjb25zdAoJ
U3RyaW5nOjpvcGVyYXRvcltdKHVuc2lnbmVkIGludCkgY29uc3QKQm90aCBjb25zdCBhbmQgbm9u
LWNvbnN0IHZlcnNpb25zIG9mIGlzRW5hYmxlZCgpOgoJU2NyaXB0Q29udHJvbGxlcjo6aXNFbmFi
bGVkKCkKCUljb25EYXRhYmFzZTo6aXNFbmFibGVkKCkgY29uc3QKCUFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmlzRW5hYmxlZCgpIGNvbnN0CglIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojppc0VuYWJsZWQo
KSBjb25zdAoJQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNFbmFibGVkKCkgY29uc3QKCUFj
Y2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uOjppc0VuYWJsZWQoKSBjb25zdAoJTm9kZTo6aXNFbmFi
bGVkKCkgY29uc3QKQm90aCBjb25zdCBhbmQgbm9uLWNvbnN0IHZlcnNpb25zIG9mIHNlbGVjdGlv
blJlY3QoYm9vbCk6CglSZW5kZXJCUjo6c2VsZWN0aW9uUmVjdChib29sKQoJUmVuZGVyVGV4dDo6
c2VsZWN0aW9uUmVjdChib29sKSBjb25zdAoJUmVuZGVyVmlldzo6c2VsZWN0aW9uUmVjdChib29s
KSBjb25zdAoJUmVuZGVyQmxvY2s6OnNlbGVjdGlvblJlY3QoYm9vbCkgY29uc3QKCVJlbmRlck9i
amVjdDo6c2VsZWN0aW9uUmVjdChib29sKSBjb25zdAoJUmVuZGVyUmVwbGFjZWQ6OnNlbGVjdGlv
blJlY3QoYm9vbCkgY29uc3QKCVJlbmRlckxpc3RNYXJrZXI6OnNlbGVjdGlvblJlY3QoYm9vbCkg
Y29uc3QKCVJlbmRlclNWR0lubGluZVRleHQ6OnNlbGVjdGlvblJlY3QoYm9vbCkgY29uc3QKCUZy
YW1lOjpzZWxlY3Rpb25SZWN0KGJvb2wpIGNvbnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25zdCB2
ZXJzaW9ucyBvZiBmb250U2VsZWN0b3IoKToKCUNTU1N0eWxlU2VsZWN0b3I6OmZvbnRTZWxlY3Rv
cigpCglSZW5kZXJNZW51TGlzdDo6Zm9udFNlbGVjdG9yKCkgY29uc3QKCUZvbnRGYWxsYmFja0xp
c3Q6OmZvbnRTZWxlY3RvcigpIGNvbnN0CglSZW5kZXJUZXh0Q29udHJvbDo6Zm9udFNlbGVjdG9y
KCkgY29uc3QKCUNTU1NlZ21lbnRlZEZvbnRGYWNlOjpmb250U2VsZWN0b3IoKSBjb25zdAoJRm9u
dDo6Zm9udFNlbGVjdG9yKCkgY29uc3QKQm90aCBjb25zdCBhbmQgbm9uLWNvbnN0IHZlcnNpb25z
IG9mIGFjY2VwdCgpOgoJUGxhdGZvcm1XaGVlbEV2ZW50OjphY2NlcHQoKQoJQ2FjaGVkUmVzb3Vy
Y2U6OmFjY2VwdCgpIGNvbnN0CglIVE1MSW5wdXRFbGVtZW50OjphY2NlcHQoKSBjb25zdApCb3Ro
IGNvbnN0IGFuZCBub24tY29uc3QgdmVyc2lvbnMgb2YgcGFkZGluZ0xlZnQoKToKCUlubGluZUZs
b3dCb3g6OnBhZGRpbmdMZWZ0KCkKCVJlbmRlclN0eWxlOjpwYWRkaW5nTGVmdCgpIGNvbnN0CglS
ZW5kZXJPYmplY3Q6OnBhZGRpbmdMZWZ0KCkgY29uc3QKQm90aCBjb25zdCBhbmQgbm9uLWNvbnN0
IHZlcnNpb25zIG9mIHN0YXRlKCk6CglEb2N0eXBlVG9rZW46OnN0YXRlKCkKCUNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6c3RhdGUoKQoJRnJhbWVMb2FkZXI6OnN0YXRlKCkgY29uc3QKCVJlbmRl
ckJsb2NrOjpCbG9ja1NlbGVjdGlvbkluZm86OnN0YXRlKCkgY29uc3QKCVJlbmRlck9iamVjdDo6
U2VsZWN0aW9uSW5mbzo6c3RhdGUoKSBjb25zdAoJU2VsZWN0aW9uQ29udHJvbGxlcjo6c3RhdGUo
KSBjb25zdAoJQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzdGF0ZSgpIGNvbnN0CglTZWxlY3Rp
b246OnN0YXRlKCkgY29uc3QKQm90aCBjb25zdCBhbmQgbm9uLWNvbnN0IHZlcnNpb25zIG9mIHVy
aSgpOgoJQ1NTTmFtZXNwYWNlOjp1cmkoKQoJU3RvcmFnZUV2ZW50Ojp1cmkoKSBjb25zdAoJU1ZH
UGFpbnQ6OnVyaSgpIGNvbnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25zdCB2ZXJzaW9ucyBvZiBo
YXNoKCk6CglTdHJpbmdJbXBsOjpoYXNoKCkKCVdvcmtlckxvY2F0aW9uOjpoYXNoKCkgY29uc3QK
CUZvbnRQbGF0Zm9ybURhdGE6Omhhc2goKSBjb25zdAoJSFRNTEFuY2hvckVsZW1lbnQ6Omhhc2go
KSBjb25zdAoJTG9jYXRpb246Omhhc2goKSBjb25zdApCb3RoIGNvbnN0IGFuZCBub24tY29uc3Qg
dmVyc2lvbnMgb2YgdGV4dCgpOgoJUmVuZGVyVGV4dENvbnRyb2w6OnRleHQoKQoJUmVuZGVyVGV4
dDo6dGV4dCgpIGNvbnN0CglSZW5kZXJNZW51TGlzdDo6dGV4dCgpIGNvbnN0CglIVE1MQm9keUVs
ZW1lbnQ6OnRleHQoKSBjb25zdAoJSFRNTFRpdGxlRWxlbWVudDo6dGV4dCgpIGNvbnN0CglSZW5k
ZXJMaXN0TWFya2VyOjp0ZXh0KCkgY29uc3QKCUhUTUxBbmNob3JFbGVtZW50Ojp0ZXh0KCkgY29u
c3QKCUhUTUxPcHRpb25FbGVtZW50Ojp0ZXh0KCkgY29uc3QKCUhUTUxTY3JpcHRFbGVtZW50Ojp0
ZXh0KCkgY29uc3QKCUFjY2Vzc2liaWxpdHlPYmplY3Q6OnRleHQoKSBjb25zdAoJUGxhdGZvcm1L
ZXlib2FyZEV2ZW50Ojp0ZXh0KCkgY29uc3QKCUJlZm9yZVRleHRJbnNlcnRlZEV2ZW50Ojp0ZXh0
KCkgY29uc3QKCUFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnRleHQoKSBjb25zdAoJUmFuZ2U6
OnRleHQoKSBjb25zdApCb3RoIGNvbnN0IGFuZCBub24tY29uc3QgdmVyc2lvbnMgb2YgY2hhcmFj
dGVycygpOgoJU3RyaW5nSW1wbDo6Y2hhcmFjdGVycygpCglTdHJpbmdCdWZmZXI6OmNoYXJhY3Rl
cnMoKQoJUmVuZGVyVGV4dDo6Y2hhcmFjdGVycygpIGNvbnN0CglBdG9taWNTdHJpbmc6OmNoYXJh
Y3RlcnMoKSBjb25zdAoJVGV4dEl0ZXJhdG9yOjpjaGFyYWN0ZXJzKCkgY29uc3QKCUNoYXJhY3Rl
ckl0ZXJhdG9yOjpjaGFyYWN0ZXJzKCkgY29uc3QKCVdvcmRBd2FyZUl0ZXJhdG9yOjpjaGFyYWN0
ZXJzKCkgY29uc3QKCVNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmNoYXJhY3RlcnMo
KSBjb25zdAoJU3RyaW5nOjpjaGFyYWN0ZXJzKCkgY29uc3QKCVRleHRSdW46OmNoYXJhY3RlcnMo
KSBjb25zdApCb3RoIGNvbnN0IGFuZCBub24tY29uc3QgdmVyc2lvbnMgb2YgY3VycmVudCgpOgoJ
Q1NTUGFyc2VyVmFsdWVMaXN0OjpjdXJyZW50KCkKCVhQYXRoOjpQYXJzZXI6OmN1cnJlbnQoKQoJ
SW5saW5lSXRlcmF0b3I6OmN1cnJlbnQoKSBjb25zdAoJU2VnbWVudGVkU3RyaW5nOjpjdXJyZW50
KCkgY29uc3QKCVRleHRSdW5JdGVyYXRvcjo6Y3VycmVudCgpIGNvbnN0CglEZXByZWNhdGVkUHRy
TGlzdDxXZWJDb3JlOjpSZW5kZXJCbG9jazo6RmxvYXRpbmdPYmplY3Q+OjpjdXJyZW50KCkgY29u
c3QKCURlcHJlY2F0ZWRQdHJMaXN0SW1wbDo6Y3VycmVudCgpIGNvbnN0CglEZXByZWNhdGVkUHRy
TGlzdEl0ZXJhdG9yPFdlYkNvcmU6OkltYWdlTG9hZGVyPjo6Y3VycmVudCgpIGNvbnN0CglEZXBy
ZWNhdGVkUHRyTGlzdEl0ZXJhdG9yPFdlYkNvcmU6OlJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVj
dD46OmN1cnJlbnQoKSBjb25zdAoJRGVwcmVjYXRlZFB0ckxpc3RJdGVyYXRvcjxXZWJDb3JlOjpO
b2RlPjo6Y3VycmVudCgpIGNvbnN0CglEZXByZWNhdGVkUHRyTGlzdEltcGxJdGVyYXRvcjo6Y3Vy
cmVudCgpIGNvbnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25zdCB2ZXJzaW9ucyBvZiBTVkdMZW5n
dGgoKToKCUpTU1ZHU3RhdGljUE9EVHlwZVdyYXBwZXI8V2ViQ29yZTo6U1ZHTGVuZ3RoPjo6b3Bl
cmF0b3IgV2ViQ29yZTo6U1ZHTGVuZ3RoKCkKCUpTU1ZHRHluYW1pY1BPRFR5cGVXcmFwcGVyPFdl
YkNvcmU6OlNWR0xlbmd0aCwgV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUZW1wbGF0ZTxXZWJDb3JlOjpT
VkdMZW5ndGg+ID46Om9wZXJhdG9yIFdlYkNvcmU6OlNWR0xlbmd0aCgpCglTeW5jaHJvbml6YWJs
ZVR5cGVXcmFwcGVyPFdlYkNvcmU6OlNWR0xlbmd0aD46Om9wZXJhdG9yIFdlYkNvcmU6OlNWR0xl
bmd0aCgpIGNvbnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25zdCB2ZXJzaW9ucyBvZiBzZWN1cml0
eU9yaWdpbigpOgoJU3RvcmFnZUFyZWE6OnNlY3VyaXR5T3JpZ2luKCkKCVdvcmtlckNvbnRleHQ6
OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKCURvY3VtZW50OjpzZWN1cml0eU9yaWdpbigpIGNvbnN0
CglET01XaW5kb3c6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKQm90aCBjb25zdCBhbmQgbm9uLWNv
bnN0IHZlcnNpb25zIG9mIGRvY3VtZW50KCk6CglYU0xTdHlsZVNoZWV0Ojpkb2N1bWVudCgpCglD
YWNoZWRQYWdlOjpkb2N1bWVudCgpIGNvbnN0CglFZGl0Q29tbWFuZDo6ZG9jdW1lbnQoKSBjb25z
dAoJUmVuZGVyT2JqZWN0Ojpkb2N1bWVudCgpIGNvbnN0CglYTUxIdHRwUmVxdWVzdDo6ZG9jdW1l
bnQoKSBjb25zdAoJSlNBdWRpb0NvbnN0cnVjdG9yOjpkb2N1bWVudCgpIGNvbnN0CglKU0ltYWdl
Q29uc3RydWN0b3I6OmRvY3VtZW50KCkgY29uc3QKCUFjY2Vzc2liaWxpdHlPYmplY3Q6OmRvY3Vt
ZW50KCkgY29uc3QKCUpTT3B0aW9uQ29uc3RydWN0b3I6OmRvY3VtZW50KCkgY29uc3QKCUFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OmRvY3VtZW50KCkgY29uc3QKCUpTWE1MSHR0cFJlcXVlc3RD
b25zdHJ1Y3Rvcjo6ZG9jdW1lbnQoKSBjb25zdAoJTm9kZTo6ZG9jdW1lbnQoKSBjb25zdAoJRnJh
bWU6OmRvY3VtZW50KCkgY29uc3QKCVdvcmtlcjo6ZG9jdW1lbnQoKSBjb25zdAoJRGF0YWJhc2U6
OmRvY3VtZW50KCkgY29uc3QKCUNTU1BhcnNlcjo6ZG9jdW1lbnQoKSBjb25zdAoJRE9NV2luZG93
Ojpkb2N1bWVudCgpIGNvbnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25zdCB2ZXJzaW9ucyBvZiBi
Z0NvbG9yKCk6CglIVE1MRG9jdW1lbnQ6OmJnQ29sb3IoKQoJSFRNTEJvZHlFbGVtZW50OjpiZ0Nv
bG9yKCkgY29uc3QKCUhUTUxUYWJsZUVsZW1lbnQ6OmJnQ29sb3IoKSBjb25zdAoJSFRNTFRhYmxl
Um93RWxlbWVudDo6YmdDb2xvcigpIGNvbnN0CglIVE1MVGFibGVDZWxsRWxlbWVudDo6YmdDb2xv
cigpIGNvbnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25zdCB2ZXJzaW9ucyBvZiB0b0RvdWJsZShi
b29sKik6CglTdHJpbmdJbXBsOjp0b0RvdWJsZShib29sKikKCUF0b21pY1N0cmluZzo6dG9Eb3Vi
bGUoYm9vbCopIGNvbnN0CglTdHJpbmc6OnRvRG91YmxlKGJvb2wqKSBjb25zdApCb3RoIGNvbnN0
IGFuZCBub24tY29uc3QgdmVyc2lvbnMgb2Ygc2Nyb2xsTGVmdCgpOgoJRWxlbWVudDo6c2Nyb2xs
TGVmdCgpCglSZW5kZXJPYmplY3Q6OnNjcm9sbExlZnQoKSBjb25zdAoJUmVuZGVyTGlzdEJveDo6
c2Nyb2xsTGVmdCgpIGNvbnN0CglIVE1MQm9keUVsZW1lbnQ6OnNjcm9sbExlZnQoKSBjb25zdAoJ
UmVuZGVyVGV4dENvbnRyb2w6OnNjcm9sbExlZnQoKSBjb25zdApCb3RoIGNvbnN0IGFuZCBub24t
Y29uc3QgdmVyc2lvbnMgb2YgcGFyZW50Tm9kZSgpOgoJVHJlZVdhbGtlcjo6cGFyZW50Tm9kZSgp
CglTVkdFbGVtZW50SW5zdGFuY2U6OnBhcmVudE5vZGUoKSBjb25zdAoJTm9kZTo6cGFyZW50Tm9k
ZSgpIGNvbnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25zdCB2ZXJzaW9ucyBvZiBzZXRJbWFnZUNv
bnRhaW5lclNpemUoV2ViQ29yZTo6SW50U2l6ZSBjb25zdCYpOgoJQ2FjaGVkSW1hZ2U6OnNldElt
YWdlQ29udGFpbmVyU2l6ZShXZWJDb3JlOjpJbnRTaXplIGNvbnN0JikKCVN0eWxlQ2FjaGVkSW1h
Z2U6OnNldEltYWdlQ29udGFpbmVyU2l6ZShXZWJDb3JlOjpJbnRTaXplIGNvbnN0JikKCVN0eWxl
R2VuZXJhdGVkSW1hZ2U6OnNldEltYWdlQ29udGFpbmVyU2l6ZShXZWJDb3JlOjpJbnRTaXplIGNv
bnN0JikKCVJlbmRlckltYWdlOjpzZXRJbWFnZUNvbnRhaW5lclNpemUoV2ViQ29yZTo6SW50U2l6
ZSBjb25zdCYpIGNvbnN0CglSZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQ6OnNldEltYWdlQ29u
dGFpbmVyU2l6ZShXZWJDb3JlOjpJbnRTaXplIGNvbnN0JikgY29uc3QKQm90aCBjb25zdCBhbmQg
bm9uLWNvbnN0IHZlcnNpb25zIG9mIG5hbWVkSXRlbShXZWJDb3JlOjpTdHJpbmcgY29uc3QmLCBi
b29sKToKCUhUTUxTZWxlY3RFbGVtZW50OjpuYW1lZEl0ZW0oV2ViQ29yZTo6U3RyaW5nIGNvbnN0
JiwgYm9vbCkKCUhUTUxDb2xsZWN0aW9uOjpuYW1lZEl0ZW0oV2ViQ29yZTo6U3RyaW5nIGNvbnN0
JiwgYm9vbCkgY29uc3QKCUhUTUxGb3JtQ29sbGVjdGlvbjo6bmFtZWRJdGVtKFdlYkNvcmU6OlN0
cmluZyBjb25zdCYsIGJvb2wpIGNvbnN0CkJvdGggY29uc3QgYW5kIG5vbi1jb25zdCB2ZXJzaW9u
cyBvZiB2aXNpYmxlUG9zaXRpb25Gb3JQb2ludChXZWJDb3JlOjpJbnRQb2ludCBjb25zdCYpOgoJ
RnJhbWU6OnZpc2libGVQb3NpdGlvbkZvclBvaW50KFdlYkNvcmU6OkludFBvaW50IGNvbnN0JikK
CUFjY2Vzc2liaWxpdHlPYmplY3Q6OnZpc2libGVQb3NpdGlvbkZvclBvaW50KFdlYkNvcmU6Oklu
dFBvaW50IGNvbnN0JikgY29uc3QKCUFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnZpc2libGVQ
b3NpdGlvbkZvclBvaW50KFdlYkNvcmU6OkludFBvaW50IGNvbnN0JikgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25408</attachid>
            <date>2008-11-23 19:54:09 -0800</date>
            <delta_ts>2008-11-24 11:27:16 -0800</delta_ts>
            <desc>Patch to make lots of methods const, changelog</desc>
            <filename>22433_patch.txt</filename>
            <type>text/plain</type>
            <size>87572</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDIwMDkzYi4uYTFlOTk3NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOTUgQEAKKzIwMDgtMTEtMjMgIFNpbW9uIEZyYXNl
ciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyNDMzCisgICAgICAgIAorICAgICAgICBNYWtlIG1ldGhvZHMgJ2NvbnN0JyBpbiBmYW4t
b3V0IGZyb20gYWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0LAorICAgICAgICBzZWxlY3Rpb25S
ZWN0IGFuZCBzb21lIG90aGVyIHBsYWNlcy4KKworICAgICAgICAqIGRvbS9SYW5nZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSYW5nZTo6Ym91bmRpbmdCb3gpOgorICAgICAgICAoV2ViQ29yZTo6
UmFuZ2U6OmFkZExpbmVCb3hSZWN0cyk6CisgICAgICAgICogZG9tL1JhbmdlLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL0lubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6
OnJvb3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lQm94OjpmaXJzdExlYWZDaGlsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6Omxhc3RMZWFmQ2hpbGQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5saW5lQm94OjpuZXh0TGVhZkNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUJveDo6cHJldkxlYWZDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OnNlbGVj
dGlvblN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUJveDo6Y2FuQWNjb21tb2RhdGVF
bGxpcHNpcyk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUJveC5oOgorICAgICAgICAoV2Vi
Q29yZTo6SW5saW5lQm94Ojppc0lubGluZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVC
b3g6OmlzSW5saW5lRmxvd0JveCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OmlzQ29u
dGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUJveDo6aXNJbmxpbmVUZXh0Qm94KToK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUJveDo6aXNSb290SW5saW5lQm94KToKKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUJveDo6aXNTVkdSb290SW5saW5lQm94KToKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZUJveDo6dG9wT3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lQm94
Ojpib3R0b21PdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OmxlZnRPdmVy
Zmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OnJpZ2h0T3ZlcmZsb3cpOgorICAg
ICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUZsb3dCb3g6OmZpcnN0TGVhZkNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZs
b3dCb3g6Omxhc3RMZWFmQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6
Zmlyc3RMZWFmQ2hpbGRBZnRlckJveCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94
OjpsYXN0TGVhZkNoaWxkQmVmb3JlQm94KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dC
b3g6OnNlbGVjdGlvblN0YXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5o
OgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6aXNJbmxpbmVGbG93Qm94KToKKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OmZpcnN0Q2hpbGQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5saW5lRmxvd0JveDo6bGFzdENoaWxkKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5s
aW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpzZWxlY3Rp
b25Ub3ApOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6c2VsZWN0aW9uSGVpZ2h0
KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnNlbGVjdGlvblN0YXRlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lVGV4dEJveDo6aXNJbmxpbmVUZXh0Qm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
QlIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJSOjpzZWxlY3Rpb25SZWN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2s6OnNlbGVjdGlvbkdhcFJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2Nr
OjpmaWxsU2VsZWN0aW9uR2Fwcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Zmls
bElubGluZVNlbGVjdGlvbkdhcHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmZp
bGxCbG9ja1NlbGVjdGlvbkdhcHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmZp
bGxIb3Jpem9udGFsU2VsZWN0aW9uR2FwKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2Nr
OjpmaWxsVmVydGljYWxTZWxlY3Rpb25HYXApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2s6OmZpbGxMZWZ0U2VsZWN0aW9uR2FwKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2Nr
OjpmaWxsUmlnaHRTZWxlY3Rpb25HYXApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6
OmdldEhvcml6b250YWxTZWxlY3Rpb25HYXBJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjpsZWZ0U2VsZWN0aW9uT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjpyaWdodFNlbGVjdGlvbk9mZnNldCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6c2VsZWN0aW9uUmVjdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6OmFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6OmNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckNvbnRhaW5lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJDb250YWluZXI6OmFkZExpbmVCb3hSZWN0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJDb250YWluZXI6OmNvbGxlY3RBYnNvbHV0ZUxpbmVCb3hR
dWFkcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckNvbnRhaW5lci5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJGbG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3c6
OmFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckZsb3cuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRm9yZWlnbk9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJGb3JlaWduT2JqZWN0Ojp0cmFuc2xhdGlvbkZvckF0dHJp
YnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRm9yZWlnbk9iamVjdDo6Y29tcHV0ZUFi
c29sdXRlUmVwYWludFJlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGb3JlaWduT2Jq
ZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVySW5saW5lOjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdE1hcmtlcjo6c2VsZWN0aW9uUmVjdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWRkTGluZUJv
eFJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWJzb2x1dGVSZWN0cyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y29sbGVjdEFic29sdXRlTGluZUJv
eFF1YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWJzb2x1dGVRdWFkcyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFic29sdXRlQ2xpcHBlZE92ZXJmbG93
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNvbXB1dGVBYnNvbHV0ZVJl
cGFpbnRSZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnNlbGVjdGlvblJlY3QpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclBhdGg6OmFic29s
dXRlQ2xpcHBlZE92ZXJmbG93UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJQYXRoOjph
YnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclBhdGg6OmFic29sdXRlUXVh
ZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJQYXRoLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclJlcGxhY2VkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2Vk
OjpzZWxlY3Rpb25SZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR0NvbnRhaW5lcjo6YWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0NvbnRhaW5lcjo6YWJzb2x1dGVSZWN0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6OmFic29sdXRlUXVhZHMpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdH
cmFkaWVudFN0b3A6OmFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdIaWRkZW5Db250YWluZXI6OmFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdIaWRkZW5Db250YWluZXI6OmFic29sdXRlUmVjdHMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyOjphYnNvbHV0ZVF1
YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR0ltYWdlOjphYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHSW1hZ2U6OmFic29sdXRlUXVhZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJTVkdJbWFnZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdJbmxpbmVUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzQ2hpbGRPZkhpZGRlbkNvbnRhaW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmVUZXh0OjphYnNvbHV0ZVJlY3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR0lubGluZVRleHQ6OmFic29sdXRlUXVhZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lVGV4dDo6c2VsZWN0aW9uUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmVUZXh0Ojpjb21wdXRlQWJzb2x1dGVSZWN0Rm9yUmFu
Z2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdJbmxpbmVUZXh0Lmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclNWR1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHUm9vdDo6YWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jvb3Q6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHUm9vdDo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR1Jv
b3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHVFNwYW4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHVFNwYW46OmFic29sdXRlUmVjdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHVFNwYW46OmFic29sdXRlUXVhZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJTVkdUU3Bhbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdUZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OmFic29sdXRlQ2xpcHBlZE92ZXJmbG93
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0OjphYnNvbHV0ZVJlY3RzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OmFic29sdXRlUXVhZHMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJTVkdUZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clNWR1RleHRQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHRQYXRoOjph
YnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHRQYXRoOjphYnNv
bHV0ZVF1YWRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dFBhdGguaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlQ2VsbDo6YWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6Y29tcHV0ZUFic29sdXRlUmVwYWludFJlY3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGFibGVDb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDb2w6
OmFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ29sLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlUm93OjphYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1Jl
Y3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmFi
c29sdXRlUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6YWRkTGluZUJveFJl
Y3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmFic29sdXRlUXVhZHMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29sbGVjdEFic29sdXRlTGluZUJveFF1YWRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpzZWxlY3Rpb25SZWN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJW
aWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmNvbXB1dGVBYnNvbHV0ZVJl
cGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmFic29sdXRlUmVjdHMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUm9vdElubGlu
ZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjpmaWxsTGluZVNlbGVj
dGlvbkdhcCk6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjpzZWxlY3Rpb25TdGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjpmaXJzdFNlbGVjdGVkQm94KToK
KyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6Omxhc3RTZWxlY3RlZEJveCk6CisgICAg
ICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjpzZWxlY3Rpb25Ub3ApOgorICAgICAgICAqIHJl
bmRlcmluZy9Sb290SW5saW5lQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94
Ojppc1Jvb3RJbmxpbmVCb3gpOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6bmV4
dFJvb3RCb3gpOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6cHJldlJvb3RCb3gp
OgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6dG9wT3ZlcmZsb3cpOgorICAgICAg
ICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6Ym90dG9tT3ZlcmZsb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6Um9vdElubGluZUJveDo6bGVmdE92ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OlJv
b3RJbmxpbmVCb3g6OnJpZ2h0T3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGlu
ZUJveDo6c2VsZWN0aW9uQm90dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6
OnNlbGVjdGlvbkhlaWdodCk6CisgICAgICAgICogcmVuZGVyaW5nL1NWR0lubGluZVRleHRCb3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6c2VsZWN0aW9uVG9wKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnNlbGVjdGlvbkhlaWdodCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1NWR0lubGluZVRleHRCb3guaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvU1ZHUm9vdElubGluZUJveC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUm9vdElubGluZUJv
eDo6aXNTVkdSb290SW5saW5lQm94KToKKwogMjAwOC0xMS0yMSAgS2V2aW4gV2F0dGVycyAgPGtl
dmlud2F0dGVyc0BnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2V2aW4gT2xsaXZp
ZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAgYi9XZWJDb3JlL2RvbS9SYW5n
ZS5jcHAKaW5kZXggYWIxYTQyZC4uZmVlY2U4MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vUmFu
Z2UuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1JhbmdlLmNwcApAQCAtMTU3Niw3ICsxNTc2LDcgQEAg
Tm9kZSogUmFuZ2U6OnBhc3RMYXN0Tm9kZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZW5kLmNvbnRh
aW5lcigpLT50cmF2ZXJzZU5leHRTaWJsaW5nKCk7CiB9CiAKLUludFJlY3QgUmFuZ2U6OmJvdW5k
aW5nQm94KCkKK0ludFJlY3QgUmFuZ2U6OmJvdW5kaW5nQm94KCkgY29uc3QKIHsKICAgICBJbnRS
ZWN0IHJlc3VsdDsKICAgICBWZWN0b3I8SW50UmVjdD4gcmVjdHM7CkBAIC0xNTg3LDcgKzE1ODcs
NyBAQCBJbnRSZWN0IFJhbmdlOjpib3VuZGluZ0JveCgpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotdm9pZCBSYW5nZTo6YWRkTGluZUJveFJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGJv
b2wgdXNlU2VsZWN0aW9uSGVpZ2h0KQordm9pZCBSYW5nZTo6YWRkTGluZUJveFJlY3RzKFZlY3Rv
cjxJbnRSZWN0PiYgcmVjdHMsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0KSBjb25zdAogewogICAg
IGlmICghbV9zdGFydC5jb250YWluZXIoKSB8fCAhbV9lbmQuY29udGFpbmVyKCkpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1JhbmdlLmggYi9XZWJDb3JlL2RvbS9S
YW5nZS5oCmluZGV4IDQ5ZGVhODIuLjhlMjAwZGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1Jh
bmdlLmgKKysrIGIvV2ViQ29yZS9kb20vUmFuZ2UuaApAQCAtMTAxLDggKzEwMSw4IEBAIHB1Ymxp
YzoKIAogICAgIE5vZGUqIHNoYWRvd1RyZWVSb290Tm9kZSgpIGNvbnN0OwogCi0gICAgSW50UmVj
dCBib3VuZGluZ0JveCgpOwotICAgIHZvaWQgYWRkTGluZUJveFJlY3RzKFZlY3RvcjxJbnRSZWN0
PiYsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0ID0gZmFsc2UpOworICAgIEludFJlY3QgYm91bmRp
bmdCb3goKSBjb25zdDsKKyAgICB2b2lkIGFkZExpbmVCb3hSZWN0cyhWZWN0b3I8SW50UmVjdD4m
LCBib29sIHVzZVNlbGVjdGlvbkhlaWdodCA9IGZhbHNlKSBjb25zdDsKIAogICAgIHZvaWQgbm9k
ZUNoaWxkcmVuQ2hhbmdlZChDb250YWluZXJOb2RlKik7CiAgICAgdm9pZCBub2RlV2lsbEJlUmVt
b3ZlZChOb2RlKik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guY3Bw
IGIvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmNwcAppbmRleCA1ZGMxZjQ3Li40MzcxMzY1
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guY3BwCisrKyBiL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAKQEAgLTE2NSwxMiArMTY1LDEyIEBAIGJvb2wgSW5s
aW5lQm94Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVz
dFJlc3VsdCYgcmVzdWx0CiAgICAgcmV0dXJuIG9iamVjdCgpLT5oaXRUZXN0KHJlcXVlc3QsIHJl
c3VsdCwgSW50UG9pbnQoeCwgeSksIHR4LCB0eSk7CiB9CiAKLVJvb3RJbmxpbmVCb3gqIElubGlu
ZUJveDo6cm9vdCgpCitSb290SW5saW5lQm94KiBJbmxpbmVCb3g6OnJvb3QoKSBjb25zdAogeyAK
ICAgICBpZiAobV9wYXJlbnQpCiAgICAgICAgIHJldHVybiBtX3BhcmVudC0+cm9vdCgpOyAKICAg
ICBBU1NFUlQoaXNSb290SW5saW5lQm94KCkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxSb290
SW5saW5lQm94Kj4odGhpcyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJvb3RJbmxpbmVCb3gq
Pihjb25zdF9jYXN0PElubGluZUJveCo+KHRoaXMpKTsKIH0KIAogYm9vbCBJbmxpbmVCb3g6Om5l
eHRPbkxpbmVFeGlzdHMoKSBjb25zdApAQCAtMjAzLDMyICsyMDMsMzIgQEAgYm9vbCBJbmxpbmVC
b3g6OnByZXZPbkxpbmVFeGlzdHMoKSBjb25zdAogICAgIHJldHVybiBtX3ByZXZPbkxpbmVFeGlz
dHM7CiB9CiAKLUlubGluZUJveCogSW5saW5lQm94OjpmaXJzdExlYWZDaGlsZCgpCitJbmxpbmVC
b3gqIElubGluZUJveDo6Zmlyc3RMZWFmQ2hpbGQoKSBjb25zdAogewotICAgIHJldHVybiB0aGlz
OworICAgIHJldHVybiBjb25zdF9jYXN0PElubGluZUJveCo+KHRoaXMpOwogfQogCi1JbmxpbmVC
b3gqIElubGluZUJveDo6bGFzdExlYWZDaGlsZCgpCitJbmxpbmVCb3gqIElubGluZUJveDo6bGFz
dExlYWZDaGlsZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRoaXM7CisgICAgcmV0dXJuIGNvbnN0
X2Nhc3Q8SW5saW5lQm94Kj4odGhpcyk7CiB9CiAKLUlubGluZUJveCogSW5saW5lQm94OjpuZXh0
TGVhZkNoaWxkKCkKK0lubGluZUJveCogSW5saW5lQm94OjpuZXh0TGVhZkNoaWxkKCkgY29uc3QK
IHsKICAgICByZXR1cm4gcGFyZW50KCkgPyBwYXJlbnQoKS0+Zmlyc3RMZWFmQ2hpbGRBZnRlckJv
eCh0aGlzKSA6IDA7CiB9CiAKLUlubGluZUJveCogSW5saW5lQm94OjpwcmV2TGVhZkNoaWxkKCkK
K0lubGluZUJveCogSW5saW5lQm94OjpwcmV2TGVhZkNoaWxkKCkgY29uc3QKIHsKICAgICByZXR1
cm4gcGFyZW50KCkgPyBwYXJlbnQoKS0+bGFzdExlYWZDaGlsZEJlZm9yZUJveCh0aGlzKSA6IDA7
CiB9CiAKLVJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgSW5saW5lQm94OjpzZWxlY3Rpb25T
dGF0ZSgpCitSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIElubGluZUJveDo6c2VsZWN0aW9u
U3RhdGUoKSBjb25zdAogewogICAgIHJldHVybiBvYmplY3QoKS0+c2VsZWN0aW9uU3RhdGUoKTsK
IH0KIAotYm9vbCBJbmxpbmVCb3g6OmNhbkFjY29tbW9kYXRlRWxsaXBzaXMoYm9vbCBsdHIsIGlu
dCBibG9ja0VkZ2UsIGludCBlbGxpcHNpc1dpZHRoKQorYm9vbCBJbmxpbmVCb3g6OmNhbkFjY29t
bW9kYXRlRWxsaXBzaXMoYm9vbCBsdHIsIGludCBibG9ja0VkZ2UsIGludCBlbGxpcHNpc1dpZHRo
KSBjb25zdAogewogICAgIC8vIE5vbi1yZXBsYWNlZCBlbGVtZW50cyBjYW4gYWx3YXlzIGFjY29t
bW9kYXRlIGFuIGVsbGlwc2lzLgogICAgIGlmICghbV9vYmplY3QgfHwgIW1fb2JqZWN0LT5pc1Jl
cGxhY2VkKCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guaCBiL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5oCmluZGV4IDQ4YWFiNzcuLmI1Y2U5YjIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5oCisrKyBiL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZUJveC5oCkBAIC0xMzMsMTMgKzEzMywxMyBAQCBwdWJsaWM6CiAjaWZuZGVmIE5E
RUJVRwogICAgIHZvaWQgc2hvd1RyZWVGb3JUaGlzKCkgY29uc3Q7CiAjZW5kaWYKLSAgICB2aXJ0
dWFsIGJvb2wgaXNJbmxpbmVCb3goKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9v
bCBpc0lubGluZUZsb3dCb3goKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBp
c0NvbnRhaW5lcigpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzSW5saW5l
VGV4dEJveCgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzUm9vdElubGlu
ZUJveCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzSW5saW5lQm94KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNJbmxpbmVGbG93Qm94
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNDb250YWluZXIo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0lubGluZVRleHRC
b3goKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1Jvb3RJbmxp
bmVCb3goKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogI2lmIEVOQUJMRShTVkcpIAotICAgIHZp
cnR1YWwgYm9vbCBpc1NWR1Jvb3RJbmxpbmVCb3goKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBpc1NWR1Jvb3RJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
I2VuZGlmCiAgICAgdmlydHVhbCBib29sIGlzVGV4dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAKQEAgLTE3MywxMCArMTczLDEwIEBAIHB1YmxpYzoKICAgICBib29sIG5leHRPbkxpbmVFeGlz
dHMoKSBjb25zdDsKICAgICBib29sIHByZXZPbkxpbmVFeGlzdHMoKSBjb25zdDsKIAotICAgIHZp
cnR1YWwgSW5saW5lQm94KiBmaXJzdExlYWZDaGlsZCgpOwotICAgIHZpcnR1YWwgSW5saW5lQm94
KiBsYXN0TGVhZkNoaWxkKCk7Ci0gICAgSW5saW5lQm94KiBuZXh0TGVhZkNoaWxkKCk7Ci0gICAg
SW5saW5lQm94KiBwcmV2TGVhZkNoaWxkKCk7CisgICAgdmlydHVhbCBJbmxpbmVCb3gqIGZpcnN0
TGVhZkNoaWxkKCkgY29uc3Q7CisgICAgdmlydHVhbCBJbmxpbmVCb3gqIGxhc3RMZWFmQ2hpbGQo
KSBjb25zdDsKKyAgICBJbmxpbmVCb3gqIG5leHRMZWFmQ2hpbGQoKSBjb25zdDsKKyAgICBJbmxp
bmVCb3gqIHByZXZMZWFmQ2hpbGQoKSBjb25zdDsKICAgICAgICAgCiAgICAgUmVuZGVyT2JqZWN0
KiBvYmplY3QoKSBjb25zdCB7IHJldHVybiBtX29iamVjdDsgfQogCkBAIC0xODcsNyArMTg3LDcg
QEAgcHVibGljOgogICAgIH0KICAgICB2b2lkIHNldFBhcmVudChJbmxpbmVGbG93Qm94KiBwYXIp
IHsgbV9wYXJlbnQgPSBwYXI7IH0KIAotICAgIFJvb3RJbmxpbmVCb3gqIHJvb3QoKTsKKyAgICBS
b290SW5saW5lQm94KiByb290KCkgY29uc3Q7CiAgICAgCiAgICAgdm9pZCBzZXRXaWR0aChpbnQg
dykgeyBtX3dpZHRoID0gdzsgfQogICAgIGludCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lk
dGg7IH0KQEAgLTIwNiwxMCArMjA2LDEwIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzVGV4dENo
aWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9oYXNUZXh0Q2hpbGRyZW47IH0KIAotICAgIHZpcnR1
YWwgaW50IHRvcE92ZXJmbG93KCkgeyByZXR1cm4geVBvcygpOyB9Ci0gICAgdmlydHVhbCBpbnQg
Ym90dG9tT3ZlcmZsb3coKSB7IHJldHVybiB5UG9zKCkgKyBoZWlnaHQoKTsgfQotICAgIHZpcnR1
YWwgaW50IGxlZnRPdmVyZmxvdygpIHsgcmV0dXJuIHhQb3MoKTsgfQotICAgIHZpcnR1YWwgaW50
IHJpZ2h0T3ZlcmZsb3coKSB7IHJldHVybiB4UG9zKCkgKyB3aWR0aCgpOyB9CisgICAgdmlydHVh
bCBpbnQgdG9wT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiB5UG9zKCk7IH0KKyAgICB2aXJ0dWFs
IGludCBib3R0b21PdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIHlQb3MoKSArIGhlaWdodCgpOyB9
CisgICAgdmlydHVhbCBpbnQgbGVmdE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4geFBvcygpOyB9
CisgICAgdmlydHVhbCBpbnQgcmlnaHRPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIHhQb3MoKSAr
IHdpZHRoKCk7IH0KIAogICAgIHZpcnR1YWwgaW50IGNhcmV0TWluT2Zmc2V0KCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBpbnQgY2FyZXRNYXhPZmZzZXQoKSBjb25zdDsKQEAgLTIyOCw5ICsyMjgsOSBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGRpcnR5TGluZUJveGVzKCk7CiAgICAgCi0gICAgdmlydHVh
bCBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIHNlbGVjdGlvblN0YXRlKCk7CisgICAgdmly
dHVhbCBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIHNlbGVjdGlvblN0YXRlKCkgY29uc3Q7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuQWNjb21tb2RhdGVFbGxpcHNpcyhib29sIGx0ciwgaW50
IGJsb2NrRWRnZSwgaW50IGVsbGlwc2lzV2lkdGgpOworICAgIHZpcnR1YWwgYm9vbCBjYW5BY2Nv
bW1vZGF0ZUVsbGlwc2lzKGJvb2wgbHRyLCBpbnQgYmxvY2tFZGdlLCBpbnQgZWxsaXBzaXNXaWR0
aCkgY29uc3Q7CiAgICAgdmlydHVhbCBpbnQgcGxhY2VFbGxpcHNpc0JveChib29sIGx0ciwgaW50
IGJsb2NrRWRnZSwgaW50IGVsbGlwc2lzV2lkdGgsIGJvb2wmKTsKIAogICAgIHZvaWQgc2V0SGFz
QmFkUGFyZW50KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94
LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCmluZGV4IDVmMzdhZDYu
LjFjNDk1MmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3Bw
CisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCkBAIC05ODIsMTcgKzk4
MiwxNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50VGV4dERlY29yYXRpb25zKFJlbmRlck9i
amVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGludAogICAgIH0KIH0KIAotSW5saW5lQm94KiBJ
bmxpbmVGbG93Qm94OjpmaXJzdExlYWZDaGlsZCgpCitJbmxpbmVCb3gqIElubGluZUZsb3dCb3g6
OmZpcnN0TGVhZkNoaWxkKCkgY29uc3QKIHsKICAgICByZXR1cm4gZmlyc3RMZWFmQ2hpbGRBZnRl
ckJveCgpOwogfQogCi1JbmxpbmVCb3gqIElubGluZUZsb3dCb3g6Omxhc3RMZWFmQ2hpbGQoKQor
SW5saW5lQm94KiBJbmxpbmVGbG93Qm94OjpsYXN0TGVhZkNoaWxkKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbGFzdExlYWZDaGlsZEJlZm9yZUJveCgpOwogfQogCi1JbmxpbmVCb3gqIElubGluZUZs
b3dCb3g6OmZpcnN0TGVhZkNoaWxkQWZ0ZXJCb3goSW5saW5lQm94KiBzdGFydCkKK0lubGluZUJv
eCogSW5saW5lRmxvd0JveDo6Zmlyc3RMZWFmQ2hpbGRBZnRlckJveChjb25zdCBJbmxpbmVCb3gq
IHN0YXJ0KSBjb25zdAogewogICAgIElubGluZUJveCogbGVhZiA9IDA7CiAgICAgZm9yIChJbmxp
bmVCb3gqIGJveCA9IHN0YXJ0ID8gc3RhcnQtPm5leHRPbkxpbmUoKSA6IGZpcnN0Q2hpbGQoKTsg
Ym94ICYmICFsZWFmOyBib3ggPSBib3gtPm5leHRPbkxpbmUoKSkKQEAgLTEwMDIsNyArMTAwMiw3
IEBAIElubGluZUJveCogSW5saW5lRmxvd0JveDo6Zmlyc3RMZWFmQ2hpbGRBZnRlckJveChJbmxp
bmVCb3gqIHN0YXJ0KQogICAgIHJldHVybiBsZWFmOwogfQogCi1JbmxpbmVCb3gqIElubGluZUZs
b3dCb3g6Omxhc3RMZWFmQ2hpbGRCZWZvcmVCb3goSW5saW5lQm94KiBzdGFydCkKK0lubGluZUJv
eCogSW5saW5lRmxvd0JveDo6bGFzdExlYWZDaGlsZEJlZm9yZUJveChjb25zdCBJbmxpbmVCb3gq
IHN0YXJ0KSBjb25zdAogewogICAgIElubGluZUJveCogbGVhZiA9IDA7CiAgICAgZm9yIChJbmxp
bmVCb3gqIGJveCA9IHN0YXJ0ID8gc3RhcnQtPnByZXZPbkxpbmUoKSA6IGxhc3RDaGlsZCgpOyBi
b3ggJiYgIWxlYWY7IGJveCA9IGJveC0+cHJldk9uTGluZSgpKQpAQCAtMTAxMiw3ICsxMDEyLDcg
QEAgSW5saW5lQm94KiBJbmxpbmVGbG93Qm94OjpsYXN0TGVhZkNoaWxkQmVmb3JlQm94KElubGlu
ZUJveCogc3RhcnQpCiAgICAgcmV0dXJuIGxlYWY7CiB9CiAKLVJlbmRlck9iamVjdDo6U2VsZWN0
aW9uU3RhdGUgSW5saW5lRmxvd0JveDo6c2VsZWN0aW9uU3RhdGUoKQorUmVuZGVyT2JqZWN0OjpT
ZWxlY3Rpb25TdGF0ZSBJbmxpbmVGbG93Qm94OjpzZWxlY3Rpb25TdGF0ZSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uTm9uZTsKIH0KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaCBiL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZUZsb3dCb3guaAppbmRleCA5NTg5NjAzLi5lYjdmNGVkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVGbG93Qm94LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxv
d0JveC5oCkBAIC01NCwxOCArNTQsMTggQEAgcHVibGljOgogCiAgICAgUmVuZGVyRmxvdyogZmxv
d09iamVjdCgpOwogCi0gICAgdmlydHVhbCBib29sIGlzSW5saW5lRmxvd0JveCgpIHsgcmV0dXJu
IHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNJbmxpbmVGbG93Qm94KCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQogCiAgICAgSW5saW5lRmxvd0JveCogcHJldkZsb3dCb3goKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxJbmxpbmVGbG93Qm94Kj4obV9wcmV2TGluZSk7IH0KICAgICBJbmxp
bmVGbG93Qm94KiBuZXh0Rmxvd0JveCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PElubGlu
ZUZsb3dCb3gqPihtX25leHRMaW5lKTsgfQogCi0gICAgSW5saW5lQm94KiBmaXJzdENoaWxkKCkg
eyBjaGVja0NvbnNpc3RlbmN5KCk7IHJldHVybiBtX2ZpcnN0Q2hpbGQ7IH0KLSAgICBJbmxpbmVC
b3gqIGxhc3RDaGlsZCgpIHsgY2hlY2tDb25zaXN0ZW5jeSgpOyByZXR1cm4gbV9sYXN0Q2hpbGQ7
IH0KKyAgICBJbmxpbmVCb3gqIGZpcnN0Q2hpbGQoKSBjb25zdCB7IGNoZWNrQ29uc2lzdGVuY3ko
KTsgcmV0dXJuIG1fZmlyc3RDaGlsZDsgfQorICAgIElubGluZUJveCogbGFzdENoaWxkKCkgY29u
c3QgeyBjaGVja0NvbnNpc3RlbmN5KCk7IHJldHVybiBtX2xhc3RDaGlsZDsgfQogCi0gICAgdmly
dHVhbCBJbmxpbmVCb3gqIGZpcnN0TGVhZkNoaWxkKCk7Ci0gICAgdmlydHVhbCBJbmxpbmVCb3gq
IGxhc3RMZWFmQ2hpbGQoKTsKLSAgICBJbmxpbmVCb3gqIGZpcnN0TGVhZkNoaWxkQWZ0ZXJCb3go
SW5saW5lQm94KiBzdGFydCA9IDApOwotICAgIElubGluZUJveCogbGFzdExlYWZDaGlsZEJlZm9y
ZUJveChJbmxpbmVCb3gqIHN0YXJ0ID0gMCk7CisgICAgdmlydHVhbCBJbmxpbmVCb3gqIGZpcnN0
TGVhZkNoaWxkKCkgY29uc3Q7CisgICAgdmlydHVhbCBJbmxpbmVCb3gqIGxhc3RMZWFmQ2hpbGQo
KSBjb25zdDsKKyAgICBJbmxpbmVCb3gqIGZpcnN0TGVhZkNoaWxkQWZ0ZXJCb3goY29uc3QgSW5s
aW5lQm94KiBzdGFydCA9IDApIGNvbnN0OworICAgIElubGluZUJveCogbGFzdExlYWZDaGlsZEJl
Zm9yZUJveChjb25zdCBJbmxpbmVCb3gqIHN0YXJ0ID0gMCkgY29uc3Q7CiAKICAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29uc3RydWN0ZWQoKQogICAgIHsKQEAgLTEzMCw3ICsxMzAsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHJlbW92ZUNoaWxkKElubGluZUJveCogY2hpbGQpOwogCi0gICAgdmlydHVh
bCBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIHNlbGVjdGlvblN0YXRlKCk7CisgICAgdmly
dHVhbCBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIHNlbGVjdGlvblN0YXRlKCkgY29uc3Q7
CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQWNjb21tb2RhdGVFbGxpcHNpcyhib29sIGx0ciwgaW50
IGJsb2NrRWRnZSwgaW50IGVsbGlwc2lzV2lkdGgpOwogICAgIHZpcnR1YWwgaW50IHBsYWNlRWxs
aXBzaXNCb3goYm9vbCBsdHIsIGludCBibG9ja0VkZ2UsIGludCBlbGxpcHNpc1dpZHRoLCBib29s
Jik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCmluZGV4IDBkMTU4MzkuLjIyMGUyYzkg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC00MSwxMiArNDEsMTIgQEAgdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbnQgSW5saW5lVGV4
dEJveDo6c2VsZWN0aW9uVG9wKCkKK2ludCBJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25Ub3AoKSBj
b25zdAogewogICAgIHJldHVybiByb290KCktPnNlbGVjdGlvblRvcCgpOwogfQogCi1pbnQgSW5s
aW5lVGV4dEJveDo6c2VsZWN0aW9uSGVpZ2h0KCkKK2ludCBJbmxpbmVUZXh0Qm94OjpzZWxlY3Rp
b25IZWlnaHQoKSBjb25zdAogewogICAgIHJldHVybiByb290KCktPnNlbGVjdGlvbkhlaWdodCgp
OwogfQpAQCAtNTgsNyArNTgsNyBAQCBib29sIElubGluZVRleHRCb3g6OmlzU2VsZWN0ZWQoaW50
IHN0YXJ0UG9zLCBpbnQgZW5kUG9zKSBjb25zdAogICAgIHJldHVybiAoc1BvcyA8IGVQb3MpOwog
fQogCi1SZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIElubGluZVRleHRCb3g6OnNlbGVjdGlv
blN0YXRlKCkKK1JlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgSW5saW5lVGV4dEJveDo6c2Vs
ZWN0aW9uU3RhdGUoKSBjb25zdAogewogICAgIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUg
c3RhdGUgPSBvYmplY3QoKS0+c2VsZWN0aW9uU3RhdGUoKTsKICAgICBpZiAoc3RhdGUgPT0gUmVu
ZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGFydCB8fCBzdGF0ZSA9PSBSZW5kZXJPYmplY3Q6OlNlbGVj
dGlvbkVuZCB8fCBzdGF0ZSA9PSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbkJvdGgpIHsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaCBiL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZVRleHRCb3guaAppbmRleCBkOGEyNTBiLi45MWM2ODE1IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5oCkBAIC02Nyw4ICs2Nyw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgb2Zm
c2V0UnVuKGludCBkKSB7IG1fc3RhcnQgKz0gZDsgfQogCi0gICAgdmlydHVhbCBpbnQgc2VsZWN0
aW9uVG9wKCk7Ci0gICAgdmlydHVhbCBpbnQgc2VsZWN0aW9uSGVpZ2h0KCk7CisgICAgdmlydHVh
bCBpbnQgc2VsZWN0aW9uVG9wKCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQgc2VsZWN0aW9uSGVp
Z2h0KCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIEludFJlY3Qgc2VsZWN0aW9uUmVjdChpbnQgYWJz
eCwgaW50IGFic3ksIGludCBzdGFydFBvcywgaW50IGVuZFBvcyk7CiAgICAgYm9vbCBpc1NlbGVj
dGVkKGludCBzdGFydFBvcywgaW50IGVuZFBvcykgY29uc3Q7CkBAIC04Myw3ICs4Myw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZXh0cmFjdExpbmUoKTsKICAgICB2aXJ0dWFsIHZvaWQg
YXR0YWNoTGluZSgpOwogCi0gICAgdmlydHVhbCBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRl
IHNlbGVjdGlvblN0YXRlKCk7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0
YXRlIHNlbGVjdGlvblN0YXRlKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJUcnVu
Y2F0aW9uKCkgeyBtX3RydW5jYXRpb24gPSBjTm9UcnVuY2F0aW9uOyB9CiAgICAgdmlydHVhbCBp
bnQgcGxhY2VFbGxpcHNpc0JveChib29sIGx0ciwgaW50IGJsb2NrRWRnZSwgaW50IGVsbGlwc2lz
V2lkdGgsIGJvb2wmIGZvdW5kQm94KTsKQEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0U3BhY2VBZGQoaW50IGFkZCkgeyBtX3dpZHRoIC09IG1fdG9BZGQ7IG1fdG9BZGQgPSBh
ZGQ7IG1fd2lkdGggKz0gbV90b0FkZDsgfQogICAgIGludCBzcGFjZUFkZCgpIHsgcmV0dXJuIG1f
dG9BZGQ7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc0lubGluZVRleHRCb3goKSB7IHJldHVybiB0
cnVlOyB9ICAgIAorICAgIHZpcnR1YWwgYm9vbCBpc0lubGluZVRleHRCb3goKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9ICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1RleHQoKSBjb25zdCB7IHJldHVy
biBtX3RyZWF0QXNUZXh0OyB9CiAgICAgdm9pZCBzZXRJc1RleHQoYm9vbCBiKSB7IG1fdHJlYXRB
c1RleHQgPSBiOyB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJSLmgg
Yi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCUi5oCmluZGV4IGI2NWJiNTguLjc0ZDUxNTEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJSLmgKKysrIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQlIuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyQlIiOyB9CiAg
Ci0gICAgdmlydHVhbCBJbnRSZWN0IHNlbGVjdGlvblJlY3QoYm9vbCkgeyByZXR1cm4gSW50UmVj
dCgpOyB9CisgICAgdmlydHVhbCBJbnRSZWN0IHNlbGVjdGlvblJlY3QoYm9vbCkgY29uc3QgeyBy
ZXR1cm4gSW50UmVjdCgpOyB9CiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIHdpZHRoKHVuc2lnbmVk
IC8qZnJvbSovLCB1bnNpZ25lZCAvKmxlbiovLCBjb25zdCBGb250JiwgaW50IC8qeHBvcyovKSBj
b25zdCB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCB1bnNpZ25lZCB3aWR0aCh1bnNpZ25lZCAv
KmZyb20qLywgdW5zaWduZWQgLypsZW4qLywgaW50IC8qeHBvcyovLCBib29sIC8qZmlyc3RMaW5l
ID0gZmFsc2UqLykgY29uc3QgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
CmluZGV4IDQ0YzQ3NGIuLjllMjFjZWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAg
LTE4ODQsNyArMTg4NCw3IEBAIGJvb2wgUmVuZGVyQmxvY2s6OmlzU2VsZWN0aW9uUm9vdCgpIGNv
bnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1HYXBSZWN0cyBSZW5kZXJCbG9jazo6c2VsZWN0
aW9uR2FwUmVjdHMoKQorR2FwUmVjdHMgUmVuZGVyQmxvY2s6OnNlbGVjdGlvbkdhcFJlY3RzKCkg
Y29uc3QKIHsKICAgICBBU1NFUlQoIW5lZWRzTGF5b3V0KCkpOwogCkBAIC0xOTI3LDggKzE5Mjcs
OCBAQCBzdGF0aWMgdm9pZCBjbGlwT3V0UG9zaXRpb25lZE9iamVjdHMoY29uc3QgUmVuZGVyT2Jq
ZWN0OjpQYWludEluZm8qIHBhaW50SW5mbywgaQogICAgIH0KIH0KIAotR2FwUmVjdHMgUmVuZGVy
QmxvY2s6OmZpbGxTZWxlY3Rpb25HYXBzKFJlbmRlckJsb2NrKiByb290QmxvY2ssIGludCBibG9j
a1gsIGludCBibG9ja1ksIGludCB0eCwgaW50IHR5LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCYgbGFzdFRvcCwgaW50JiBsYXN0TGVmdCwgaW50JiBsYXN0Umln
aHQsIGNvbnN0IFBhaW50SW5mbyogcGFpbnRJbmZvKQorR2FwUmVjdHMgUmVuZGVyQmxvY2s6OmZp
bGxTZWxlY3Rpb25HYXBzKGNvbnN0IFJlbmRlckJsb2NrKiByb290QmxvY2ssIGludCBibG9ja1gs
IGludCBibG9ja1ksIGludCB0eCwgaW50IHR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCYgbGFzdFRvcCwgaW50JiBsYXN0TGVmdCwgaW50JiBsYXN0UmlnaHQs
IGNvbnN0IFBhaW50SW5mbyogcGFpbnRJbmZvKSBjb25zdAogewogICAgIC8vIElNUE9SVEFOVDog
Q2FsbGVycyBvZiB0aGlzIG1ldGhvZCB0aGF0IGludGVuZCBmb3IgcGFpbnRpbmcgdG8gaGFwcGVu
IG5lZWQgdG8gZG8gYSBzYXZlL3Jlc3RvcmUuCiAgICAgLy8gQ2xpcCBvdXQgZmxvYXRpbmcgYW5k
IHBvc2l0aW9uZWQgb2JqZWN0cyB3aGVuIHBhaW50aW5nIHNlbGVjdGlvbiBnYXBzLgpAQCAtMTk3
NCw4ICsxOTc0LDggQEAgR2FwUmVjdHMgUmVuZGVyQmxvY2s6OmZpbGxTZWxlY3Rpb25HYXBzKFJl
bmRlckJsb2NrKiByb290QmxvY2ssIGludCBibG9ja1gsIGludAogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLUdhcFJlY3RzIFJlbmRlckJsb2NrOjpmaWxsSW5saW5lU2VsZWN0aW9uR2FwcyhSZW5k
ZXJCbG9jayogcm9vdEJsb2NrLCBpbnQgYmxvY2tYLCBpbnQgYmxvY2tZLCBpbnQgdHgsIGludCB0
eSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBs
YXN0VG9wLCBpbnQmIGxhc3RMZWZ0LCBpbnQmIGxhc3RSaWdodCwgY29uc3QgUGFpbnRJbmZvKiBw
YWludEluZm8pCitHYXBSZWN0cyBSZW5kZXJCbG9jazo6ZmlsbElubGluZVNlbGVjdGlvbkdhcHMo
Y29uc3QgUmVuZGVyQmxvY2sqIHJvb3RCbG9jaywgaW50IGJsb2NrWCwgaW50IGJsb2NrWSwgaW50
IHR4LCBpbnQgdHksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCYgbGFzdFRvcCwgaW50JiBsYXN0TGVmdCwgaW50JiBsYXN0UmlnaHQsIGNvbnN0IFBh
aW50SW5mbyogcGFpbnRJbmZvKSBjb25zdAogewogICAgIEdhcFJlY3RzIHJlc3VsdDsKIApAQCAt
MTk5Miw4ICsxOTkyLDggQEAgR2FwUmVjdHMgUmVuZGVyQmxvY2s6OmZpbGxJbmxpbmVTZWxlY3Rp
b25HYXBzKFJlbmRlckJsb2NrKiByb290QmxvY2ssIGludCBibG9ja1gKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAKLSAgICBSb290SW5saW5lQm94KiBsYXN0U2VsZWN0ZWRMaW5lID0g
MDsKLSAgICBSb290SW5saW5lQm94KiBjdXJyOworICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gqIGxh
c3RTZWxlY3RlZExpbmUgPSAwOworICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gqIGN1cnI7CiAgICAg
Zm9yIChjdXJyID0gZmlyc3RSb290Qm94KCk7IGN1cnIgJiYgIWN1cnItPmhhc1NlbGVjdGVkQ2hp
bGRyZW4oKTsgY3VyciA9IGN1cnItPm5leHRSb290Qm94KCkpIHsgfQogCiAgICAgLy8gTm93IHBh
aW50IHRoZSBnYXBzIGZvciB0aGUgbGluZXMuCkBAIC0yMDI1LDggKzIwMjUsOCBAQCBHYXBSZWN0
cyBSZW5kZXJCbG9jazo6ZmlsbElubGluZVNlbGVjdGlvbkdhcHMoUmVuZGVyQmxvY2sqIHJvb3RC
bG9jaywgaW50IGJsb2NrWAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUdhcFJlY3RzIFJlbmRl
ckJsb2NrOjpmaWxsQmxvY2tTZWxlY3Rpb25HYXBzKFJlbmRlckJsb2NrKiByb290QmxvY2ssIGlu
dCBibG9ja1gsIGludCBibG9ja1ksIGludCB0eCwgaW50IHR5LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBsYXN0VG9wLCBpbnQmIGxhc3RMZWZ0LCBp
bnQmIGxhc3RSaWdodCwgY29uc3QgUGFpbnRJbmZvKiBwYWludEluZm8pCitHYXBSZWN0cyBSZW5k
ZXJCbG9jazo6ZmlsbEJsb2NrU2VsZWN0aW9uR2Fwcyhjb25zdCBSZW5kZXJCbG9jayogcm9vdEJs
b2NrLCBpbnQgYmxvY2tYLCBpbnQgYmxvY2tZLCBpbnQgdHgsIGludCB0eSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCYgbGFzdFRvcCwgaW50JiBsYXN0
TGVmdCwgaW50JiBsYXN0UmlnaHQsIGNvbnN0IFBhaW50SW5mbyogcGFpbnRJbmZvKSBjb25zdAog
ewogICAgIEdhcFJlY3RzIHJlc3VsdDsKIApAQCAtMjA4Nyw3ICsyMDg3LDcgQEAgR2FwUmVjdHMg
UmVuZGVyQmxvY2s6OmZpbGxCbG9ja1NlbGVjdGlvbkdhcHMoUmVuZGVyQmxvY2sqIHJvb3RCbG9j
aywgaW50IGJsb2NrWCwKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1JbnRSZWN0IFJlbmRlckJs
b2NrOjpmaWxsSG9yaXpvbnRhbFNlbGVjdGlvbkdhcChSZW5kZXJPYmplY3QqIHNlbE9iaiwgaW50
IHhQb3MsIGludCB5UG9zLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNvbnN0IFBhaW50SW5mbyog
cGFpbnRJbmZvKQorSW50UmVjdCBSZW5kZXJCbG9jazo6ZmlsbEhvcml6b250YWxTZWxlY3Rpb25H
YXAoY29uc3QgUmVuZGVyT2JqZWN0KiBzZWxPYmosIGludCB4UG9zLCBpbnQgeVBvcywgaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0LCBjb25zdCBQYWludEluZm8qIHBhaW50SW5mbykgY29uc3QKIHsKICAg
ICBpZiAod2lkdGggPD0gMCB8fCBoZWlnaHQgPD0gMCkKICAgICAgICAgcmV0dXJuIEludFJlY3Qo
KTsKQEAgLTIwOTcsOCArMjA5Nyw4IEBAIEludFJlY3QgUmVuZGVyQmxvY2s6OmZpbGxIb3Jpem9u
dGFsU2VsZWN0aW9uR2FwKFJlbmRlck9iamVjdCogc2VsT2JqLCBpbnQgeFBvcywKICAgICByZXR1
cm4gZ2FwUmVjdDsKIH0KIAotSW50UmVjdCBSZW5kZXJCbG9jazo6ZmlsbFZlcnRpY2FsU2VsZWN0
aW9uR2FwKGludCBsYXN0VG9wLCBpbnQgbGFzdExlZnQsIGludCBsYXN0UmlnaHQsIGludCBib3R0
b21ZLCBSZW5kZXJCbG9jayogcm9vdEJsb2NrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBibG9ja1gsIGludCBibG9ja1ksIGNvbnN0IFBhaW50SW5m
byogcGFpbnRJbmZvKQorSW50UmVjdCBSZW5kZXJCbG9jazo6ZmlsbFZlcnRpY2FsU2VsZWN0aW9u
R2FwKGludCBsYXN0VG9wLCBpbnQgbGFzdExlZnQsIGludCBsYXN0UmlnaHQsIGludCBib3R0b21Z
LCBjb25zdCBSZW5kZXJCbG9jayogcm9vdEJsb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBibG9ja1gsIGludCBibG9ja1ksIGNvbnN0IFBhaW50
SW5mbyogcGFpbnRJbmZvKSBjb25zdAogewogICAgIGludCB0b3AgPSBibG9ja1kgKyBsYXN0VG9w
OwogICAgIGludCBoZWlnaHQgPSBib3R0b21ZIC0gdG9wOwpAQCAtMjExOCw4ICsyMTE4LDggQEAg
SW50UmVjdCBSZW5kZXJCbG9jazo6ZmlsbFZlcnRpY2FsU2VsZWN0aW9uR2FwKGludCBsYXN0VG9w
LCBpbnQgbGFzdExlZnQsIGludCBsYXMKICAgICByZXR1cm4gZ2FwUmVjdDsKIH0KIAotSW50UmVj
dCBSZW5kZXJCbG9jazo6ZmlsbExlZnRTZWxlY3Rpb25HYXAoUmVuZGVyT2JqZWN0KiBzZWxPYmos
IGludCB4UG9zLCBpbnQgeVBvcywgaW50IGhlaWdodCwgUmVuZGVyQmxvY2sqIHJvb3RCbG9jaywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBibG9ja1gsIGlu
dCBibG9ja1ksIGludCB0eCwgaW50IHR5LCBjb25zdCBQYWludEluZm8qIHBhaW50SW5mbykKK0lu
dFJlY3QgUmVuZGVyQmxvY2s6OmZpbGxMZWZ0U2VsZWN0aW9uR2FwKGNvbnN0IFJlbmRlck9iamVj
dCogc2VsT2JqLCBpbnQgeFBvcywgaW50IHlQb3MsIGludCBoZWlnaHQsIGNvbnN0IFJlbmRlckJs
b2NrKiByb290QmxvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgYmxvY2tYLCBpbnQgYmxvY2tZLCBpbnQgdHgsIGludCB0eSwgY29uc3QgUGFpbnRJbmZv
KiBwYWludEluZm8pIGNvbnN0CiB7CiAgICAgaW50IHRvcCA9IHlQb3MgKyB0eTsKICAgICBpbnQg
bGVmdCA9IGJsb2NrWCArIG1heChsZWZ0U2VsZWN0aW9uT2Zmc2V0KHJvb3RCbG9jaywgeVBvcyks
IGxlZnRTZWxlY3Rpb25PZmZzZXQocm9vdEJsb2NrLCB5UG9zICsgaGVpZ2h0KSk7CkBAIC0yMTM0
LDggKzIxMzQsOCBAQCBJbnRSZWN0IFJlbmRlckJsb2NrOjpmaWxsTGVmdFNlbGVjdGlvbkdhcChS
ZW5kZXJPYmplY3QqIHNlbE9iaiwgaW50IHhQb3MsIGludCB5UAogICAgIHJldHVybiBnYXBSZWN0
OwogfQogCi1JbnRSZWN0IFJlbmRlckJsb2NrOjpmaWxsUmlnaHRTZWxlY3Rpb25HYXAoUmVuZGVy
T2JqZWN0KiBzZWxPYmosIGludCB4UG9zLCBpbnQgeVBvcywgaW50IGhlaWdodCwgUmVuZGVyQmxv
Y2sqIHJvb3RCbG9jaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgYmxvY2tYLCBpbnQgYmxvY2tZLCBpbnQgdHgsIGludCB0eSwgY29uc3QgUGFpbnRJbmZv
KiBwYWludEluZm8pCitJbnRSZWN0IFJlbmRlckJsb2NrOjpmaWxsUmlnaHRTZWxlY3Rpb25HYXAo
Y29uc3QgUmVuZGVyT2JqZWN0KiBzZWxPYmosIGludCB4UG9zLCBpbnQgeVBvcywgaW50IGhlaWdo
dCwgY29uc3QgUmVuZGVyQmxvY2sqIHJvb3RCbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgYmxvY2tYLCBpbnQgYmxvY2tZLCBpbnQgdHgsIGludCB0
eSwgY29uc3QgUGFpbnRJbmZvKiBwYWludEluZm8pIGNvbnN0CiB7CiAgICAgaW50IGxlZnQgPSBt
YXgoeFBvcyArIHR4LCBibG9ja1ggKyBtYXgobGVmdFNlbGVjdGlvbk9mZnNldChyb290QmxvY2ss
IHlQb3MpLCBsZWZ0U2VsZWN0aW9uT2Zmc2V0KHJvb3RCbG9jaywgeVBvcyArIGhlaWdodCkpKTsK
ICAgICBpbnQgdG9wID0geVBvcyArIHR5OwpAQCAtMjE1MCw3ICsyMTUwLDcgQEAgSW50UmVjdCBS
ZW5kZXJCbG9jazo6ZmlsbFJpZ2h0U2VsZWN0aW9uR2FwKFJlbmRlck9iamVjdCogc2VsT2JqLCBp
bnQgeFBvcywgaW50IHkKICAgICByZXR1cm4gZ2FwUmVjdDsKIH0KIAotdm9pZCBSZW5kZXJCbG9j
azo6Z2V0SG9yaXpvbnRhbFNlbGVjdGlvbkdhcEluZm8oU2VsZWN0aW9uU3RhdGUgc3RhdGUsIGJv
b2wmIGxlZnRHYXAsIGJvb2wmIHJpZ2h0R2FwKQordm9pZCBSZW5kZXJCbG9jazo6Z2V0SG9yaXpv
bnRhbFNlbGVjdGlvbkdhcEluZm8oU2VsZWN0aW9uU3RhdGUgc3RhdGUsIGJvb2wmIGxlZnRHYXAs
IGJvb2wmIHJpZ2h0R2FwKSBjb25zdAogewogICAgIGJvb2wgbHRyID0gc3R5bGUoKS0+ZGlyZWN0
aW9uKCkgPT0gTFRSOwogICAgIGxlZnRHYXAgPSAoc3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpTZWxl
Y3Rpb25JbnNpZGUpIHx8CkBAIC0yMTYxLDcgKzIxNjEsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpn
ZXRIb3Jpem9udGFsU2VsZWN0aW9uR2FwSW5mbyhTZWxlY3Rpb25TdGF0ZSBzdGF0ZSwgYm9vbCYg
bGVmdAogICAgICAgICAgICAgICAgKHN0YXRlID09IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uRW5k
ICYmICFsdHIpOwogfQogCi1pbnQgUmVuZGVyQmxvY2s6OmxlZnRTZWxlY3Rpb25PZmZzZXQoUmVu
ZGVyQmxvY2sqIHJvb3RCbG9jaywgaW50IHkpCitpbnQgUmVuZGVyQmxvY2s6OmxlZnRTZWxlY3Rp
b25PZmZzZXQoY29uc3QgUmVuZGVyQmxvY2sqIHJvb3RCbG9jaywgaW50IHkpIGNvbnN0CiB7CiAg
ICAgaW50IGxlZnQgPSBsZWZ0T2Zmc2V0KHkpOwogICAgIGlmIChsZWZ0ID09IGJvcmRlckxlZnQo
KSArIHBhZGRpbmdMZWZ0KCkpIHsKQEAgLTIxNzEsNyArMjE3MSw3IEBAIGludCBSZW5kZXJCbG9j
azo6bGVmdFNlbGVjdGlvbk9mZnNldChSZW5kZXJCbG9jayogcm9vdEJsb2NrLCBpbnQgeSkKICAg
ICAgICAgcmV0dXJuIGxlZnQ7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBSZW5kZXJCbG9j
ayogY2IgPSB0aGlzOworICAgICAgICBjb25zdCBSZW5kZXJCbG9jayogY2IgPSB0aGlzOwogICAg
ICAgICB3aGlsZSAoY2IgIT0gcm9vdEJsb2NrKSB7CiAgICAgICAgICAgICBsZWZ0ICs9IGNiLT54
UG9zKCk7CiAgICAgICAgICAgICBjYiA9IGNiLT5jb250YWluaW5nQmxvY2soKTsKQEAgLTIxODEs
NyArMjE4MSw3IEBAIGludCBSZW5kZXJCbG9jazo6bGVmdFNlbGVjdGlvbk9mZnNldChSZW5kZXJC
bG9jayogcm9vdEJsb2NrLCBpbnQgeSkKICAgICByZXR1cm4gbGVmdDsKIH0KIAotaW50IFJlbmRl
ckJsb2NrOjpyaWdodFNlbGVjdGlvbk9mZnNldChSZW5kZXJCbG9jayogcm9vdEJsb2NrLCBpbnQg
eSkKK2ludCBSZW5kZXJCbG9jazo6cmlnaHRTZWxlY3Rpb25PZmZzZXQoY29uc3QgUmVuZGVyQmxv
Y2sqIHJvb3RCbG9jaywgaW50IHkpIGNvbnN0CiB7CiAgICAgaW50IHJpZ2h0ID0gcmlnaHRPZmZz
ZXQoeSk7CiAgICAgaWYgKHJpZ2h0ID09IChjb250ZW50V2lkdGgoKSArIChib3JkZXJMZWZ0KCkg
KyBwYWRkaW5nTGVmdCgpKSkpIHsKQEAgLTIxOTEsNyArMjE5MSw3IEBAIGludCBSZW5kZXJCbG9j
azo6cmlnaHRTZWxlY3Rpb25PZmZzZXQoUmVuZGVyQmxvY2sqIHJvb3RCbG9jaywgaW50IHkpCiAg
ICAgICAgIHJldHVybiByaWdodDsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFJlbmRlckJs
b2NrKiBjYiA9IHRoaXM7CisgICAgICAgIGNvbnN0IFJlbmRlckJsb2NrKiBjYiA9IHRoaXM7CiAg
ICAgICAgIHdoaWxlIChjYiAhPSByb290QmxvY2spIHsKICAgICAgICAgICAgIHJpZ2h0ICs9IGNi
LT54UG9zKCk7CiAgICAgICAgICAgICBjYiA9IGNiLT5jb250YWluaW5nQmxvY2soKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5oCmluZGV4IGU0NDZmYjIuLjNmYjc1ZmEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suaApAQCAtMjY4LDI3ICsyNjgsMjcgQEAgcHVibGljOgogICAgICAgICBTZWxlY3Rpb25T
dGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KICAgICB9OwogCi0gICAgdmly
dHVhbCBJbnRSZWN0IHNlbGVjdGlvblJlY3QoYm9vbCkgeyByZXR1cm4gc2VsZWN0aW9uR2FwUmVj
dHMoKTsgfQotICAgIEdhcFJlY3RzIHNlbGVjdGlvbkdhcFJlY3RzKCk7CisgICAgdmlydHVhbCBJ
bnRSZWN0IHNlbGVjdGlvblJlY3QoYm9vbCkgY29uc3QgeyByZXR1cm4gc2VsZWN0aW9uR2FwUmVj
dHMoKTsgfQorICAgIEdhcFJlY3RzIHNlbGVjdGlvbkdhcFJlY3RzKCkgY29uc3Q7CiAgICAgdmly
dHVhbCBib29sIHNob3VsZFBhaW50U2VsZWN0aW9uR2FwcygpIGNvbnN0OwogICAgIGJvb2wgaXNT
ZWxlY3Rpb25Sb290KCkgY29uc3Q7Ci0gICAgR2FwUmVjdHMgZmlsbFNlbGVjdGlvbkdhcHMoUmVu
ZGVyQmxvY2sqIHJvb3RCbG9jaywgaW50IGJsb2NrWCwgaW50IGJsb2NrWSwgaW50IHR4LCBpbnQg
dHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBsYXN0VG9wLCBpbnQmIGxh
c3RMZWZ0LCBpbnQmIGxhc3RSaWdodCwgY29uc3QgUGFpbnRJbmZvKiA9IDApOwotICAgIEdhcFJl
Y3RzIGZpbGxJbmxpbmVTZWxlY3Rpb25HYXBzKFJlbmRlckJsb2NrKiByb290QmxvY2ssIGludCBi
bG9ja1gsIGludCBibG9ja1ksIGludCB0eCwgaW50IHR5LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCYgbGFzdFRvcCwgaW50JiBsYXN0TGVmdCwgaW50JiBsYXN0Umln
aHQsIGNvbnN0IFBhaW50SW5mbyopOwotICAgIEdhcFJlY3RzIGZpbGxCbG9ja1NlbGVjdGlvbkdh
cHMoUmVuZGVyQmxvY2sqIHJvb3RCbG9jaywgaW50IGJsb2NrWCwgaW50IGJsb2NrWSwgaW50IHR4
LCBpbnQgdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmIGxhc3RU
b3AsIGludCYgbGFzdExlZnQsIGludCYgbGFzdFJpZ2h0LCBjb25zdCBQYWludEluZm8qKTsKLSAg
ICBJbnRSZWN0IGZpbGxWZXJ0aWNhbFNlbGVjdGlvbkdhcChpbnQgbGFzdFRvcCwgaW50IGxhc3RM
ZWZ0LCBpbnQgbGFzdFJpZ2h0LCBpbnQgYm90dG9tWSwgUmVuZGVyQmxvY2sqIHJvb3RCbG9jaywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYmxvY2tYLCBpbnQgYmxv
Y2tZLCBjb25zdCBQYWludEluZm8qKTsKLSAgICBJbnRSZWN0IGZpbGxMZWZ0U2VsZWN0aW9uR2Fw
KFJlbmRlck9iamVjdCogc2VsT2JqLCBpbnQgeFBvcywgaW50IHlQb3MsIGludCBoZWlnaHQsIFJl
bmRlckJsb2NrKiByb290QmxvY2ssIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IGJsb2NrWCwgaW50IGJsb2NrWSwgaW50IHR4LCBpbnQgdHksIGNvbnN0IFBhaW50SW5mbyop
OwotICAgIEludFJlY3QgZmlsbFJpZ2h0U2VsZWN0aW9uR2FwKFJlbmRlck9iamVjdCogc2VsT2Jq
LCBpbnQgeFBvcywgaW50IHlQb3MsIGludCBoZWlnaHQsIFJlbmRlckJsb2NrKiByb290QmxvY2ss
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJsb2NrWCwgaW50IGJsb2Nr
WSwgaW50IHR4LCBpbnQgdHksIGNvbnN0IFBhaW50SW5mbyopOwotICAgIEludFJlY3QgZmlsbEhv
cml6b250YWxTZWxlY3Rpb25HYXAoUmVuZGVyT2JqZWN0KiBzZWxPYmosIGludCB4UG9zLCBpbnQg
eVBvcywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBjb25zdCBQYWludEluZm8qKTsKLQotICAgIHZv
aWQgZ2V0SG9yaXpvbnRhbFNlbGVjdGlvbkdhcEluZm8oU2VsZWN0aW9uU3RhdGUsIGJvb2wmIGxl
ZnRHYXAsIGJvb2wmIHJpZ2h0R2FwKTsKLSAgICBpbnQgbGVmdFNlbGVjdGlvbk9mZnNldChSZW5k
ZXJCbG9jayogcm9vdEJsb2NrLCBpbnQgeSk7Ci0gICAgaW50IHJpZ2h0U2VsZWN0aW9uT2Zmc2V0
KFJlbmRlckJsb2NrKiByb290QmxvY2ssIGludCB5KTsKKyAgICBHYXBSZWN0cyBmaWxsU2VsZWN0
aW9uR2Fwcyhjb25zdCBSZW5kZXJCbG9jayogcm9vdEJsb2NrLCBpbnQgYmxvY2tYLCBpbnQgYmxv
Y2tZLCBpbnQgdHgsIGludCB0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQm
IGxhc3RUb3AsIGludCYgbGFzdExlZnQsIGludCYgbGFzdFJpZ2h0LCBjb25zdCBQYWludEluZm8q
ID0gMCkgY29uc3Q7CisgICAgR2FwUmVjdHMgZmlsbElubGluZVNlbGVjdGlvbkdhcHMoY29uc3Qg
UmVuZGVyQmxvY2sqIHJvb3RCbG9jaywgaW50IGJsb2NrWCwgaW50IGJsb2NrWSwgaW50IHR4LCBp
bnQgdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBsYXN0VG9w
LCBpbnQmIGxhc3RMZWZ0LCBpbnQmIGxhc3RSaWdodCwgY29uc3QgUGFpbnRJbmZvKikgY29uc3Q7
CisgICAgR2FwUmVjdHMgZmlsbEJsb2NrU2VsZWN0aW9uR2Fwcyhjb25zdCBSZW5kZXJCbG9jayog
cm9vdEJsb2NrLCBpbnQgYmxvY2tYLCBpbnQgYmxvY2tZLCBpbnQgdHgsIGludCB0eSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCYgbGFzdFRvcCwgaW50JiBsYXN0TGVm
dCwgaW50JiBsYXN0UmlnaHQsIGNvbnN0IFBhaW50SW5mbyopIGNvbnN0OworICAgIEludFJlY3Qg
ZmlsbFZlcnRpY2FsU2VsZWN0aW9uR2FwKGludCBsYXN0VG9wLCBpbnQgbGFzdExlZnQsIGludCBs
YXN0UmlnaHQsIGludCBib3R0b21ZLCBjb25zdCBSZW5kZXJCbG9jayogcm9vdEJsb2NrLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBibG9ja1gsIGludCBibG9ja1ks
IGNvbnN0IFBhaW50SW5mbyopIGNvbnN0OworICAgIEludFJlY3QgZmlsbExlZnRTZWxlY3Rpb25H
YXAoY29uc3QgUmVuZGVyT2JqZWN0KiBzZWxPYmosIGludCB4UG9zLCBpbnQgeVBvcywgaW50IGhl
aWdodCwgY29uc3QgUmVuZGVyQmxvY2sqIHJvb3RCbG9jaywgCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgYmxvY2tYLCBpbnQgYmxvY2tZLCBpbnQgdHgsIGludCB0eSwgY29u
c3QgUGFpbnRJbmZvKikgY29uc3Q7CisgICAgSW50UmVjdCBmaWxsUmlnaHRTZWxlY3Rpb25HYXAo
Y29uc3QgUmVuZGVyT2JqZWN0KiBzZWxPYmosIGludCB4UG9zLCBpbnQgeVBvcywgaW50IGhlaWdo
dCwgY29uc3QgUmVuZGVyQmxvY2sqIHJvb3RCbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgYmxvY2tYLCBpbnQgYmxvY2tZLCBpbnQgdHgsIGludCB0eSwgY29uc3Qg
UGFpbnRJbmZvKikgY29uc3Q7CisgICAgSW50UmVjdCBmaWxsSG9yaXpvbnRhbFNlbGVjdGlvbkdh
cChjb25zdCBSZW5kZXJPYmplY3QqIHNlbE9iaiwgaW50IHhQb3MsIGludCB5UG9zLCBpbnQgd2lk
dGgsIGludCBoZWlnaHQsIGNvbnN0IFBhaW50SW5mbyopIGNvbnN0OworCisgICAgdm9pZCBnZXRI
b3Jpem9udGFsU2VsZWN0aW9uR2FwSW5mbyhTZWxlY3Rpb25TdGF0ZSwgYm9vbCYgbGVmdEdhcCwg
Ym9vbCYgcmlnaHRHYXApIGNvbnN0OworICAgIGludCBsZWZ0U2VsZWN0aW9uT2Zmc2V0KGNvbnN0
IFJlbmRlckJsb2NrKiByb290QmxvY2ssIGludCB5KSBjb25zdDsKKyAgICBpbnQgcmlnaHRTZWxl
Y3Rpb25PZmZzZXQoY29uc3QgUmVuZGVyQmxvY2sqIHJvb3RCbG9jaywgaW50IHkpIGNvbnN0Owog
CiAgICAgLy8gSGVscGVyIG1ldGhvZHMgZm9yIGNvbXB1dGluZyBsaW5lIGNvdW50cyBhbmQgaGVp
Z2h0cyBmb3IgbGluZSBjb3VudHMuCiAgICAgUm9vdElubGluZUJveCogbGluZUF0SW5kZXgoaW50
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IGEyMzZiMzcuLjhkOGIzNWQgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcApAQCAtMTE1OCw3ICsxMTU4LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmRl
bGV0ZUxpbmVCb3hXcmFwcGVyKCkKICAgICB9CiB9CiAKLUludFJlY3QgUmVuZGVyQm94OjphYnNv
bHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKQorSW50UmVjdCBSZW5kZXJCb3g6OmFic29sdXRlQ2xp
cHBlZE92ZXJmbG93UmVjdCgpIGNvbnN0CiB7CiAgICAgaWYgKHN0eWxlKCktPnZpc2liaWxpdHko
KSAhPSBWSVNJQkxFICYmICFlbmNsb3NpbmdMYXllcigpLT5oYXNWaXNpYmxlQ29udGVudCgpKQog
ICAgICAgICByZXR1cm4gSW50UmVjdCgpOwpAQCAtMTE4NSw3ICsxMTg1LDcgQEAgSW50UmVjdCBS
ZW5kZXJCb3g6OmFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpCiAgICAgcmV0dXJuIHI7CiB9
CiAKLXZvaWQgUmVuZGVyQm94Ojpjb21wdXRlQWJzb2x1dGVSZXBhaW50UmVjdChJbnRSZWN0JiBy
ZWN0LCBib29sIGZpeGVkKQordm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRS
ZWN0KEludFJlY3QmIHJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0CiB7CiAgICAgaWYgKFJlbmRlclZp
ZXcqIHYgPSB2aWV3KCkpIHsKICAgICAgICAgaWYgKExheW91dFN0YXRlKiBsYXlvdXRTdGF0ZSA9
IHYtPmxheW91dFN0YXRlKCkpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggNWYyMDIxZC4uMDcz
M2U2OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTk3LDggKzk3LDggQEAgcHVibGljOgogICAg
IHZpcnR1YWwgaW50IHJpZ2h0bW9zdFBvc2l0aW9uKGJvb2wgaW5jbHVkZU92ZXJmbG93SW50ZXJp
b3IgPSB0cnVlLCBib29sIGluY2x1ZGVTZWxmID0gdHJ1ZSkgY29uc3Q7CiAgICAgdmlydHVhbCBp
bnQgbGVmdG1vc3RQb3NpdGlvbihib29sIGluY2x1ZGVPdmVyZmxvd0ludGVyaW9yID0gdHJ1ZSwg
Ym9vbCBpbmNsdWRlU2VsZiA9IHRydWUpIGNvbnN0OwogCi0gICAgdmlydHVhbCBJbnRSZWN0IGFi
c29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpOwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlQWJz
b2x1dGVSZXBhaW50UmVjdChJbnRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKTsKKyAgICB2aXJ0
dWFsIEludFJlY3QgYWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCkgY29uc3Q7CisgICAgdmly
dHVhbCB2b2lkIGNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0KEludFJlY3QmLCBib29sIGZpeGVk
ID0gZmFsc2UpIGNvbnN0OwogICAgIEludFNpemUgb2Zmc2V0Rm9yUG9zaXRpb25lZEluQ29udGFp
bmVyKFJlbmRlck9iamVjdCopIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIHJlcGFpbnREdXJp
bmdMYXlvdXRJZk1vdmVkKGNvbnN0IEludFJlY3QmKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckNvbnRhaW5lci5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb250
YWluZXIuY3BwCmluZGV4IDA0MmY1YWEuLjI4NDQ4MDMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckNvbnRhaW5lci5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Q29udGFpbmVyLmNwcApAQCAtNjU5LDcgKzY1OSw3IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJD
b250YWluZXI6OnBvc2l0aW9uRm9yQ29vcmRpbmF0ZXMoaW50IHgsIGludCB5KQogICAgIHJldHVy
biBWaXNpYmxlUG9zaXRpb24oZWxlbWVudCgpLCAwLCBET1dOU1RSRUFNKTsKIH0KIAotdm9pZCBS
ZW5kZXJDb250YWluZXI6OmFkZExpbmVCb3hSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCB1
bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kLCBib29sKQordm9pZCBSZW5kZXJDb250YWluZXI6
OmFkZExpbmVCb3hSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCB1bnNpZ25lZCBzdGFydCwg
dW5zaWduZWQgZW5kLCBib29sKSBjb25zdAogewogICAgIGlmICghbV9maXJzdENoaWxkICYmIChp
c0lubGluZSgpIHx8IGlzQW5vbnltb3VzQmxvY2soKSkpIHsKICAgICAgICAgRmxvYXRQb2ludCBh
YnNQb3MgPSBsb2NhbFRvQWJzb2x1dGVGb3JDb250ZW50KEZsb2F0UG9pbnQoKSk7CkBAIC02Nzks
NyArNjc5LDcgQEAgdm9pZCBSZW5kZXJDb250YWluZXI6OmFkZExpbmVCb3hSZWN0cyhWZWN0b3I8
SW50UmVjdD4mIHJlY3RzLCB1bnNpZ25lZCBzdGFydCwgdW4KICAgICB9CiB9CiAKLXZvaWQgUmVu
ZGVyQ29udGFpbmVyOjpjb2xsZWN0QWJzb2x1dGVMaW5lQm94UXVhZHMoVmVjdG9yPEZsb2F0UXVh
ZD4mIHF1YWRzLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kLCBib29sIHVzZVNlbGVjdGlv
bkhlaWdodCkKK3ZvaWQgUmVuZGVyQ29udGFpbmVyOjpjb2xsZWN0QWJzb2x1dGVMaW5lQm94UXVh
ZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5k
LCBib29sIHVzZVNlbGVjdGlvbkhlaWdodCkgY29uc3QKIHsKICAgICBpZiAoIW1fZmlyc3RDaGls
ZCAmJiAoaXNJbmxpbmUoKSB8fCBpc0Fub255bW91c0Jsb2NrKCkpKSB7CiAgICAgICAgIGFic29s
dXRlUXVhZHMocXVhZHMpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29u
dGFpbmVyLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb250YWluZXIuaAppbmRleCA2OGFi
YTg0Li5hMjU3OTIzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb250YWlu
ZXIuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb250YWluZXIuaApAQCAtNjIsOCAr
NjIsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZv
ckNvb3JkaW5hdGVzKGludCB4LCBpbnQgeSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkTGluZUJv
eFJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gMCwgdW5zaWdu
ZWQgZW5kT2Zmc2V0ID0gVUlOVF9NQVgsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0ID0gZmFsc2Up
OwotICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0QWJzb2x1dGVMaW5lQm94UXVhZHMoVmVjdG9yPEZs
b2F0UXVhZD4mLCB1bnNpZ25lZCBzdGFydE9mZnNldCA9IDAsIHVuc2lnbmVkIGVuZE9mZnNldCA9
IFVJTlRfTUFYLCBib29sIHVzZVNlbGVjdGlvbkhlaWdodCA9IGZhbHNlKTsKKyAgICB2aXJ0dWFs
IHZvaWQgYWRkTGluZUJveFJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0ID0gMCwgdW5zaWduZWQgZW5kT2Zmc2V0ID0gVUlOVF9NQVgsIGJvb2wgdXNlU2VsZWN0aW9u
SGVpZ2h0ID0gZmFsc2UpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0QWJzb2x1dGVM
aW5lQm94UXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCB1bnNpZ25lZCBzdGFydE9mZnNldCA9IDAs
IHVuc2lnbmVkIGVuZE9mZnNldCA9IFVJTlRfTUFYLCBib29sIHVzZVNlbGVjdGlvbkhlaWdodCA9
IGZhbHNlKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBSZW5kZXJPYmplY3QqIG1fZmlyc3RDaGls
ZDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3cuY3BwIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmxvdy5jcHAKaW5kZXggZWU2MDQ4Yy4uYTgyMDEzNSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvdy5jcHAKKysrIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmxvdy5jcHAKQEAgLTQ4MCw3ICs0ODAsNyBAQCBib29sIFJlbmRlckZsb3c6
OmhpdFRlc3RMaW5lcyhjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3Vs
dCYgcmVzdQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotSW50UmVjdCBSZW5kZXJGbG93OjphYnNv
bHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKQorSW50UmVjdCBSZW5kZXJGbG93OjphYnNvbHV0ZUNs
aXBwZWRPdmVyZmxvd1JlY3QoKSBjb25zdAogewogICAgIGlmIChpc0lubGluZUZsb3coKSkgewog
ICAgICAgICAvLyBPbmx5IGNvbXBhY3RzIGFuZCBydW4taW5zIGFyZSBhbGxvd2VkIGluIGhlcmUg
ZHVyaW5nIGxheW91dC4KQEAgLTUwNSw3ICs1MDUsNyBAQCBJbnRSZWN0IFJlbmRlckZsb3c6OmFi
c29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpCiAgICAgICAgIC8vIFdlIG5lZWQgdG8gYWRkIGlu
IHRoZSByZWxhdGl2ZSBwb3NpdGlvbiBvZmZzZXRzIG9mIGFueSBpbmxpbmVzIChpbmNsdWRpbmcg
dXMpIHVwIHRvIG91cgogICAgICAgICAvLyBjb250YWluaW5nIGJsb2NrLgogICAgICAgICBSZW5k
ZXJCbG9jayogY2IgPSBjb250YWluaW5nQmxvY2soKTsKLSAgICAgICAgZm9yIChSZW5kZXJPYmpl
Y3QqIGlubGluZUZsb3cgPSB0aGlzOyBpbmxpbmVGbG93ICYmIGlubGluZUZsb3ctPmlzSW5saW5l
RmxvdygpICYmIGlubGluZUZsb3cgIT0gY2I7IAorICAgICAgICBmb3IgKGNvbnN0IFJlbmRlck9i
amVjdCogaW5saW5lRmxvdyA9IHRoaXM7IGlubGluZUZsb3cgJiYgaW5saW5lRmxvdy0+aXNJbmxp
bmVGbG93KCkgJiYgaW5saW5lRmxvdyAhPSBjYjsgCiAgICAgICAgICAgICAgaW5saW5lRmxvdyA9
IGlubGluZUZsb3ctPnBhcmVudCgpKSB7CiAgICAgICAgICAgICAgaWYgKGlubGluZUZsb3ctPnN0
eWxlKCktPnBvc2l0aW9uKCkgPT0gUmVsYXRpdmVQb3NpdGlvbiAmJiBpbmxpbmVGbG93LT5oYXNM
YXllcigpKQogICAgICAgICAgICAgICAgIGlubGluZUZsb3ctPmxheWVyKCktPnJlbGF0aXZlUG9z
aXRpb25PZmZzZXQobGVmdCwgdG9wKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZsb3cuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3cuaAppbmRleCBjMjg0ZWQ4
Li5mMTY5NzA0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93LmgKKysr
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvdy5oCkBAIC04Nyw3ICs4Nyw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHBhaW50TGluZXMoUGFpbnRJbmZvJiwgaW50IHR4LCBpbnQgdHkpOwogICAg
IGJvb2wgaGl0VGVzdExpbmVzKGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYs
IGludCB4LCBpbnQgeSwgaW50IHR4LCBpbnQgdHksIEhpdFRlc3RBY3Rpb24pOwogCi0gICAgdmly
dHVhbCBJbnRSZWN0IGFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpOworICAgIHZpcnR1YWwg
SW50UmVjdCBhYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKSBjb25zdDsKIAogICAgIHZpcnR1
YWwgaW50IGxvd2VzdFBvc2l0aW9uKGJvb2wgaW5jbHVkZU92ZXJmbG93SW50ZXJpb3IgPSB0cnVl
LCBib29sIGluY2x1ZGVTZWxmID0gdHJ1ZSkgY29uc3Q7CiAgICAgdmlydHVhbCBpbnQgcmlnaHRt
b3N0UG9zaXRpb24oYm9vbCBpbmNsdWRlT3ZlcmZsb3dJbnRlcmlvciA9IHRydWUsIGJvb2wgaW5j
bHVkZVNlbGYgPSB0cnVlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZvcmVpZ25PYmplY3QuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRm9yZWlnbk9i
amVjdC5jcHAKaW5kZXggYzUyYzE1Ny4uZTFiNGYzZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRm9yZWlnbk9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRm9yZWlnbk9iamVjdC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgUmVuZGVyRm9yZWlnbk9iamVj
dDo6UmVuZGVyRm9yZWlnbk9iamVjdChTVkdGb3JlaWduT2JqZWN0RWxlbWVudCogbm9kZSkKIHsK
IH0KIAotQWZmaW5lVHJhbnNmb3JtIFJlbmRlckZvcmVpZ25PYmplY3Q6OnRyYW5zbGF0aW9uRm9y
QXR0cmlidXRlcygpCitBZmZpbmVUcmFuc2Zvcm0gUmVuZGVyRm9yZWlnbk9iamVjdDo6dHJhbnNs
YXRpb25Gb3JBdHRyaWJ1dGVzKCkgY29uc3QKIHsKICAgICBTVkdGb3JlaWduT2JqZWN0RWxlbWVu
dCogZm9yZWlnbiA9IHN0YXRpY19jYXN0PFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50Kj4oZWxlbWVu
dCgpKTsKICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCkudHJhbnNsYXRlKGZvcmVpZ24tPngo
KS52YWx1ZShmb3JlaWduKSwgZm9yZWlnbi0+eSgpLnZhbHVlKGZvcmVpZ24pKTsKQEAgLTcwLDcg
KzcwLDcgQEAgdm9pZCBSZW5kZXJGb3JlaWduT2JqZWN0OjpwYWludChQYWludEluZm8mIHBhaW50
SW5mbywgaW50IHBhcmVudFgsIGludCBwYXJlbnRZKQogICAgIHBhaW50SW5mby5jb250ZXh0LT5y
ZXN0b3JlKCk7CiB9CiAKLXZvaWQgUmVuZGVyRm9yZWlnbk9iamVjdDo6Y29tcHV0ZUFic29sdXRl
UmVwYWludFJlY3QoSW50UmVjdCYgciwgYm9vbCBmKQordm9pZCBSZW5kZXJGb3JlaWduT2JqZWN0
Ojpjb21wdXRlQWJzb2x1dGVSZXBhaW50UmVjdChJbnRSZWN0JiByLCBib29sIGYpIGNvbnN0CiB7
CiAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IHRyYW5zbGF0aW9uRm9yQXR0cmlidXRl
cygpICogbG9jYWxUcmFuc2Zvcm0oKTsKICAgICByID0gdHJhbnNmb3JtLm1hcFJlY3Qocik7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmggYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmgKaW5kZXggYjYyNDY4My4uN2U0ODY1
NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRm9yZWlnbk9iamVjdC5oCisr
KyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZvcmVpZ25PYmplY3QuaApAQCAtNDIsMTQgKzQy
LDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBsb2NhbFRyYW5zZm9y
bSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KICAgICB2aXJ0dWFsIGJvb2wg
Y2FsY3VsYXRlTG9jYWxUcmFuc2Zvcm0oKTsKIAotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlQWJz
b2x1dGVSZXBhaW50UmVjdChJbnRSZWN0JiwgYm9vbCBmaXhlZCk7CisgICAgdmlydHVhbCB2b2lk
IGNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0KEludFJlY3QmLCBib29sIGZpeGVkKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpOwogICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXQoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVz
dCYsIEhpdFRlc3RSZXN1bHQmLCBpbnQgeCwgaW50IHksIGludCB0eCwgaW50IHR5LCBIaXRUZXN0
QWN0aW9uKTsKIAogIHByaXZhdGU6Ci0gICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zbGF0aW9uRm9y
QXR0cmlidXRlcygpOworICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2xhdGlvbkZvckF0dHJpYnV0
ZXMoKSBjb25zdDsKIAogICAgIEFmZmluZVRyYW5zZm9ybSBtX2xvY2FsVHJhbnNmb3JtOwogICAg
IEludFJlY3QgbV9hYnNvbHV0ZUJvdW5kczsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmlu
ZGV4IDQwZTUwMjkuLjYwMjI4ODMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cklubGluZS5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAt
Mjg0LDcgKzI4NCw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWludChQYWludEluZm8mIHBhaW50
SW5mbywgaW50IHR4LCBpbnQgdHkpCiAgICAgcGFpbnRMaW5lcyhwYWludEluZm8sIHR4LCB0eSk7
CiB9CiAKLXZvaWQgUmVuZGVySW5saW5lOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYg
cmVjdHMsIGludCB0eCwgaW50IHR5LCBib29sIHRvcExldmVsKQordm9pZCBSZW5kZXJJbmxpbmU6
OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50IHR4LCBpbnQgdHksIGJv
b2wgdG9wTGV2ZWwpIGNvbnN0CiB7CiAgICAgZm9yIChJbmxpbmVSdW5Cb3gqIGN1cnIgPSBmaXJz
dExpbmVCb3goKTsgY3VycjsgY3VyciA9IGN1cnItPm5leHRMaW5lQm94KCkpCiAgICAgICAgIHJl
Y3RzLmFwcGVuZChJbnRSZWN0KHR4ICsgY3Vyci0+eFBvcygpLCB0eSArIGN1cnItPnlQb3MoKSwg
Y3Vyci0+d2lkdGgoKSwgY3Vyci0+aGVpZ2h0KCkpKTsKQEAgLTMwMSw3ICszMDEsNyBAQCB2b2lk
IFJlbmRlcklubGluZTo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQg
dHgsIGludCB0eSwgYm9vbCB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0b3BMZXZlbCk7CiB9CiAKLXZvaWQgUmVuZGVySW5saW5lOjphYnNvbHV0ZVF1YWRzKFZlY3Rv
cjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCB0b3BMZXZlbCkKK3ZvaWQgUmVuZGVySW5saW5lOjph
YnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCB0b3BMZXZlbCkgY29u
c3QKIHsKICAgICBmb3IgKElubGluZVJ1bkJveCogY3VyciA9IGZpcnN0TGluZUJveCgpOyBjdXJy
OyBjdXJyID0gY3Vyci0+bmV4dExpbmVCb3goKSkgewogICAgICAgICBGbG9hdFJlY3QgbG9jYWxS
ZWN0KGN1cnItPnhQb3MoKSwgY3Vyci0+eVBvcygpLCBjdXJyLT53aWR0aCgpLCBjdXJyLT5oZWln
aHQoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaCBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCmluZGV4IDFjNDJhNmYuLjYxMDE3NWMgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCisrKyBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcklubGluZS5oCkBAIC02Nyw4ICs2Nyw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGludCBvZmZzZXRMZWZ0KCkgY29uc3Q7CiAgICAgdmlydHVhbCBpbnQgb2Zmc2V0VG9w
KCkgY29uc3Q7CiAKLSAgICB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgaW50
IHR4LCBpbnQgdHksIGJvb2wgdG9wTGV2ZWwgPSB0cnVlKTsKLSAgICB2aXJ0dWFsIHZvaWQgYWJz
b2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wgdG9wTGV2ZWwgPSB0cnVlKTsKKyAg
ICB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgaW50IHR4LCBpbnQgdHksIGJv
b2wgdG9wTGV2ZWwgPSB0cnVlKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFk
cyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wgdG9wTGV2ZWwgPSB0cnVlKSBjb25zdDsKIAogICAg
IHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yQ29vcmRpbmF0ZXMoaW50IHgsIGlu
dCB5KTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5j
cHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAppbmRleCBiMmZiNTFj
Li4yNDQ1Mjk3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2Vy
LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcApAQCAtODgy
LDcgKzg4Miw3IEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6c2V0U2VsZWN0aW9uU3RhdGUoU2Vs
ZWN0aW9uU3RhdGUgc3RhdGUpCiAgICAgY29udGFpbmluZ0Jsb2NrKCktPnNldFNlbGVjdGlvblN0
YXRlKHN0YXRlKTsKIH0KIAotSW50UmVjdCBSZW5kZXJMaXN0TWFya2VyOjpzZWxlY3Rpb25SZWN0
KGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQpCitJbnRSZWN0IFJlbmRlckxpc3RNYXJrZXI6OnNl
bGVjdGlvblJlY3QoYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkgY29uc3QKIHsKICAgICBBU1NF
UlQoIW5lZWRzTGF5b3V0KCkpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0TWFya2VyLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgKaW5k
ZXggM2M1MjI0Yy4uOTNhYTU4MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGlzdE1hcmtlci5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaApA
QCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFNlbGVjdGlvblN0YXRlIHNl
bGVjdGlvblN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb25TdGF0ZTsgfQogICAgIHZp
cnR1YWwgdm9pZCBzZXRTZWxlY3Rpb25TdGF0ZShTZWxlY3Rpb25TdGF0ZSk7Ci0gICAgdmlydHVh
bCBJbnRSZWN0IHNlbGVjdGlvblJlY3QoYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUp
OworICAgIHZpcnR1YWwgSW50UmVjdCBzZWxlY3Rpb25SZWN0KGJvb2wgY2xpcFRvVmlzaWJsZUNv
bnRlbnQgPSB0cnVlKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuQmVTZWxlY3Rpb25MZWFm
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCB1cGRhdGVNYXJnaW5zKCk7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCA2MWY3YmQ4Li43MWJlNmY2IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTE2ODUsMTEgKzE2ODUsMTEgQEAgdm9pZCBSZW5k
ZXJPYmplY3Q6OnBhaW50Qm94U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgaW50IHR4
LCBpbnQgdHksIGludAogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJPYmplY3Q6OmFkZExpbmVCb3hS
ZWN0cyhWZWN0b3I8SW50UmVjdD4mLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0LCBib29sIHVzZVNlbGVjdGlvbkhlaWdodCkKK3ZvaWQgUmVuZGVyT2JqZWN0OjphZGRM
aW5lQm94UmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCwgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQpIGNvbnN0CiB7CiB9CiAKLXZv
aWQgUmVuZGVyT2JqZWN0OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGlu
dCB0eCwgaW50IHR5LCBib29sIHRvcExldmVsKQordm9pZCBSZW5kZXJPYmplY3Q6OmFic29sdXRl
UmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50IHR4LCBpbnQgdHksIGJvb2wgdG9wTGV2
ZWwpIGNvbnN0CiB7CiAgICAgLy8gRm9yIGJsb2NrcyBpbnNpZGUgaW5saW5lcywgd2UgZ28gYWhl
YWQgYW5kIGluY2x1ZGUgbWFyZ2lucyBzbyB0aGF0IHdlIHJ1biByaWdodCB1cCB0byB0aGUKICAg
ICAvLyBpbmxpbmUgYm94ZXMgYWJvdmUgYW5kIGJlbG93IHVzICh0aHVzIGdldHRpbmcgbWVyZ2Vk
IHdpdGggdGhlbSB0byBmb3JtIGEgc2luZ2xlIGlycmVndWxhcgpAQCAtMTcwNCw3ICsxNzA0LDcg
QEAgdm9pZCBSZW5kZXJPYmplY3Q6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0
cywgaW50IHR4LCBpbnQgdHksIGJvb2wgdG8KICAgICAgICAgcmVjdHMuYXBwZW5kKEludFJlY3Qo
dHgsIHR5LCB3aWR0aCgpLCBoZWlnaHQoKSArIGJvcmRlclRvcEV4dHJhKCkgKyBib3JkZXJCb3R0
b21FeHRyYSgpKSk7CiB9CiAKLUludFJlY3QgUmVuZGVyT2JqZWN0OjphYnNvbHV0ZUJvdW5kaW5n
Qm94UmVjdChib29sIHVzZVRyYW5zZm9ybXMpCitJbnRSZWN0IFJlbmRlck9iamVjdDo6YWJzb2x1
dGVCb3VuZGluZ0JveFJlY3QoYm9vbCB1c2VUcmFuc2Zvcm1zKSBjb25zdAogewogICAgIGlmICh1
c2VUcmFuc2Zvcm1zKSB7CiAgICAgICAgIFZlY3RvcjxGbG9hdFF1YWQ+IHF1YWRzOwpAQCAtMTcz
NCwxMSArMTczNCwxMSBAQCBJbnRSZWN0IFJlbmRlck9iamVjdDo6YWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3QoYm9vbCB1c2VUcmFuc2Zvcm1zKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQg
UmVuZGVyT2JqZWN0Ojpjb2xsZWN0QWJzb2x1dGVMaW5lQm94UXVhZHMoVmVjdG9yPEZsb2F0UXVh
ZD4mIHF1YWRzLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0LCBib29s
IHVzZVNlbGVjdGlvbkhlaWdodCkKK3ZvaWQgUmVuZGVyT2JqZWN0Ojpjb2xsZWN0QWJzb2x1dGVM
aW5lQm94UXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0LCBib29sIHVzZVNlbGVjdGlvbkhlaWdodCkgY29uc3QKIHsK
IH0KIAotdm9pZCBSZW5kZXJPYmplY3Q6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4m
IHF1YWRzLCBib29sIHRvcExldmVsKQordm9pZCBSZW5kZXJPYmplY3Q6OmFic29sdXRlUXVhZHMo
VmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sIHRvcExldmVsKSBjb25zdAogewogICAgIC8v
IEZvciBibG9ja3MgaW5zaWRlIGlubGluZXMsIHdlIGdvIGFoZWFkIGFuZCBpbmNsdWRlIG1hcmdp
bnMgc28gdGhhdCB3ZSBydW4gcmlnaHQgdXAgdG8gdGhlCiAgICAgLy8gaW5saW5lIGJveGVzIGFi
b3ZlIGFuZCBiZWxvdyB1cyAodGh1cyBnZXR0aW5nIG1lcmdlZCB3aXRoIHRoZW0gdG8gZm9ybSBh
IHNpbmdsZSBpcnJlZ3VsYXIKQEAgLTIwMTUsMTQgKzIwMTUsMTQgQEAgSW50UmVjdCBSZW5kZXJP
YmplY3Q6OmdldEFic29sdXRlUmVwYWludFJlY3RXaXRoT3V0bGluZShpbnQgb3cpCiAgICAgcmV0
dXJuIHI7CiB9CiAKLUludFJlY3QgUmVuZGVyT2JqZWN0OjphYnNvbHV0ZUNsaXBwZWRPdmVyZmxv
d1JlY3QoKQorSW50UmVjdCBSZW5kZXJPYmplY3Q6OmFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVj
dCgpIGNvbnN0CiB7CiAgICAgaWYgKHBhcmVudCgpKQogICAgICAgICByZXR1cm4gcGFyZW50KCkt
PmFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpOwogICAgIHJldHVybiBJbnRSZWN0KCk7CiB9
CiAKLXZvaWQgUmVuZGVyT2JqZWN0Ojpjb21wdXRlQWJzb2x1dGVSZXBhaW50UmVjdChJbnRSZWN0
JiByZWN0LCBib29sIGZpeGVkKQordm9pZCBSZW5kZXJPYmplY3Q6OmNvbXB1dGVBYnNvbHV0ZVJl
cGFpbnRSZWN0KEludFJlY3QmIHJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0CiB7CiAgICAgaWYgKFJl
bmRlck9iamVjdCogbyA9IHBhcmVudCgpKSB7CiAgICAgICAgIGlmIChvLT5pc0Jsb2NrRmxvdygp
KSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IGUyNjg5ZTMuLjZhZWEzMGIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC02OTYsMTUgKzY5NiwxNSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBpbnQgYm9yZGVyTGVmdCgpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCktPmJvcmRlckxl
ZnRXaWR0aCgpOyB9CiAgICAgdmlydHVhbCBpbnQgYm9yZGVyUmlnaHQoKSBjb25zdCB7IHJldHVy
biBzdHlsZSgpLT5ib3JkZXJSaWdodFdpZHRoKCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhZGRM
aW5lQm94UmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSAwLCB1
bnNpZ25lZCBlbmRPZmZzZXQgPSBVSU5UX01BWCwgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQgPSBm
YWxzZSk7CisgICAgdmlydHVhbCB2b2lkIGFkZExpbmVCb3hSZWN0cyhWZWN0b3I8SW50UmVjdD4m
LCB1bnNpZ25lZCBzdGFydE9mZnNldCA9IDAsIHVuc2lnbmVkIGVuZE9mZnNldCA9IFVJTlRfTUFY
LCBib29sIHVzZVNlbGVjdGlvbkhlaWdodCA9IGZhbHNlKSBjb25zdDsKIAotICAgIHZpcnR1YWwg
dm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGludCB0eCwgaW50IHR5LCBib29s
IHRvcExldmVsID0gdHJ1ZSk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9y
PEludFJlY3Q+JiwgaW50IHR4LCBpbnQgdHksIGJvb2wgdG9wTGV2ZWwgPSB0cnVlKSBjb25zdDsK
ICAgICAvLyBGSVhNRTogdXNlVHJhbnNmb3JtcyBzaG91bGQgZ28gYXdheSBldmVudHVhbGx5Ci0g
ICAgSW50UmVjdCBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChib29sIHVzZVRyYW5zZm9ybXMgPSBm
YWxzZSk7CisgICAgSW50UmVjdCBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChib29sIHVzZVRyYW5z
Zm9ybXMgPSBmYWxzZSkgY29uc3Q7CiAKICAgICAvLyBCdWlsZCBhbiBhcnJheSBvZiBxdWFkcyBp
biBhYnNvbHV0ZSBjb29yZHMgZm9yIGxpbmUgYm94ZXMKLSAgICB2aXJ0dWFsIHZvaWQgY29sbGVj
dEFic29sdXRlTGluZUJveFF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQgPSAwLCB1bnNpZ25lZCBlbmRPZmZzZXQgPSBVSU5UX01BWCwgYm9vbCB1c2VTZWxlY3Rp
b25IZWlnaHQgPSBmYWxzZSk7Ci0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9y
PEZsb2F0UXVhZD4mLCBib29sIHRvcExldmVsID0gdHJ1ZSk7CisgICAgdmlydHVhbCB2b2lkIGNv
bGxlY3RBYnNvbHV0ZUxpbmVCb3hRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0ID0gMCwgdW5zaWduZWQgZW5kT2Zmc2V0ID0gVUlOVF9NQVgsIGJvb2wgdXNlU2Vs
ZWN0aW9uSGVpZ2h0ID0gZmFsc2UpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1
YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCB0b3BMZXZlbCA9IHRydWUpIGNvbnN0OwogCiAg
ICAgLy8gdGhlIHJlY3QgdGhhdCB3aWxsIGJlIHBhaW50ZWQgaWYgdGhpcyBvYmplY3QgaXMgcGFz
c2VkIGFzIHRoZSBwYWludGluZ1Jvb3QKICAgICBJbnRSZWN0IHBhaW50aW5nUm9vdFJlY3QoSW50
UmVjdCYgdG9wTGV2ZWxSZWN0KTsKQEAgLTc1NSwxMyArNzU1LDEzIEBAIHB1YmxpYzoKIAogICAg
IC8vIFJldHVybnMgdGhlIHJlY3QgdGhhdCBzaG91bGQgYmUgcmVwYWludGVkIHdoZW5ldmVyIHRo
aXMgb2JqZWN0IGNoYW5nZXMuICBUaGUgcmVjdCBpcyBpbiB0aGUgdmlldydzCiAgICAgLy8gY29v
cmRpbmF0ZSBzcGFjZS4gIFRoaXMgbWV0aG9kIGRlYWxzIHdpdGggb3V0bGluZXMgYW5kIG92ZXJm
bG93LgotICAgIHZpcnR1YWwgSW50UmVjdCBhYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKTsK
KyAgICB2aXJ0dWFsIEludFJlY3QgYWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCkgY29uc3Q7
CiAKICAgICBJbnRSZWN0IGdldEFic29sdXRlUmVwYWludFJlY3RXaXRoT3V0bGluZShpbnQgb3cp
OwogCiAgICAgLy8gR2l2ZW4gYSByZWN0IGluIHRoZSBvYmplY3QncyBjb29yZGluYXRlIHNwYWNl
LCB0aGlzIG1ldGhvZCBjb252ZXJ0cyB0aGUgcmVjdGFuZ2xlIHRvIHRoZSB2aWV3J3MKICAgICAv
LyBjb29yZGluYXRlIHNwYWNlLgotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlQWJzb2x1dGVSZXBh
aW50UmVjdChJbnRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIHZvaWQg
Y29tcHV0ZUFic29sdXRlUmVwYWludFJlY3QoSW50UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkg
Y29uc3Q7CiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBsZW5ndGgoKSBjb25zdCB7IHJldHVy
biAxOyB9CiAKQEAgLTgwNiw3ICs4MDYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBBIHNpbmdsZSBy
ZWN0YW5nbGUgdGhhdCBlbmNvbXBhc3NlcyBhbGwgb2YgdGhlIHNlbGVjdGVkIG9iamVjdHMgd2l0
aGluIHRoaXMgb2JqZWN0LiAgVXNlZCB0byBkZXRlcm1pbmUgdGhlIHRpZ2h0ZXN0CiAgICAgLy8g
cG9zc2libGUgYm91bmRpbmcgYm94IGZvciB0aGUgc2VsZWN0aW9uLgotICAgIHZpcnR1YWwgSW50
UmVjdCBzZWxlY3Rpb25SZWN0KGJvb2wpIHsgcmV0dXJuIEludFJlY3QoKTsgfQorICAgIHZpcnR1
YWwgSW50UmVjdCBzZWxlY3Rpb25SZWN0KGJvb2wpIGNvbnN0IHsgcmV0dXJuIEludFJlY3QoKTsg
fQogCiAgICAgLy8gV2hldGhlciBvciBub3QgYW4gb2JqZWN0IGNhbiBiZSBwYXJ0IG9mIHRoZSBs
ZWFmIGVsZW1lbnRzIG9mIHRoZSBzZWxlY3Rpb24uCiAgICAgdmlydHVhbCBib29sIGNhbkJlU2Vs
ZWN0aW9uTGVhZigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJQYXRoLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhdGgu
Y3BwCmluZGV4IDA2N2U0ZjYuLjgwOGIxODggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclBhdGguY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhdGguY3BwCkBA
IC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBSZW5kZXJQYXRoOjpsYXlvdXQoKQogICAgIHNldE5lZWRz
TGF5b3V0KGZhbHNlKTsKIH0KIAotSW50UmVjdCBSZW5kZXJQYXRoOjphYnNvbHV0ZUNsaXBwZWRP
dmVyZmxvd1JlY3QoKQorSW50UmVjdCBSZW5kZXJQYXRoOjphYnNvbHV0ZUNsaXBwZWRPdmVyZmxv
d1JlY3QoKSBjb25zdAogewogICAgIEZsb2F0UmVjdCByZXBhaW50UmVjdCA9IGFic29sdXRlVHJh
bnNmb3JtKCkubWFwUmVjdChyZWxhdGl2ZUJCb3godHJ1ZSkpOwogCkBAIC0yMzQsMTIgKzIzNCwx
MiBAQCB2b2lkIFJlbmRlclBhdGg6OmFkZEZvY3VzUmluZ1JlY3RzKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBpbnQsIGludCkKICAgICBncmFwaGljc0NvbnRleHQtPmFkZEZvY3Vz
UmluZ1JlY3QoZW5jbG9zaW5nSW50UmVjdChyZWxhdGl2ZUJCb3godHJ1ZSkpKTsKIH0KIAotdm9p
ZCBSZW5kZXJQYXRoOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGludCwg
aW50LCBib29sKQordm9pZCBSZW5kZXJQYXRoOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0
PiYgcmVjdHMsIGludCwgaW50LCBib29sKSBjb25zdAogewogICAgIHJlY3RzLmFwcGVuZChhYnNv
bHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKSk7CiB9CiAKLXZvaWQgUmVuZGVyUGF0aDo6YWJzb2x1
dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wgdG9wTGV2ZWwpCit2b2lkIFJl
bmRlclBhdGg6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sIHRv
cExldmVsKSBjb25zdAogewogICAgIHF1YWRzLmFwcGVuZChhYnNvbHV0ZUNsaXBwZWRPdmVyZmxv
d1JlY3QoKSk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXRoLmgg
Yi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXRoLmgKaW5kZXggZDM0Y2ExYy4uOWRhMTJhNiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUGF0aC5oCisrKyBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclBhdGguaApAQCAtNjIsMTQgKzYyLDE0IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBsb2NhbFRyYW5zZm9ybSgpIGNvbnN0OwogICAgIAogICAg
IHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKLSAgICB2aXJ0dWFsIEludFJlY3QgYWJzb2x1dGVDbGlw
cGVkT3ZlcmZsb3dSZWN0KCk7CisgICAgdmlydHVhbCBJbnRSZWN0IGFic29sdXRlQ2xpcHBlZE92
ZXJmbG93UmVjdCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCk7CiAg
ICAgdmlydHVhbCBpbnQgbGluZUhlaWdodChib29sIGIsIGJvb2wgaXNSb290TGluZUJveCA9IGZh
bHNlKSBjb25zdDsKICAgICB2aXJ0dWFsIGludCBiYXNlbGluZVBvc2l0aW9uKGJvb2wgYiwgYm9v
bCBpc1Jvb3RMaW5lQm94ID0gZmFsc2UpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYWludChQ
YWludEluZm8mLCBpbnQgcGFyZW50WCwgaW50IHBhcmVudFkpOwogCi0gICAgdmlydHVhbCB2b2lk
IGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgaW50IHR4LCBpbnQgdHksIGJvb2wgdG9w
TGV2ZWwgPSB0cnVlKTsKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8Rmxv
YXRRdWFkPiYsIGJvb2wgdG9wTGV2ZWwgPSB0cnVlKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1
dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBpbnQgdHgsIGludCB0eSwgYm9vbCB0b3BMZXZlbCA9
IHRydWUpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9h
dFF1YWQ+JiwgYm9vbCB0b3BMZXZlbCA9IHRydWUpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBh
ZGRGb2N1c1JpbmdSZWN0cyhHcmFwaGljc0NvbnRleHQqLCBpbnQgdHgsIGludCB0eSk7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0
UmVzdWx0JiwgaW50IHgsIGludCB5LCBpbnQgdHgsIGludCB0eSwgSGl0VGVzdEFjdGlvbik7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKaW5kZXggMGZhZjJhYS4uYTU0OWFmNSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCisrKyBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcApAQCAtMjM4LDcgKzIzOCw3IEBAIFZpc2li
bGVQb3NpdGlvbiBSZW5kZXJSZXBsYWNlZDo6cG9zaXRpb25Gb3JDb29yZGluYXRlcyhpbnQgeCwg
aW50IHkpCiAgICAgcmV0dXJuIFJlbmRlckJveDo6cG9zaXRpb25Gb3JDb29yZGluYXRlcyh4LCB5
KTsKIH0KIAotSW50UmVjdCBSZW5kZXJSZXBsYWNlZDo6c2VsZWN0aW9uUmVjdChib29sIGNsaXBU
b1Zpc2libGVDb250ZW50KQorSW50UmVjdCBSZW5kZXJSZXBsYWNlZDo6c2VsZWN0aW9uUmVjdChi
b29sIGNsaXBUb1Zpc2libGVDb250ZW50KSBjb25zdAogewogICAgIEFTU0VSVCghbmVlZHNMYXlv
dXQoKSk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgg
Yi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCmluZGV4IGYxZWUzMmIuLmQwZGUz
NGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKKysrIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaApAQCAtNTksNyArNTksOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIGNhbkJlU2VsZWN0aW9uTGVhZigpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KICAgICB2aXJ0dWFsIFNlbGVjdGlvblN0YXRlIHNlbGVjdGlvblN0YXRlKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2VsZWN0aW9uU3RhdGU+KG1fc2VsZWN0aW9uU3RhdGUp
OyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGlvblN0YXRlKFNlbGVjdGlvblN0YXRlKTsK
LSAgICB2aXJ0dWFsIEludFJlY3Qgc2VsZWN0aW9uUmVjdChib29sIGNsaXBUb1Zpc2libGVDb250
ZW50ID0gdHJ1ZSk7CisKKyAgICB2aXJ0dWFsIEludFJlY3Qgc2VsZWN0aW9uUmVjdChib29sIGNs
aXBUb1Zpc2libGVDb250ZW50ID0gdHJ1ZSkgY29uc3Q7CiAKICAgICBib29sIGlzU2VsZWN0ZWQo
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFp
bmVyLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKaW5kZXgg
YWE0ZjQ5Ni4uYTkxOGU0NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZH
Q29udGFpbmVyLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIu
Y3BwCkBAIC0zNjMsNyArMzYzLDcgQEAgQWZmaW5lVHJhbnNmb3JtIFJlbmRlclNWR0NvbnRhaW5l
cjo6dmlld3BvcnRUcmFuc2Zvcm0oKSBjb25zdAogICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3Jt
KCk7CiB9CiAKLUludFJlY3QgUmVuZGVyU1ZHQ29udGFpbmVyOjphYnNvbHV0ZUNsaXBwZWRPdmVy
Zmxvd1JlY3QoKQorSW50UmVjdCBSZW5kZXJTVkdDb250YWluZXI6OmFic29sdXRlQ2xpcHBlZE92
ZXJmbG93UmVjdCgpIGNvbnN0CiB7CiAgICAgRmxvYXRSZWN0IHJlcGFpbnRSZWN0OwogCkBAIC0z
ODgsMTIgKzM4OCwxMiBAQCB2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6YWRkRm9jdXNSaW5nUmVj
dHMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGludAogICAgIGdyYXBoaWNzQ29u
dGV4dC0+YWRkRm9jdXNSaW5nUmVjdChtX2Fic29sdXRlQm91bmRzKTsKIH0KIAotdm9pZCBSZW5k
ZXJTVkdDb250YWluZXI6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50
LCBpbnQsIGJvb2wpCit2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6YWJzb2x1dGVSZWN0cyhWZWN0
b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQsIGludCwgYm9vbCkgY29uc3QKIHsKICAgICByZWN0cy5h
cHBlbmQoYWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCkpOwogfQogCi12b2lkIFJlbmRlclNW
R0NvbnRhaW5lcjo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wg
dG9wTGV2ZWwpCit2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8
RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wgdG9wTGV2ZWwpIGNvbnN0CiB7CiAgICAgcXVhZHMuYXBw
ZW5kKGFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU1ZHQ29udGFpbmVyLmgKaW5kZXggYTdkYWE4YS4uYjU1ZThmNCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgKQEAgLTc2LDkgKzc2LDkgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBsYXlvdXQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwg
aW50IHBhcmVudFgsIGludCBwYXJlbnRZKTsKIAotICAgIHZpcnR1YWwgSW50UmVjdCBhYnNvbHV0
ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKTsKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhW
ZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQgdHgsIGludCB0eSwgYm9vbCB0b3BMZXZlbCA9IHRy
dWUpOwotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+Jiwg
Ym9vbCB0b3BMZXZlbCA9IHRydWUpOworICAgIHZpcnR1YWwgSW50UmVjdCBhYnNvbHV0ZUNsaXBw
ZWRPdmVyZmxvd1JlY3QoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhW
ZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQgdHgsIGludCB0eSwgYm9vbCB0b3BMZXZlbCA9IHRy
dWUpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1
YWQ+JiwgYm9vbCB0b3BMZXZlbCA9IHRydWUpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBhZGRG
b2N1c1JpbmdSZWN0cyhHcmFwaGljc0NvbnRleHQqLCBpbnQgdHgsIGludCB0eSk7CiAKICAgICBG
bG9hdFJlY3QgcmVsYXRpdmVCQm94KGJvb2wgaW5jbHVkZVN0cm9rZSA9IHRydWUpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmggYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuaAppbmRleCA4NmRlNmQwLi5i
YTE2YTQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdHcmFkaWVudFN0
b3AuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuaApAQCAt
NDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIFJlbmRlck9iamVj
dCdzIGRlZmF1bHQgaW1wbCBhc2tzIHRoZSBwYXJlbnQgT2JqZWN0IGFuZCBSZW5kZXJTVkdSb290
CiAgICAgICAgIC8vIGFza3MgYWxsIGNoaWxkIFJlbmRlck9iamVjdHMgZm9yIG92ZXJmbG93IHJl
Y3RzLCB0aHVzIGluZmluaXRlIGxvb3AuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQwMAotICAgICAgICB2aXJ0dWFsIEludFJlY3QgYWJzb2x1
dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCkgeyByZXR1cm4gSW50UmVjdCgpOyB9CisgICAgICAgIHZp
cnR1YWwgSW50UmVjdCBhYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKSBjb25zdCB7IHJldHVy
biBJbnRSZWN0KCk7IH0KICAgICAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBzdHlsZURpZENoYW5nZShSZW5kZXJTdHlsZTo6RGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9s
ZFN0eWxlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0hpZGRlbkNv
bnRhaW5lci5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIu
Y3BwCmluZGV4IDVlZjc3MTkuLjk5MWUzYzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmNwcApAQCAtNzYsMTcgKzc2LDE3IEBAIHZvaWQgUmVuZGVy
U1ZHSGlkZGVuQ29udGFpbmVyOjpwYWludChQYWludEluZm8mLCBpbnQsIGludCkKICAgICAvLyBU
aGlzIHN1YnRyZWUgZG9lcyBub3QgcGFpbnQuCiB9CiAKLUludFJlY3QgUmVuZGVyU1ZHSGlkZGVu
Q29udGFpbmVyOjphYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKQorSW50UmVjdCBSZW5kZXJT
VkdIaWRkZW5Db250YWluZXI6OmFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIEludFJlY3QoKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdIaWRkZW5Db250YWlu
ZXI6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50LCBpbnQsIGJvb2wp
Cit2b2lkIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcjo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50
UmVjdD4mIHJlY3RzLCBpbnQsIGludCwgYm9vbCkgY29uc3QKIHsKICAgICAvLyBUaGlzIHN1YnRy
ZWUgZG9lcyBub3QgdGFrZSB1cCBzcGFjZSBvciBwYWludAogfQogCi12b2lkIFJlbmRlclNWR0hp
ZGRlbkNvbnRhaW5lcjo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJv
b2wgdG9wTGV2ZWwpCit2b2lkIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcjo6YWJzb2x1dGVRdWFk
cyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wgdG9wTGV2ZWwpIGNvbnN0CiB7CiAgICAg
Ly8gVGhpcyBzdWJ0cmVlIGRvZXMgbm90IHRha2UgdXAgc3BhY2Ugb3IgcGFpbnQKIH0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgKaW5kZXggYWQ2OTBhOC4u
MjMwZjc4NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSGlkZGVuQ29u
dGFpbmVyLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVy
LmgKQEAgLTUxLDkgKzUxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFs
IHZvaWQgbGF5b3V0KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBp
bnQgcGFyZW50WCwgaW50IHBhcmVudFkpOwogICAgICAgICAKLSAgICAgICAgdmlydHVhbCBJbnRS
ZWN0IGFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQg
YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQgdHgsIGludCB0eSwgYm9v
bCB0b3BMZXZlbCA9IHRydWUpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhW
ZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wgdG9wTGV2ZWwgPSB0cnVlKTsKKyAgICAgICAgdmlydHVh
bCBJbnRSZWN0IGFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpIGNvbnN0OworICAgICAgICB2
aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQgdHgs
IGludCB0eSwgYm9vbCB0b3BMZXZlbCA9IHRydWUpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIHZv
aWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wgdG9wTGV2ZWwgPSB0cnVl
KSBjb25zdDsKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGFic29s
dXRlVHJhbnNmb3JtKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGxv
Y2FsVHJhbnNmb3JtKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTVkdJbWFnZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAKaW5k
ZXggNTJhZDlmMS4uNTk3NWVhOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U1ZHSW1hZ2UuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcApA
QCAtMjUzLDcgKzI1Myw3IEBAIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OmNhbGN1bGF0ZUFic29sdXRl
Qm91bmRzKCkKICAgICBtX2Fic29sdXRlQm91bmRzID0gZW5jbG9zaW5nSW50UmVjdChhYnNvbHV0
ZVJlY3QpOwogfQogCi1JbnRSZWN0IFJlbmRlclNWR0ltYWdlOjphYnNvbHV0ZUNsaXBwZWRPdmVy
Zmxvd1JlY3QoKQorSW50UmVjdCBSZW5kZXJTVkdJbWFnZTo6YWJzb2x1dGVDbGlwcGVkT3ZlcmZs
b3dSZWN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9hYnNvbHV0ZUJvdW5kczsKIH0KQEAgLTI2
NSwxMiArMjY1LDEyIEBAIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OmFkZEZvY3VzUmluZ1JlY3RzKEdy
YXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsCiAgICAgZ3JhcGhpY3NDb250
ZXh0LT5hZGRGb2N1c1JpbmdSZWN0KGNvbnRlbnRSZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJTVkdJ
bWFnZTo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQsIGludCwgYm9v
bCkKK3ZvaWQgUmVuZGVyU1ZHSW1hZ2U6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiBy
ZWN0cywgaW50LCBpbnQsIGJvb2wpIGNvbnN0CiB7CiAgICAgcmVjdHMuYXBwZW5kKGFic29sdXRl
Q2xpcHBlZE92ZXJmbG93UmVjdCgpKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdJbWFnZTo6YWJzb2x1
dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wgdG9wTGV2ZWwpCit2b2lkIFJl
bmRlclNWR0ltYWdlOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9v
bCB0b3BMZXZlbCkgY29uc3QKIHsKICAgICBxdWFkcy5hcHBlbmQoRmxvYXRSZWN0KGFic29sdXRl
Q2xpcHBlZE92ZXJmbG93UmVjdCgpKSk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTVkdJbWFnZS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuaApp
bmRleCA5YjdjZDIxLi5hZTNmZWIwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTVkdJbWFnZS5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmgKQEAg
LTQzLDkgKzQzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIEFmZmlu
ZVRyYW5zZm9ybSBsb2NhbFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zv
cm07IH0KICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlbGF0aXZlQkJveChi
b29sIGluY2x1ZGVTdHJva2UgPSB0cnVlKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBJbnRSZWN0
IGFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgYWJz
b2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBpbnQgdHgsIGludCB0eSwgYm9vbCB0b3BMZXZl
bCA9IHRydWUpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8Rmxv
YXRRdWFkPiYsIGJvb2wgdG9wTGV2ZWwgPSB0cnVlKTsKKyAgICAgICAgdmlydHVhbCBJbnRSZWN0
IGFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIHZv
aWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBpbnQgdHgsIGludCB0eSwgYm9vbCB0
b3BMZXZlbCA9IHRydWUpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFk
cyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wgdG9wTGV2ZWwgPSB0cnVlKSBjb25zdDsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKEdyYXBoaWNzQ29udGV4dCosIGludCB0
eCwgaW50IHR5KTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJ
bWFnZVB0cik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbmxpbmVU
ZXh0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0lubGluZVRleHQuY3BwCmluZGV4
IDg3YTg5YjQuLjgyZjc4ZDAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNW
R0lubGluZVRleHQuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0lubGluZVRl
eHQuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGlj
IGlubGluZSBib29sIGlzQ2hpbGRPZkhpZGRlbkNvbnRhaW5lcihSZW5kZXJPYmplY3QqIHN0YXJ0
KQorc3RhdGljIGlubGluZSBib29sIGlzQ2hpbGRPZkhpZGRlbkNvbnRhaW5lcihjb25zdCBSZW5k
ZXJPYmplY3QqIHN0YXJ0KQogewogICAgIHdoaWxlIChzdGFydCkgewogICAgICAgICBpZiAoc3Rh
cnQtPmlzU1ZHSGlkZGVuQ29udGFpbmVyKCkpCkBAIC01MywxNyArNTMsMTcgQEAgUmVuZGVyU1ZH
SW5saW5lVGV4dDo6UmVuZGVyU1ZHSW5saW5lVGV4dChOb2RlKiBuLCBQYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IHN0cikKIHsKIH0KIAotdm9pZCBSZW5kZXJTVkdJbmxpbmVUZXh0OjphYnNvbHV0ZVJl
Y3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGludCwgaW50LCBib29sKQordm9pZCBSZW5kZXJT
VkdJbmxpbmVUZXh0OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGludCwg
aW50LCBib29sKSBjb25zdAogewogICAgIHJlY3RzLmFwcGVuZChjb21wdXRlQWJzb2x1dGVSZWN0
Rm9yUmFuZ2UoMCwgdGV4dExlbmd0aCgpKSk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHSW5saW5lVGV4
dDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wgdG9wTGV2ZWwp
Cit2b2lkIFJlbmRlclNWR0lubGluZVRleHQ6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVh
ZD4mIHF1YWRzLCBib29sIHRvcExldmVsKSBjb25zdAogewogICAgIHF1YWRzLmFwcGVuZChGbG9h
dFJlY3QoY29tcHV0ZUFic29sdXRlUmVjdEZvclJhbmdlKDAsIHRleHRMZW5ndGgoKSkpKTsKIH0K
IAotSW50UmVjdCBSZW5kZXJTVkdJbmxpbmVUZXh0OjpzZWxlY3Rpb25SZWN0KGJvb2wpCitJbnRS
ZWN0IFJlbmRlclNWR0lubGluZVRleHQ6OnNlbGVjdGlvblJlY3QoYm9vbCkgY29uc3QKIHsKICAg
ICBBU1NFUlQoIW5lZWRzTGF5b3V0KCkpOwogCkBAIC05Niw3ICs5Niw3IEBAIEludFJlY3QgUmVu
ZGVyU1ZHSW5saW5lVGV4dDo6c2VsZWN0aW9uUmVjdChib29sKQogICAgIHJldHVybiBjb21wdXRl
QWJzb2x1dGVSZWN0Rm9yUmFuZ2Uoc3RhcnRQb3MsIGVuZFBvcyk7CiB9CiAKLUludFJlY3QgUmVu
ZGVyU1ZHSW5saW5lVGV4dDo6Y29tcHV0ZUFic29sdXRlUmVjdEZvclJhbmdlKGludCBzdGFydFBv
cywgaW50IGVuZFBvcykKK0ludFJlY3QgUmVuZGVyU1ZHSW5saW5lVGV4dDo6Y29tcHV0ZUFic29s
dXRlUmVjdEZvclJhbmdlKGludCBzdGFydFBvcywgaW50IGVuZFBvcykgY29uc3QKIHsKICAgICBJ
bnRSZWN0IHJlY3Q7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0lu
bGluZVRleHQuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0lubGluZVRleHQuaAppbmRl
eCBkYzdlODUxLi5mNjZhNGM1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
VkdJbmxpbmVUZXh0LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW5saW5lVGV4
dC5oCkBAIC0zNSwxMSArMzUsMTEgQEAgcHVibGljOgogICAgIFJlbmRlclNWR0lubGluZVRleHQo
Tm9kZSosIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4pOwogICAgIHZpcnR1YWwgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTVkdJbmxpbmVUZXh0IjsgfQogCi0g
ICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50
IHR4LCBpbnQgdHksIGJvb2wgdG9wTGV2ZWwgPSB0cnVlKTsKLSAgICB2aXJ0dWFsIHZvaWQgYWJz
b2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wgdG9wTGV2ZWwgPSB0cnVlKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQg
dHgsIGludCB0eSwgYm9vbCB0b3BMZXZlbCA9IHRydWUpIGNvbnN0OworICAgIHZpcnR1YWwgdm9p
ZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCB0b3BMZXZlbCA9IHRydWUp
IGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgSW50UmVjdCBzZWxlY3Rpb25SZWN0KGJvb2wgY2xpcFRvVmlzaWJs
ZUNvbnRlbnQgPSB0cnVlKTsKKyAgICB2aXJ0dWFsIEludFJlY3Qgc2VsZWN0aW9uUmVjdChib29s
IGNsaXBUb1Zpc2libGVDb250ZW50ID0gdHJ1ZSkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlz
U1ZHVGV4dCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIElubGluZVRleHRC
b3gqIGNyZWF0ZUlubGluZVRleHRCb3goKTsKIApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKTsKIAogcHJpdmF0ZToKLSAgICBJbnRSZWN0IGNvbXB1
dGVBYnNvbHV0ZVJlY3RGb3JSYW5nZShpbnQgc3RhcnRQb3MsIGludCBlbmRQb3MpOworICAgIElu
dFJlY3QgY29tcHV0ZUFic29sdXRlUmVjdEZvclJhbmdlKGludCBzdGFydFBvcywgaW50IGVuZFBv
cykgY29uc3Q7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
VkdSb290LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jvb3QuY3BwCmluZGV4IDgz
M2VjMzEuLjdmMWQ5MjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jv
b3QuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jvb3QuY3BwCkBAIC0yMzEs
NyArMjMxLDcgQEAgdm9pZCBSZW5kZXJTVkdSb290OjpjYWxjVmlld3BvcnQoKQogICAgIH0KIH0K
IAotSW50UmVjdCBSZW5kZXJTVkdSb290OjphYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKQor
SW50UmVjdCBSZW5kZXJTVkdSb290OjphYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKSBjb25z
dAogewogICAgIEludFJlY3QgcmVwYWludFJlY3Q7CiAKQEAgLTI1MywxMyArMjUzLDEzIEBAIHZv
aWQgUmVuZGVyU1ZHUm9vdDo6YWRkRm9jdXNSaW5nUmVjdHMoR3JhcGhpY3NDb250ZXh0KiBncmFw
aGljc0NvbnRleHQsIGludCwgaW50CiAgICAgZ3JhcGhpY3NDb250ZXh0LT5hZGRGb2N1c1JpbmdS
ZWN0KG1fYWJzb2x1dGVCb3VuZHMpOwogfQogCi12b2lkIFJlbmRlclNWR1Jvb3Q6OmFic29sdXRl
UmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50LCBpbnQpCit2b2lkIFJlbmRlclNWR1Jv
b3Q6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50LCBpbnQpIGNvbnN0
CiB7CiAgICAgZm9yIChSZW5kZXJPYmplY3QqIGN1cnJlbnQgPSBmaXJzdENoaWxkKCk7IGN1cnJl
bnQgIT0gMDsgY3VycmVudCA9IGN1cnJlbnQtPm5leHRTaWJsaW5nKCkpCiAgICAgICAgIGN1cnJl
bnQtPmFic29sdXRlUmVjdHMocmVjdHMsIDAsIDApOwogfQogCi12b2lkIFJlbmRlclNWR1Jvb3Q6
OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sIHRvcExldmVsKQor
dm9pZCBSZW5kZXJTVkdSb290OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFk
cywgYm9vbCB0b3BMZXZlbCkgY29uc3QKIHsKICAgICBmb3IgKFJlbmRlck9iamVjdCogY3VycmVu
dCA9IGZpcnN0Q2hpbGQoKTsgY3VycmVudCAhPSAwOyBjdXJyZW50ID0gY3VycmVudC0+bmV4dFNp
YmxpbmcoKSkKICAgICAgICAgY3VycmVudC0+YWJzb2x1dGVRdWFkcyhxdWFkcyk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSb290LmggYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTVkdSb290LmgKaW5kZXggOWE3OTU0Zi4uMWJjZjExZCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUm9vdC5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNWR1Jvb3QuaApAQCAtNDcsOSArNDcsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGxheW91dCgpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBpbnQgcGFyZW50
WCwgaW50IHBhcmVudFkpOwogICAgIAotICAgIHZpcnR1YWwgSW50UmVjdCBhYnNvbHV0ZUNsaXBw
ZWRPdmVyZmxvd1JlY3QoKTsKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8
SW50UmVjdD4mIHJlY3RzLCBpbnQgdHgsIGludCB0eSk7Ci0gICAgdmlydHVhbCB2b2lkIGFic29s
dXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sIHRvcExldmVsID0gdHJ1ZSk7CisgICAg
dmlydHVhbCBJbnRSZWN0IGFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpIGNvbnN0OworICAg
IHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGludCB0
eCwgaW50IHR5KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8
RmxvYXRRdWFkPiYsIGJvb2wgdG9wTGV2ZWwgPSB0cnVlKSBjb25zdDsKICAgICB2aXJ0dWFsIHZv
aWQgYWRkRm9jdXNSaW5nUmVjdHMoR3JhcGhpY3NDb250ZXh0KiwgaW50IHR4LCBpbnQgdHkpOwog
CiAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gYWJzb2x1dGVUcmFuc2Zvcm0oKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1RTcGFuLmNwcCBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNWR1RTcGFuLmNwcAppbmRleCBlYjFiMDdiLi4zMWIzMmY3IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdUU3Bhbi5jcHAKKysrIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVFNwYW4uY3BwCkBAIC0zNyw3ICszNyw3IEBAIFJlbmRl
clNWR1RTcGFuOjpSZW5kZXJTVkdUU3BhbihOb2RlKiBuKQogewogfQogCi12b2lkIFJlbmRlclNW
R1RTcGFuOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGludCwgaW50LCBi
b29sKQordm9pZCBSZW5kZXJTVkdUU3Bhbjo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4m
IHJlY3RzLCBpbnQsIGludCwgYm9vbCkgY29uc3QKIHsKICAgICBJbmxpbmVSdW5Cb3gqIGZpcnN0
Qm94ID0gZmlyc3RMaW5lQm94KCk7CiAKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBSZW5kZXJTVkdU
U3Bhbjo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQsIGludCwgYm9v
bCkKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyU1ZHVFNwYW46OmFic29sdXRlUXVhZHMoVmVjdG9y
PEZsb2F0UXVhZD4mIHF1YWRzLCBib29sIHRvcExldmVsKQordm9pZCBSZW5kZXJTVkdUU3Bhbjo6
YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wgdG9wTGV2ZWwpIGNv
bnN0CiB7CiAgICAgSW5saW5lUnVuQm94KiBmaXJzdEJveCA9IGZpcnN0TGluZUJveCgpOwogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdUU3Bhbi5oIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU1ZHVFNwYW4uaAppbmRleCBkMzRjZDJmLi4yMjg1ZWMxIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdUU3Bhbi5oCisrKyBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNWR1RTcGFuLmgKQEAgLTMyLDggKzMyLDggQEAgY2xhc3MgUmVuZGVyU1ZH
VFNwYW4gOiBwdWJsaWMgUmVuZGVyU1ZHSW5saW5lIHsKIHB1YmxpYzoKICAgICBSZW5kZXJTVkdU
U3BhbihOb2RlKik7CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qg
eyByZXR1cm4gIlJlbmRlclNWR1RTcGFuIjsgfQotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJl
Y3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGludCB0eCwgaW50IHR5LCBib29sIHRvcExldmVs
ID0gdHJ1ZSk7Ci0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVh
ZD4mLCBib29sIHRvcExldmVsID0gdHJ1ZSk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVj
dHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50IHR4LCBpbnQgdHksIGJvb2wgdG9wTGV2ZWwg
PSB0cnVlKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8Rmxv
YXRRdWFkPiYsIGJvb2wgdG9wTGV2ZWwgPSB0cnVlKSBjb25zdDsKIH07CiB9CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1RleHQuY3BwIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU1ZHVGV4dC5jcHAKaW5kZXggMGQyM2JjYi4uN2JmYmEyZiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU1ZHVGV4dC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgUmVuZGVyU1ZHVGV4dDo6UmVu
ZGVyU1ZHVGV4dChTVkdUZXh0RWxlbWVudCogbm9kZSkKIHsKIH0KIAotSW50UmVjdCBSZW5kZXJT
VkdUZXh0OjphYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKQorSW50UmVjdCBSZW5kZXJTVkdU
ZXh0OjphYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKSBjb25zdAogewogICAgIEZsb2F0UmVj
dCByZXBhaW50UmVjdCA9IGFic29sdXRlVHJhbnNmb3JtKCkubWFwUmVjdChyZWxhdGl2ZUJCb3go
dHJ1ZSkpOwogCkBAIC0xNDUsNyArMTQ1LDcgQEAgYm9vbCBSZW5kZXJTVkdUZXh0Ojpub2RlQXRQ
b2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmUKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHVGV4dDo6YWJzb2x1dGVSZWN0cyhW
ZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQsIGludCwgYm9vbCkKK3ZvaWQgUmVuZGVyU1ZHVGV4
dDo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQsIGludCwgYm9vbCkg
Y29uc3QKIHsKICAgICBSZW5kZXJTVkdSb290KiByb290ID0gZmluZFNWR1Jvb3RPYmplY3QocGFy
ZW50KCkpOwogICAgIGlmICghcm9vdCkKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIFJlbmRlclNW
R1RleHQ6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50LCBpbnQsIGJv
b2wpCiAgICAgfQogfQogCi12b2lkIFJlbmRlclNWR1RleHQ6OmFic29sdXRlUXVhZHMoVmVjdG9y
PEZsb2F0UXVhZD4mIHF1YWRzLCBib29sIHRvcExldmVsKQordm9pZCBSZW5kZXJTVkdUZXh0Ojph
YnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCB0b3BMZXZlbCkgY29u
c3QKIHsKICAgICBSZW5kZXJTVkdSb290KiByb290ID0gZmluZFNWR1Jvb3RPYmplY3QocGFyZW50
KCkpOwogICAgIGlmICghcm9vdCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNWR1RleHQuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1RleHQuaAppbmRleCA3MzA2
NGZlLi45Nzg4ZWIyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdUZXh0
LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dC5oCkBAIC01MCwxMCArNTAs
MTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCk7CiAgICAgdmly
dHVhbCB2b2lkIGxheW91dCgpOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3Rz
KFZlY3RvcjxJbnRSZWN0PiYsIGludCB0eCwgaW50IHR5LCBib29sIHRvcExldmVsID0gdHJ1ZSk7
Ci0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29s
IHRvcExldmVsID0gdHJ1ZSk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9y
PEludFJlY3Q+JiwgaW50IHR4LCBpbnQgdHksIGJvb2wgdG9wTGV2ZWwgPSB0cnVlKSBjb25zdDsK
KyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wg
dG9wTGV2ZWwgPSB0cnVlKSBjb25zdDsKIAotICAgIHZpcnR1YWwgSW50UmVjdCBhYnNvbHV0ZUNs
aXBwZWRPdmVyZmxvd1JlY3QoKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgYWJzb2x1dGVDbGlwcGVk
T3ZlcmZsb3dSZWN0KCkgY29uc3Q7CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgcmVsYXRpdmVCQm94
KGJvb2wgaW5jbHVkZVN0cm9rZSA9IHRydWUpIGNvbnN0OwogICAgIAogICAgIHZpcnR1YWwgSW5s
aW5lQm94KiBjcmVhdGVJbmxpbmVCb3goYm9vbCBtYWtlUGxhY2VIb2xkZXJCb3gsIGJvb2wgaXNS
b290TGluZUJveCwgYm9vbCBpc09ubHlSdW4gPSBmYWxzZSk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTVkdUZXh0UGF0aC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTVkdUZXh0UGF0aC5jcHAKaW5kZXggZDVkOGZkZS4uMTdjOWY1NyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dFBhdGguY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNWR1RleHRQYXRoLmNwcApAQCAtNzcsNyArNzcsNyBAQCBib29sIFJlbmRlclNW
R1RleHRQYXRoOjpzdHJldGNoTWV0aG9kKCkgY29uc3QKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
U1ZHVGV4dFBhdGhFbGVtZW50Kj4oZWxlbWVudCgpKS0+bWV0aG9kKCkgPT0gU1ZHX1RFWFRQQVRI
X01FVEhPRFRZUEVfU1RSRVRDSDsKIH0KIAotdm9pZCBSZW5kZXJTVkdUZXh0UGF0aDo6YWJzb2x1
dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQsIGludCkKK3ZvaWQgUmVuZGVyU1ZH
VGV4dFBhdGg6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50LCBpbnQp
IGNvbnN0CiB7CiAgICAgSW5saW5lUnVuQm94KiBmaXJzdEJveCA9IGZpcnN0TGluZUJveCgpOwog
CkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgUmVuZGVyU1ZHVGV4dFBhdGg6OmFic29sdXRlUmVjdHMo
VmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50LCBpbnQpCiAgICAgfQogfQogCi12b2lkIFJlbmRl
clNWR1RleHRQYXRoOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9v
bCB0b3BMZXZlbCkKK3ZvaWQgUmVuZGVyU1ZHVGV4dFBhdGg6OmFic29sdXRlUXVhZHMoVmVjdG9y
PEZsb2F0UXVhZD4mIHF1YWRzLCBib29sIHRvcExldmVsKSBjb25zdAogewogICAgIElubGluZVJ1
bkJveCogZmlyc3RCb3ggPSBmaXJzdExpbmVCb3goKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dFBhdGguaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNW
R1RleHRQYXRoLmgKaW5kZXggNGZkNGNjMy4uYWQ3Nzk5ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dFBhdGguaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTVkdUZXh0UGF0aC5oCkBAIC0zOCw4ICszOCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgYm9vbCBzdHJldGNoTWV0aG9kKCkgY29uc3Q7CiAKICAgICAgICAgdmlydHVhbCBjb25z
dCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclNWR1RleHRQYXRoIjsg
fQotICAgICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJl
Y3RzLCBpbnQgdHgsIGludCB0eSk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRz
KFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCB0b3BMZXZlbCA9IHRydWUpOworICAgICAgICB2aXJ0
dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQgdHgsIGlu
dCB0eSkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxG
bG9hdFF1YWQ+JiwgYm9vbCB0b3BMZXZlbCA9IHRydWUpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgZmxvYXQgbV9zdGFydE9mZnNldDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNl
bGwuY3BwCmluZGV4IDAyZTc3MjkuLjM1Y2U5YTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVDZWxsLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgUmVuZGVyVGFibGVDZWxsOjpsYXlv
dXQoKQogICAgIG1fd2lkdGhDaGFuZ2VkID0gZmFsc2U7CiB9CiAKLUludFJlY3QgUmVuZGVyVGFi
bGVDZWxsOjphYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKQorSW50UmVjdCBSZW5kZXJUYWJs
ZUNlbGw6OmFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpIGNvbnN0CiB7CiAgICAgLy8gSWYg
dGhlIHRhYmxlIGdyaWQgaXMgZGlydHksIHdlIGNhbm5vdCBnZXQgcmVsaWFibGUgaW5mb3JtYXRp
b24gYWJvdXQgYWRqb2luaW5nIGNlbGxzLAogICAgIC8vIHNvIHdlIGlnbm9yZSBvdXRzaWRlIGJv
cmRlcnMuIFRoaXMgc2hvdWxkIG5vdCBiZSBhIHByb2JsZW0gYmVjYXVzZSBpdCBtZWFucyB0aGF0
CkBAIC0xODcsNyArMTg3LDcgQEAgSW50UmVjdCBSZW5kZXJUYWJsZUNlbGw6OmFic29sdXRlQ2xp
cHBlZE92ZXJmbG93UmVjdCgpCiAgICAgcmV0dXJuIHI7CiB9CiAKLXZvaWQgUmVuZGVyVGFibGVD
ZWxsOjpjb21wdXRlQWJzb2x1dGVSZXBhaW50UmVjdChJbnRSZWN0JiByLCBib29sIGZpeGVkKQor
dm9pZCBSZW5kZXJUYWJsZUNlbGw6OmNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0KEludFJlY3Qm
IHIsIGJvb2wgZml4ZWQpIGNvbnN0CiB7CiAgICAgci5zZXRZKHIueSgpICsgbV90b3BFeHRyYSk7
CiAgICAgUmVuZGVyVmlldyogdiA9IHZpZXcoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlQ2VsbC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxs
LmgKaW5kZXggMjBiN2RhNy4uYTU1ZDI1OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVDZWxsLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxs
LmgKQEAgLTk5LDggKzk5LDggQEAgcHVibGljOgogICAgIC8vIExpZSBhYm91dCBwb3NpdGlvbiB0
byBvdXRzaWRlIG9ic2VydmVycy4KICAgICB2aXJ0dWFsIGludCB5UG9zKCkgY29uc3QgeyByZXR1
cm4gbV95ICsgbV90b3BFeHRyYTsgfQogCi0gICAgdmlydHVhbCBJbnRSZWN0IGFic29sdXRlQ2xp
cHBlZE92ZXJmbG93UmVjdCgpOwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlQWJzb2x1dGVSZXBh
aW50UmVjdChJbnRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIEludFJl
Y3QgYWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lk
IGNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0KEludFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2Up
IGNvbnN0OwogICAgIHZpcnR1YWwgRmxvYXRQb2ludCBsb2NhbFRvQWJzb2x1dGUoRmxvYXRQb2lu
dCBsb2NhbFBvaW50ID0gRmxvYXRQb2ludCgpLCBib29sIGZpeGVkID0gZmFsc2UsIGJvb2wgdXNl
VHJhbnNmb3JtcyA9IGZhbHNlKSBjb25zdDsKICAgICB2aXJ0dWFsIEZsb2F0UG9pbnQgYWJzb2x1
dGVUb0xvY2FsKEZsb2F0UG9pbnQgY29udGFpbmVyUG9pbnQsIGJvb2wgZml4ZWQgPSBmYWxzZSwg
Ym9vbCB1c2VUcmFuc2Zvcm1zID0gZmFsc2UpIGNvbnN0OwogICAgIHZpcnR1YWwgRmxvYXRRdWFk
IGxvY2FsVG9BYnNvbHV0ZVF1YWQoY29uc3QgRmxvYXRRdWFkJiwgYm9vbCBmaXhlZCA9IGZhbHNl
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNw
cCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcAppbmRleCAwZDcxNGRhLi4x
ZDk3OGNlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5jcHAK
KysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwCkBAIC02OSw3ICs2OSw3
IEBAIGJvb2wgUmVuZGVyVGFibGVDb2w6OmNhbkhhdmVDaGlsZHJlbigpIGNvbnN0CiAgICAgcmV0
dXJuIHN0eWxlKCktPmRpc3BsYXkoKSA9PSBUQUJMRV9DT0xVTU5fR1JPVVA7CiB9CiAKLUludFJl
Y3QgUmVuZGVyVGFibGVDb2w6OmFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpCitJbnRSZWN0
IFJlbmRlclRhYmxlQ29sOjphYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKSBjb25zdAogewog
ICAgIC8vIEZvciBub3csIGp1c3QgcmVwYWludCB0aGUgd2hvbGUgdGFibGUuCiAgICAgLy8gRklY
TUU6IEZpbmQgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMsIGUuZy4sIG5lZWQgdG8gcmVwYWludCBh
bGwgdGhlIGNlbGxzIHRoYXQgd2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ29sLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCmluZGV4IDlk
NDZlMmIuLmZjMGJhMTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q29sLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaApAQCAtNDYsNyAr
NDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0
OwogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgeyByZXR1cm4gZmFsc2U7IH0KIAot
ICAgIHZpcnR1YWwgSW50UmVjdCBhYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKTsKKyAgICB2
aXJ0dWFsIEludFJlY3QgYWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCkgY29uc3Q7CiAgICAg
dmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIpOwogCiAgICAgaW50IHNw
YW4oKSBjb25zdCB7IHJldHVybiBtX3NwYW47IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlUm93LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93
LmNwcAppbmRleCA3ZmU4OGViLi44MThkOTEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZVJvdy5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVS
b3cuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBSZW5kZXJUYWJsZVJvdzo6bGF5b3V0KCkK
ICAgICBzZXROZWVkc0xheW91dChmYWxzZSk7CiB9CiAKLUludFJlY3QgUmVuZGVyVGFibGVSb3c6
OmFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpCitJbnRSZWN0IFJlbmRlclRhYmxlUm93Ojph
YnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKSBjb25zdAogewogICAgIC8vIEZvciBub3csIGp1
c3QgcmVwYWludCB0aGUgd2hvbGUgdGFibGUuCiAgICAgLy8gRklYTUU6IEZpbmQgYSBiZXR0ZXIg
d2F5IHRvIGRvIHRoaXMsIGUuZy4sIG5lZWQgdG8gcmVwYWludCBhbGwgdGhlIGNlbGxzIHRoYXQg
d2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmggYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oCmluZGV4IDk5NDgyYmUuLjQ5NDU1YmYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmgKKysrIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBpbnQgbGluZUhlaWdodChib29sIGZpcnN0TGluZSwgYm9vbCBpc1Jvb3RMaW5l
Qm94ID0gZmFsc2UpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRp
b24oSW5saW5lQm94KikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpOwotICAgIHZpcnR1
YWwgSW50UmVjdCBhYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKTsKKyAgICB2aXJ0dWFsIElu
dFJlY3QgYWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCkgY29uc3Q7CiAgICAgdmlydHVhbCBi
b29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGlu
dCB4LCBpbnQgeSwgaW50IHR4LCBpbnQgdHksIEhpdFRlc3RBY3Rpb24pOwogCiAgICAgLy8gVGhl
IG9ubHkgdGltZSByb3dzIGdldCBhIGxheWVyIGlzIHdoZW4gdGhleSBoYXZlIHRyYW5zcGFyZW5j
eS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggOGQ4Nzk0Yi4uYjRhNzQ0NyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysrIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHAKQEAgLTE5NiwxMyArMTk2LDEzIEBAIFBhc3NSZWZQdHI8U3Ry
aW5nSW1wbD4gUmVuZGVyVGV4dDo6b3JpZ2luYWxUZXh0KCkgY29uc3QKICAgICByZXR1cm4gZSA/
IHN0YXRpY19jYXN0PFRleHQqPihlKS0+c3RyaW5nKCkgOiAwOwogfQogCi12b2lkIFJlbmRlclRl
eHQ6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50IHR4LCBpbnQgdHks
IGJvb2wpCit2b2lkIFJlbmRlclRleHQ6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiBy
ZWN0cywgaW50IHR4LCBpbnQgdHksIGJvb2wpIGNvbnN0CiB7CiAgICAgZm9yIChJbmxpbmVUZXh0
Qm94KiBib3ggPSBmaXJzdFRleHRCb3goKTsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94KCkp
CiAgICAgICAgIHJlY3RzLmFwcGVuZChJbnRSZWN0KHR4ICsgYm94LT54UG9zKCksIHR5ICsgYm94
LT55UG9zKCksIGJveC0+d2lkdGgoKSwgYm94LT5oZWlnaHQoKSkpOwogfQogCi12b2lkIFJlbmRl
clRleHQ6OmFkZExpbmVCb3hSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCB1bnNpZ25lZCBz
dGFydCwgdW5zaWduZWQgZW5kLCBib29sIHVzZVNlbGVjdGlvbkhlaWdodCkKK3ZvaWQgUmVuZGVy
VGV4dDo6YWRkTGluZUJveFJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIHVuc2lnbmVkIHN0
YXJ0LCB1bnNpZ25lZCBlbmQsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0KSBjb25zdAogewogICAg
IC8vIFdvcmsgYXJvdW5kIHNpZ25lZC91bnNpZ25lZCBpc3N1ZXMuIFRoaXMgZnVuY3Rpb24gdGFr
ZXMgdW5zaWduZWRzLCBhbmQgaXMgb2Z0ZW4gcGFzc2VkIFVJTlRfTUFYCiAgICAgLy8gdG8gbWVh
biAiYWxsIHRoZSB3YXkgdG8gdGhlIGVuZCIuIElubGluZVRleHRCb3ggY29vcmRpbmF0ZXMgYXJl
IHVuc2lnbmVkcywgc28gY2hhbmdpbmcgdGhpcyAKQEAgLTI0MSwxMyArMjQxLDEzIEBAIHZvaWQg
UmVuZGVyVGV4dDo6YWRkTGluZUJveFJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIHVuc2ln
bmVkIHN0YXJ0LCB1bnNpZ25lCiAgICAgfQogfQogCi12b2lkIFJlbmRlclRleHQ6OmFic29sdXRl
UXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sIHRvcExldmVsKQordm9pZCBSZW5k
ZXJUZXh0OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCB0b3BM
ZXZlbCkgY29uc3QKIHsKICAgICBmb3IgKElubGluZVRleHRCb3gqIGJveCA9IGZpcnN0VGV4dEJv
eCgpOyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkKICAgICAgICAgcXVhZHMuYXBwZW5k
KGxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KGJveC0+eFBvcygpLCBib3gtPnlQb3MoKSwg
Ym94LT53aWR0aCgpLCBib3gtPmhlaWdodCgpKSkpOwogfQogCi12b2lkIFJlbmRlclRleHQ6OmNv
bGxlY3RBYnNvbHV0ZUxpbmVCb3hRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIHVuc2ln
bmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0KQordm9pZCBS
ZW5kZXJUZXh0Ojpjb2xsZWN0QWJzb2x1dGVMaW5lQm94UXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4m
IHF1YWRzLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kLCBib29sIHVzZVNlbGVjdGlvbkhl
aWdodCkgY29uc3QKIHsKICAgICAvLyBXb3JrIGFyb3VuZCBzaWduZWQvdW5zaWduZWQgaXNzdWVz
LiBUaGlzIGZ1bmN0aW9uIHRha2VzIHVuc2lnbmVkcywgYW5kIGlzIG9mdGVuIHBhc3NlZCBVSU5U
X01BWAogICAgIC8vIHRvIG1lYW4gImFsbCB0aGUgd2F5IHRvIHRoZSBlbmQiLiBJbmxpbmVUZXh0
Qm94IGNvb3JkaW5hdGVzIGFyZSB1bnNpZ25lZHMsIHNvIGNoYW5naW5nIHRoaXMgCkBAIC0xMDc4
LDEzICsxMDc4LDEzIEBAIGludCBSZW5kZXJUZXh0Ojp3aWR0aCgpIGNvbnN0CiAgICAgcmV0dXJu
IG1heCgwLCBtYXh4IC0gbWlueCk7CiB9CiAKLUludFJlY3QgUmVuZGVyVGV4dDo6YWJzb2x1dGVD
bGlwcGVkT3ZlcmZsb3dSZWN0KCkKK0ludFJlY3QgUmVuZGVyVGV4dDo6YWJzb2x1dGVDbGlwcGVk
T3ZlcmZsb3dSZWN0KCkgY29uc3QKIHsKICAgICBSZW5kZXJPYmplY3QqIGNiID0gY29udGFpbmlu
Z0Jsb2NrKCk7CiAgICAgcmV0dXJuIGNiLT5hYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKTsK
IH0KIAotSW50UmVjdCBSZW5kZXJUZXh0OjpzZWxlY3Rpb25SZWN0KGJvb2wgY2xpcFRvVmlzaWJs
ZUNvbnRlbnQpCitJbnRSZWN0IFJlbmRlclRleHQ6OnNlbGVjdGlvblJlY3QoYm9vbCBjbGlwVG9W
aXNpYmxlQ29udGVudCkgY29uc3QKIHsKICAgICBBU1NFUlQoIW5lZWRzTGF5b3V0KCkpOwogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmggYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0LmgKaW5kZXggMDhlMTAzNS4uNWUxYmNiNSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHQuaApAQCAtNjEsMTEgKzYxLDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBu
b2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBpbnQsIGlu
dCwgaW50LCBpbnQsIEhpdFRlc3RBY3Rpb24pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVy
biBmYWxzZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJl
Y3Q+JiwgaW50IHR4LCBpbnQgdHksIGJvb2wgdG9wTGV2ZWwgPSB0cnVlKTsKLSAgICB2aXJ0dWFs
IHZvaWQgYWRkTGluZUJveFJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0ID0gMCwgdW5zaWduZWQgZW5kT2Zmc2V0ID0gVUlOVF9NQVgsIGJvb2wgdXNlU2VsZWN0aW9u
SGVpZ2h0ID0gZmFsc2UpOworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJ
bnRSZWN0PiYsIGludCB0eCwgaW50IHR5LCBib29sIHRvcExldmVsID0gdHJ1ZSkgY29uc3Q7Cisg
ICAgdmlydHVhbCB2b2lkIGFkZExpbmVCb3hSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCB1bnNpZ25l
ZCBzdGFydE9mZnNldCA9IDAsIHVuc2lnbmVkIGVuZE9mZnNldCA9IFVJTlRfTUFYLCBib29sIHVz
ZVNlbGVjdGlvbkhlaWdodCA9IGZhbHNlKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBhYnNv
bHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCB0b3BMZXZlbCA9IHRydWUpOwotICAg
IHZpcnR1YWwgdm9pZCBjb2xsZWN0QWJzb2x1dGVMaW5lQm94UXVhZHMoVmVjdG9yPEZsb2F0UXVh
ZD4mLCB1bnNpZ25lZCBzdGFydE9mZnNldCA9IDAsIHVuc2lnbmVkIGVuZE9mZnNldCA9IFVJTlRf
TUFYLCBib29sIHVzZVNlbGVjdGlvbkhlaWdodCA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIHZvaWQg
YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wgdG9wTGV2ZWwgPSB0cnVlKSBj
b25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdEFic29sdXRlTGluZUJveFF1YWRzKFZlY3Rv
cjxGbG9hdFF1YWQ+JiwgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSAwLCB1bnNpZ25lZCBlbmRPZmZz
ZXQgPSBVSU5UX01BWCwgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQgPSBmYWxzZSkgY29uc3Q7CiAK
ICAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvckNvb3JkaW5hdGVzKGludCB4
LCBpbnQgeSk7CiAKQEAgLTEwNSwxMyArMTA1LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgY2FuQmVTZWxlY3Rpb25MZWFmKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1
YWwgU2VsZWN0aW9uU3RhdGUgc2VsZWN0aW9uU3RhdGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxTZWxlY3Rpb25TdGF0ZT4obV9zZWxlY3Rpb25TdGF0ZSk7IH0KICAgICB2aXJ0dWFsIHZv
aWQgc2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0aW9uU3RhdGUgcyk7Ci0gICAgdmlydHVhbCBJbnRS
ZWN0IHNlbGVjdGlvblJlY3QoYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUpOworICAg
IHZpcnR1YWwgSW50UmVjdCBzZWxlY3Rpb25SZWN0KGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQg
PSB0cnVlKSBjb25zdDsKICAgICB2aXJ0dWFsIEludFJlY3QgY2FyZXRSZWN0KElubGluZUJveCos
IGludCBjYXJldE9mZnNldCwgaW50KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUgPSAwKTsKIAogICAg
IHZpcnR1YWwgaW50IG1hcmdpbkxlZnQoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLT5tYXJnaW5M
ZWZ0KCkuY2FsY01pblZhbHVlKDApOyB9CiAgICAgdmlydHVhbCBpbnQgbWFyZ2luUmlnaHQoKSBj
b25zdCB7IHJldHVybiBzdHlsZSgpLT5tYXJnaW5SaWdodCgpLmNhbGNNaW5WYWx1ZSgwKTsgfQog
Ci0gICAgdmlydHVhbCBJbnRSZWN0IGFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpOworICAg
IHZpcnR1YWwgSW50UmVjdCBhYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKSBjb25zdDsKIAog
ICAgIElubGluZVRleHRCb3gqIGZpcnN0VGV4dEJveCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RU
ZXh0Qm94OyB9CiAgICAgSW5saW5lVGV4dEJveCogbGFzdFRleHRCb3goKSBjb25zdCB7IHJldHVy
biBtX2xhc3RUZXh0Qm94OyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWV3LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IDJhMzU3MDIu
LjAwOWZkZjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCisr
KyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAg
dm9pZCBSZW5kZXJWaWV3OjpyZXBhaW50Vmlld1JlY3RhbmdsZShjb25zdCBJbnRSZWN0JiB1ciwg
Ym9vbCBpbW1lZGlhdGUpCiAgICAgfQogfQogCi12b2lkIFJlbmRlclZpZXc6OmNvbXB1dGVBYnNv
bHV0ZVJlcGFpbnRSZWN0KEludFJlY3QmIHJlY3QsIGJvb2wgZml4ZWQpCit2b2lkIFJlbmRlclZp
ZXc6OmNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0KEludFJlY3QmIHJlY3QsIGJvb2wgZml4ZWQp
IGNvbnN0CiB7CiAgICAgaWYgKHByaW50aW5nKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI0Niwx
MiArMjQ2LDEyIEBAIHZvaWQgUmVuZGVyVmlldzo6Y29tcHV0ZUFic29sdXRlUmVwYWludFJlY3Qo
SW50UmVjdCYgcmVjdCwgYm9vbCBmaXhlZCkKICAgICAgICAgcmVjdCA9IG1fbGF5ZXItPnRyYW5z
Zm9ybSgpLT5tYXBSZWN0KHJlY3QpOwogfQogCi12b2lkIFJlbmRlclZpZXc6OmFic29sdXRlUmVj
dHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50IHR4LCBpbnQgdHksIGJvb2wpCit2b2lkIFJl
bmRlclZpZXc6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50IHR4LCBp
bnQgdHksIGJvb2wpIGNvbnN0CiB7CiAgICAgcmVjdHMuYXBwZW5kKEludFJlY3QodHgsIHR5LCBt
X2xheWVyLT53aWR0aCgpLCBtX2xheWVyLT5oZWlnaHQoKSkpOwogfQogCi12b2lkIFJlbmRlclZp
ZXc6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sIHRvcExldmVs
KQordm9pZCBSZW5kZXJWaWV3OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFk
cywgYm9vbCB0b3BMZXZlbCkgY29uc3QKIHsKICAgICBxdWFkcy5hcHBlbmQoRmxvYXRSZWN0KDAs
IDAsIG1fbGF5ZXItPndpZHRoKCksIG1fbGF5ZXItPmhlaWdodCgpKSk7CiB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmgKaW5kZXggYzY5ZGVhNi4uNjlkZTM5OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVmlldy5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaApA
QCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzT3Zlcmhhbmdp
bmdGbG9hdHMoKSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVB
YnNvbHV0ZVJlcGFpbnRSZWN0KEludFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpOworICAgIHZp
cnR1YWwgdm9pZCBjb21wdXRlQWJzb2x1dGVSZXBhaW50UmVjdChJbnRSZWN0JiwgYm9vbCBmaXhl
ZCA9IGZhbHNlKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcmVwYWludFZpZXdSZWN0YW5nbGUo
Y29uc3QgSW50UmVjdCYsIGJvb2wgaW1tZWRpYXRlID0gZmFsc2UpOwogCiAgICAgdmlydHVhbCB2
b2lkIHBhaW50KFBhaW50SW5mbyYsIGludCB0eCwgaW50IHR5KTsKQEAgLTgxLDggKzgxLDggQEAg
cHVibGljOgogCiAgICAgaW50IHRydW5jYXRlZEF0KCkgY29uc3QgeyByZXR1cm4gbV90cnVuY2F0
ZWRBdDsgfQogCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+
JiwgaW50IHR4LCBpbnQgdHksIGJvb2wgdG9wTGV2ZWwgPSB0cnVlKTsKLSAgICB2aXJ0dWFsIHZv
aWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wgdG9wTGV2ZWwgPSB0cnVl
KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBpbnQg
dHgsIGludCB0eSwgYm9vbCB0b3BMZXZlbCA9IHRydWUpIGNvbnN0OworICAgIHZpcnR1YWwgdm9p
ZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCB0b3BMZXZlbCA9IHRydWUp
IGNvbnN0OwogCiAgICAgSW50UmVjdCBzZWxlY3Rpb25SZWN0KGJvb2wgY2xpcFRvVmlzaWJsZUNv
bnRlbnQgPSB0cnVlKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUm9v
dElubGluZUJveC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAppbmRl
eCBlOThkMjBlLi45MjI4MzZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5s
aW5lQm94LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcApAQCAt
MjE5LDggKzIxOSw4IEBAIHZvaWQgUm9vdElubGluZUJveDo6Y2hpbGRSZW1vdmVkKElubGluZUJv
eCogYm94KQogICAgIH0KIH0KIAotR2FwUmVjdHMgUm9vdElubGluZUJveDo6ZmlsbExpbmVTZWxl
Y3Rpb25HYXAoaW50IHNlbFRvcCwgaW50IHNlbEhlaWdodCwgUmVuZGVyQmxvY2sqIHJvb3RCbG9j
aywgaW50IGJsb2NrWCwgaW50IGJsb2NrWSwgaW50IHR4LCBpbnQgdHksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50
SW5mbyogcGFpbnRJbmZvKQorR2FwUmVjdHMgUm9vdElubGluZUJveDo6ZmlsbExpbmVTZWxlY3Rp
b25HYXAoaW50IHNlbFRvcCwgaW50IHNlbEhlaWdodCwgY29uc3QgUmVuZGVyQmxvY2sqIHJvb3RC
bG9jaywgaW50IGJsb2NrWCwgaW50IGJsb2NrWSwgaW50IHR4LCBpbnQgdHksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZW5kZXJPYmplY3Q6OlBh
aW50SW5mbyogcGFpbnRJbmZvKSBjb25zdAogewogICAgIFJlbmRlck9iamVjdDo6U2VsZWN0aW9u
U3RhdGUgbGluZVN0YXRlID0gc2VsZWN0aW9uU3RhdGUoKTsKIApAQCAtMjY1LDcgKzI2NSw3IEBA
IHZvaWQgUm9vdElubGluZUJveDo6c2V0SGFzU2VsZWN0ZWRDaGlsZHJlbihib29sIGIpCiAgICAg
bV9oYXNTZWxlY3RlZENoaWxkcmVuID0gYjsKIH0KIAotUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25T
dGF0ZSBSb290SW5saW5lQm94OjpzZWxlY3Rpb25TdGF0ZSgpCitSZW5kZXJPYmplY3Q6OlNlbGVj
dGlvblN0YXRlIFJvb3RJbmxpbmVCb3g6OnNlbGVjdGlvblN0YXRlKCkgY29uc3QKIHsKICAgICAv
LyBXYWxrIG92ZXIgYWxsIG9mIHRoZSBzZWxlY3RlZCBib3hlcy4KICAgICBSZW5kZXJPYmplY3Q6
OlNlbGVjdGlvblN0YXRlIHN0YXRlID0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25lOwpAQCAt
Mjg1LDcgKzI4NSw3IEBAIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgUm9vdElubGluZUJv
eDo6c2VsZWN0aW9uU3RhdGUoKQogICAgIHJldHVybiBzdGF0ZTsKIH0KIAotSW5saW5lQm94KiBS
b290SW5saW5lQm94OjpmaXJzdFNlbGVjdGVkQm94KCkKK0lubGluZUJveCogUm9vdElubGluZUJv
eDo6Zmlyc3RTZWxlY3RlZEJveCgpIGNvbnN0CiB7CiAgICAgZm9yIChJbmxpbmVCb3gqIGJveCA9
IGZpcnN0TGVhZkNoaWxkKCk7IGJveDsgYm94ID0gYm94LT5uZXh0TGVhZkNoaWxkKCkpIHsKICAg
ICAgICAgaWYgKGJveC0+c2VsZWN0aW9uU3RhdGUoKSAhPSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlv
bk5vbmUpCkBAIC0yOTUsNyArMjk1LDcgQEAgSW5saW5lQm94KiBSb290SW5saW5lQm94OjpmaXJz
dFNlbGVjdGVkQm94KCkKICAgICByZXR1cm4gMDsKIH0KIAotSW5saW5lQm94KiBSb290SW5saW5l
Qm94OjpsYXN0U2VsZWN0ZWRCb3goKQorSW5saW5lQm94KiBSb290SW5saW5lQm94OjpsYXN0U2Vs
ZWN0ZWRCb3goKSBjb25zdAogewogICAgIGZvciAoSW5saW5lQm94KiBib3ggPSBsYXN0TGVhZkNo
aWxkKCk7IGJveDsgYm94ID0gYm94LT5wcmV2TGVhZkNoaWxkKCkpIHsKICAgICAgICAgaWYgKGJv
eC0+c2VsZWN0aW9uU3RhdGUoKSAhPSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmUpCkBAIC0z
MDUsNyArMzA1LDcgQEAgSW5saW5lQm94KiBSb290SW5saW5lQm94OjpsYXN0U2VsZWN0ZWRCb3go
KQogICAgIHJldHVybiAwOwogfQogCi1pbnQgUm9vdElubGluZUJveDo6c2VsZWN0aW9uVG9wKCkK
K2ludCBSb290SW5saW5lQm94OjpzZWxlY3Rpb25Ub3AoKSBjb25zdAogewogICAgIGludCBzZWxl
Y3Rpb25Ub3AgPSBtX292ZXJmbG93ID8gbV9vdmVyZmxvdy0+bV9zZWxlY3Rpb25Ub3AgOiBtX3k7
CiAgICAgaWYgKCFwcmV2Um9vdEJveCgpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcv
Um9vdElubGluZUJveC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oCmluZGV4
IDQ3MjQxMTAuLjMzNzVhOGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxp
bmVCb3guaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgKQEAgLTQzLDIw
ICs0MywyMCBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc1Jv
b3RJbmxpbmVCb3goKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlzUm9vdElu
bGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkZXN0
cm95KFJlbmRlckFyZW5hKik7CiAgICAgdm9pZCBkZXRhY2hFbGxpcHNpc0JveChSZW5kZXJBcmVu
YSopOwogCi0gICAgUm9vdElubGluZUJveCogbmV4dFJvb3RCb3goKSB7IHJldHVybiBzdGF0aWNf
Y2FzdDxSb290SW5saW5lQm94Kj4obV9uZXh0TGluZSk7IH0KLSAgICBSb290SW5saW5lQm94KiBw
cmV2Um9vdEJveCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFJvb3RJbmxpbmVCb3gqPihtX3ByZXZM
aW5lKTsgfQorICAgIFJvb3RJbmxpbmVCb3gqIG5leHRSb290Qm94KCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8Um9vdElubGluZUJveCo+KG1fbmV4dExpbmUpOyB9CisgICAgUm9vdElubGlu
ZUJveCogcHJldlJvb3RCb3goKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxSb290SW5saW5l
Qm94Kj4obV9wcmV2TGluZSk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RQb3NpdGlvbihp
bnQgZHgsIGludCBkeSk7CiAKLSAgICB2aXJ0dWFsIGludCB0b3BPdmVyZmxvdygpIHsgcmV0dXJu
IG1fb3ZlcmZsb3cgPyBtX292ZXJmbG93LT5tX3RvcE92ZXJmbG93IDogbV95OyB9Ci0gICAgdmly
dHVhbCBpbnQgYm90dG9tT3ZlcmZsb3coKSB7IHJldHVybiBtX292ZXJmbG93ID8gbV9vdmVyZmxv
dy0+bV9ib3R0b21PdmVyZmxvdyA6IG1feSArIG1faGVpZ2h0OyB9Ci0gICAgdmlydHVhbCBpbnQg
bGVmdE92ZXJmbG93KCkgeyByZXR1cm4gbV9vdmVyZmxvdyA/IG1fb3ZlcmZsb3ctPm1fbGVmdE92
ZXJmbG93IDogbV94OyB9Ci0gICAgdmlydHVhbCBpbnQgcmlnaHRPdmVyZmxvdygpIHsgcmV0dXJu
IG1fb3ZlcmZsb3cgPyBtX292ZXJmbG93LT5tX3JpZ2h0T3ZlcmZsb3cgOiBtX3ggKyBtX3dpZHRo
OyB9CisgICAgdmlydHVhbCBpbnQgdG9wT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX292ZXJm
bG93ID8gbV9vdmVyZmxvdy0+bV90b3BPdmVyZmxvdyA6IG1feTsgfQorICAgIHZpcnR1YWwgaW50
IGJvdHRvbU92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gbV9vdmVyZmxvdyA/IG1fb3ZlcmZsb3ct
Pm1fYm90dG9tT3ZlcmZsb3cgOiBtX3kgKyBtX2hlaWdodDsgfQorICAgIHZpcnR1YWwgaW50IGxl
ZnRPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcmZsb3cgPyBtX292ZXJmbG93LT5tX2xl
ZnRPdmVyZmxvdyA6IG1feDsgfQorICAgIHZpcnR1YWwgaW50IHJpZ2h0T3ZlcmZsb3coKSBjb25z
dCB7IHJldHVybiBtX292ZXJmbG93ID8gbV9vdmVyZmxvdy0+bV9yaWdodE92ZXJmbG93IDogbV94
ICsgbV93aWR0aDsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldFZlcnRpY2FsT3ZlcmZsb3dQb3Np
dGlvbnMoaW50IHRvcCwgaW50IGJvdHRvbSk7CiAgICAgdm9pZCBzZXRIb3Jpem9udGFsT3ZlcmZs
b3dQb3NpdGlvbnMoaW50IGxlZnQsIGludCByaWdodCk7CkBAIC0xMDQsMTggKzEwNCwxOCBAQCBw
dWJsaWM6CiAgICAgYm9vbCBoYXNTZWxlY3RlZENoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9o
YXNTZWxlY3RlZENoaWxkcmVuOyB9CiAgICAgdm9pZCBzZXRIYXNTZWxlY3RlZENoaWxkcmVuKGJv
b2wpOwogCi0gICAgdmlydHVhbCBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIHNlbGVjdGlv
blN0YXRlKCk7Ci0gICAgSW5saW5lQm94KiBmaXJzdFNlbGVjdGVkQm94KCk7Ci0gICAgSW5saW5l
Qm94KiBsYXN0U2VsZWN0ZWRCb3goKTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdDo6U2VsZWN0
aW9uU3RhdGUgc2VsZWN0aW9uU3RhdGUoKSBjb25zdDsKKyAgICBJbmxpbmVCb3gqIGZpcnN0U2Vs
ZWN0ZWRCb3goKSBjb25zdDsKKyAgICBJbmxpbmVCb3gqIGxhc3RTZWxlY3RlZEJveCgpIGNvbnN0
OwogCi0gICAgR2FwUmVjdHMgZmlsbExpbmVTZWxlY3Rpb25HYXAoaW50IHNlbFRvcCwgaW50IHNl
bEhlaWdodCwgUmVuZGVyQmxvY2sqIHJvb3RCbG9jaywgaW50IGJsb2NrWCwgaW50IGJsb2NrWSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdHgsIGludCB0eSwgY29uc3Qg
UmVuZGVyT2JqZWN0OjpQYWludEluZm8qKTsKKyAgICBHYXBSZWN0cyBmaWxsTGluZVNlbGVjdGlv
bkdhcChpbnQgc2VsVG9wLCBpbnQgc2VsSGVpZ2h0LCBjb25zdCBSZW5kZXJCbG9jayogcm9vdEJs
b2NrLCBpbnQgYmxvY2tYLCBpbnQgYmxvY2tZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCB0eCwgaW50IHR5LCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyopIGNv
bnN0OwogCiAgICAgUmVuZGVyQmxvY2sqIGJsb2NrKCkgY29uc3Q7CiAKLSAgICBpbnQgc2VsZWN0
aW9uVG9wKCk7Ci0gICAgaW50IHNlbGVjdGlvbkJvdHRvbSgpIHsgcmV0dXJuIG1fb3ZlcmZsb3cg
PyBtX292ZXJmbG93LT5tX3NlbGVjdGlvbkJvdHRvbSA6IG1feSArIG1faGVpZ2h0OyB9Ci0gICAg
aW50IHNlbGVjdGlvbkhlaWdodCgpIHsgcmV0dXJuIG1heCgwLCBzZWxlY3Rpb25Cb3R0b20oKSAt
IHNlbGVjdGlvblRvcCgpKTsgfQorICAgIGludCBzZWxlY3Rpb25Ub3AoKSBjb25zdDsKKyAgICBp
bnQgc2VsZWN0aW9uQm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9vdmVyZmxvdyA/IG1fb3ZlcmZs
b3ctPm1fc2VsZWN0aW9uQm90dG9tIDogbV95ICsgbV9oZWlnaHQ7IH0KKyAgICBpbnQgc2VsZWN0
aW9uSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbWF4KDAsIHNlbGVjdGlvbkJvdHRvbSgpIC0gc2Vs
ZWN0aW9uVG9wKCkpOyB9CiAKICAgICBJbmxpbmVCb3gqIGNsb3Nlc3RMZWFmQ2hpbGRGb3JYUG9z
KGludCB4LCBib29sIG9ubHlFZGl0YWJsZUxlYXZlcyA9IGZhbHNlKTsKIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9yZW5kZXJpbmcvU1ZHSW5saW5lVGV4dEJveC5jcHAgYi9XZWJDb3JlL3JlbmRlcmlu
Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAppbmRleCBjZWI3YjBlLi41ZjJhZWZhIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3JlbmRlcmluZy9TVkdJbmxpbmVUZXh0Qm94LmNwcAorKysgYi9XZWJDb3JlL3Jl
bmRlcmluZy9TVkdJbmxpbmVUZXh0Qm94LmNwcApAQCAtNDcsMTIgKzQ3LDEyIEBAIFNWR0lubGlu
ZVRleHRCb3g6OlNWR0lubGluZVRleHRCb3goUmVuZGVyT2JqZWN0KiBvYmopCiB7CiB9CiAKLWlu
dCBTVkdJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25Ub3AoKQoraW50IFNWR0lubGluZVRleHRCb3g6
OnNlbGVjdGlvblRvcCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1feTsKIH0KICAKLWludCBTVkdJ
bmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25IZWlnaHQoKQoraW50IFNWR0lubGluZVRleHRCb3g6OnNl
bGVjdGlvbkhlaWdodCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faGVpZ2h0OwogfQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvU1ZHSW5saW5lVGV4dEJveC5oIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvU1ZHSW5saW5lVGV4dEJveC5oCmluZGV4IDFkZGMyM2EuLmE3ZjMwMTkgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcmVuZGVyaW5nL1NWR0lubGluZVRleHRCb3guaAorKysgYi9XZWJDb3JlL3Jl
bmRlcmluZy9TVkdJbmxpbmVUZXh0Qm94LmgKQEAgLTM3LDggKzM3LDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHSW5saW5lVGV4dEJveChSZW5kZXJPYmpl
Y3QqIG9iaik7CiAKLSAgICAgICAgdmlydHVhbCBpbnQgc2VsZWN0aW9uVG9wKCk7Ci0gICAgICAg
IHZpcnR1YWwgaW50IHNlbGVjdGlvbkhlaWdodCgpOworICAgICAgICB2aXJ0dWFsIGludCBzZWxl
Y3Rpb25Ub3AoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBpbnQgc2VsZWN0aW9uSGVpZ2h0KCkg
Y29uc3Q7CiAKICAgICAgICAgdmlydHVhbCBpbnQgb2Zmc2V0Rm9yUG9zaXRpb24oaW50IHgsIGJv
b2wgaW5jbHVkZVBhcnRpYWxHbHlwaHMgPSB0cnVlKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBp
bnQgcG9zaXRpb25Gb3JPZmZzZXQoaW50IG9mZnNldCkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3JlbmRlcmluZy9TVkdSb290SW5saW5lQm94LmggYi9XZWJDb3JlL3JlbmRlcmluZy9TVkdS
b290SW5saW5lQm94LmgKaW5kZXggODAwNjY0Yi4uNGEwZmNkNCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9yZW5kZXJpbmcvU1ZHUm9vdElubGluZUJveC5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1NW
R1Jvb3RJbmxpbmVCb3guaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0K
IAotICAgIHZpcnR1YWwgYm9vbCBpc1NWR1Jvb3RJbmxpbmVCb3goKSB7IHJldHVybiB0cnVlOyB9
CisgICAgdmlydHVhbCBib29sIGlzU1ZHUm9vdElubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBwYWludChSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYs
IGludCB0eCwgaW50IHR5KTsKIAo=
</data>
<flag name="review"
          id="11781"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25413</attachid>
            <date>2008-11-23 22:48:15 -0800</date>
            <delta_ts>2008-11-24 11:32:46 -0800</delta_ts>
            <desc>Path to rename selectionRect on RenderView to avoid ambiguity.</desc>
            <filename>22433_disambiguation.txt</filename>
            <type>text/plain</type>
            <size>6890</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cCBiL1dlYkNvcmUvV2ViQ29yZS5i
YXNlLmV4cAppbmRleCA2YjM0MjAzLi42ZGJhM2QyIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUuYmFzZS5leHAKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCkBAIC04MDUsNyArODA1
LDcgQEAgX19aTks3V2ViQ29yZTVGcmFtZTEyZXZlbnRIYW5kbGVyRXYKIF9fWk5LN1dlYkNvcmU1
RnJhbWUxMm93bmVyRWxlbWVudEV2CiBfX1pOSzdXZWJDb3JlNUZyYW1lMTJzZWxlY3RlZFRleHRF
dgogX19aTks3V2ViQ29yZTVGcmFtZTEzb3duZXJSZW5kZXJlckV2Ci1fX1pOSzdXZWJDb3JlNUZy
YW1lMTNzZWxlY3Rpb25SZWN0RWIKK19fWk5LN1dlYkNvcmU1RnJhbWUxNXNlbGVjdGlvbkJvdW5k
c0ViCiBfX1pOSzdXZWJDb3JlNUZyYW1lMTRzZWxlY3Rpb25JbWFnZUViCiBfX1pOSzdXZWJDb3Jl
NUZyYW1lMTVjb250ZW50UmVuZGVyZXJFdgogX19aTks3V2ViQ29yZTVGcmFtZTE1cmV2ZWFsU2Vs
ZWN0aW9uRVJLTlNfMTFSZW5kZXJMYXllcjE1U2Nyb2xsQWxpZ25tZW50RQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9lZGl0aW5n
L1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDgyMjI4NjcuLjFmZTFkOTMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcAorKysgYi9XZWJDb3Jl
L2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAKQEAgLTExMDUsNyArMTEwNSw3IEBAIHZv
aWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6Zm9jdXNlZE9yQWN0aXZlU3RhdGVDaGFuZ2VkKCkKICAg
ICAvLyBSZW5kZXJPYmplY3Q6OnNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNoZWNrIGlmIHRo
ZSBmcmFtZSBpcyBhY3RpdmUsCiAgICAgLy8gd2UgaGF2ZSB0byB1cGRhdGUgcGxhY2VzIHRob3Nl
IGNvbG9ycyB3ZXJlIHBhaW50ZWQuCiAgICAgaWYgKFJlbmRlclZpZXcqIHZpZXcgPSBzdGF0aWNf
Y2FzdDxSZW5kZXJWaWV3Kj4obV9mcmFtZS0+ZG9jdW1lbnQoKS0+cmVuZGVyZXIoKSkpCi0gICAg
ICAgIHZpZXctPnJlcGFpbnRWaWV3UmVjdGFuZ2xlKGVuY2xvc2luZ0ludFJlY3QobV9mcmFtZS0+
c2VsZWN0aW9uUmVjdCgpKSk7CisgICAgICAgIHZpZXctPnJlcGFpbnRWaWV3UmVjdGFuZ2xlKGVu
Y2xvc2luZ0ludFJlY3QobV9mcmFtZS0+c2VsZWN0aW9uQm91bmRzKCkpKTsKIAogICAgIC8vIENh
cmV0IGFwcGVhcnMgaW4gdGhlIGFjdGl2ZSBmcmFtZS4KICAgICBpZiAoYWN0aXZlQW5kRm9jdXNl
ZCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDI2ODM5N2UuLmI2NTQwY2YgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0Ry
YWdDb250cm9sbGVyLmNwcApAQCAtNTc5LDcgKzU3OSw3IEBAIHN0YXRpYyBJbnRQb2ludCBkcmFn
TG9jRm9yREhUTUxEcmFnKGNvbnN0IEludFBvaW50JiBtb3VzZURyYWdnZWRQb2ludCwgY29uc3Qg
SW50CiAgICAgCiBzdGF0aWMgSW50UG9pbnQgZHJhZ0xvY0ZvclNlbGVjdGlvbkRyYWcoRnJhbWUq
IHNyYykKIHsKLSAgICBJbnRSZWN0IGRyYWdnaW5nUmVjdCA9IGVuY2xvc2luZ0ludFJlY3Qoc3Jj
LT5zZWxlY3Rpb25SZWN0KCkpOworICAgIEludFJlY3QgZHJhZ2dpbmdSZWN0ID0gZW5jbG9zaW5n
SW50UmVjdChzcmMtPnNlbGVjdGlvbkJvdW5kcygpKTsKICAgICBpbnQgeHBvcyA9IGRyYWdnaW5n
UmVjdC5yaWdodCgpOwogICAgIHhwb3MgPSBkcmFnZ2luZ1JlY3QueCgpIDwgeHBvcyA/IGRyYWdn
aW5nUmVjdC54KCkgOiB4cG9zOwogICAgIGludCB5cG9zID0gZHJhZ2dpbmdSZWN0LmJvdHRvbSgp
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1dlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAKaW5kZXggMjU3OWM5Mi4uMmMwMzhkMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0xMTM3LDE0ICsxMTM3LDE0
IEBAIHZvaWQgRnJhbWU6OnNldEV4Y2x1ZGVGcm9tVGV4dFNlYXJjaChib29sIGV4Y2x1ZGUpCiB9
CiAKIC8vIHJldHVybnMgRmxvYXRSZWN0IGJlY2F1c2UgZ29pbmcgdGhyb3VnaCBJbnRSZWN0IHdv
dWxkIHRydW5jYXRlIGFueSBmbG9hdHMKLUZsb2F0UmVjdCBGcmFtZTo6c2VsZWN0aW9uUmVjdChi
b29sIGNsaXBUb1Zpc2libGVDb250ZW50KSBjb25zdAorRmxvYXRSZWN0IEZyYW1lOjpzZWxlY3Rp
b25Cb3VuZHMoYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkgY29uc3QKIHsKICAgICBSZW5kZXJW
aWV3KiByb290ID0gY29udGVudFJlbmRlcmVyKCk7CiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gZC0+
bV92aWV3LmdldCgpOwogICAgIGlmICghcm9vdCB8fCAhdmlldykKICAgICAgICAgcmV0dXJuIElu
dFJlY3QoKTsKICAgICAKLSAgICBJbnRSZWN0IHNlbGVjdGlvblJlY3QgPSByb290LT5zZWxlY3Rp
b25SZWN0KGNsaXBUb1Zpc2libGVDb250ZW50KTsKKyAgICBJbnRSZWN0IHNlbGVjdGlvblJlY3Qg
PSByb290LT5zZWxlY3Rpb25Cb3VuZHMoY2xpcFRvVmlzaWJsZUNvbnRlbnQpOwogICAgIHJldHVy
biBjbGlwVG9WaXNpYmxlQ29udGVudCA/IGludGVyc2VjdGlvbihzZWxlY3Rpb25SZWN0LCB2aWV3
LT52aXNpYmxlQ29udGVudFJlY3QoKSkgOiBzZWxlY3Rpb25SZWN0OwogfQogCkBAIC0xMjMyLDcg
KzEyMzIsNyBAQCB2b2lkIEZyYW1lOjpyZXZlYWxTZWxlY3Rpb24oY29uc3QgUmVuZGVyTGF5ZXI6
OlNjcm9sbEFsaWdubWVudCYgYWxpZ25tZW50KSBjb25zdAogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAKICAgICAgICAgY2FzZSBTZWxlY3Rpb246OlJBTkdFOgotICAgICAgICAgICAg
cmVjdCA9IGVuY2xvc2luZ0ludFJlY3Qoc2VsZWN0aW9uUmVjdChmYWxzZSkpOworICAgICAgICAg
ICAgcmVjdCA9IGVuY2xvc2luZ0ludFJlY3Qoc2VsZWN0aW9uQm91bmRzKGZhbHNlKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZS5o
IGIvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggNzE0M2Q1ZC4uYmJhOWM2NyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTI1
NSw3ICsyNTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUeXBpbmdTdHlsZShDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbiopOwogICAgIHZvaWQgY2xlYXJUeXBpbmdTdHlsZSgpOwogCi0gICAg
RmxvYXRSZWN0IHNlbGVjdGlvblJlY3QoYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUp
IGNvbnN0OworICAgIEZsb2F0UmVjdCBzZWxlY3Rpb25Cb3VuZHMoYm9vbCBjbGlwVG9WaXNpYmxl
Q29udGVudCA9IHRydWUpIGNvbnN0OwogICAgIHZvaWQgc2VsZWN0aW9uVGV4dFJlY3RzKFZlY3Rv
cjxGbG9hdFJlY3Q+JiwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUpIGNvbnN0Owog
CiAgICAgSFRNTEZvcm1FbGVtZW50KiBjdXJyZW50Rm9ybSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wYWdlL21hYy9GcmFtZU1hYy5tbSBiL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVNYWMu
bW0KaW5kZXggMGU2ZmE3Ny4uYjkyOWFhMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL21hYy9G
cmFtZU1hYy5tbQorKysgYi9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lTWFjLm1tCkBAIC0zMTcsNyAr
MzE3LDcgQEAgTlNJbWFnZSogRnJhbWU6OnNlbGVjdGlvbkltYWdlKGJvb2wgZm9yY2VCbGFja1Rl
eHQpIGNvbnN0CiB7CiAgICAgZC0+bV92aWV3LT5zZXRQYWludFJlc3RyaWN0aW9uKGZvcmNlQmxh
Y2tUZXh0ID8gUGFpbnRSZXN0cmljdGlvblNlbGVjdGlvbk9ubHlCbGFja1RleHQgOiBQYWludFJl
c3RyaWN0aW9uU2VsZWN0aW9uT25seSk7CiAgICAgZC0+bV9kb2MtPnVwZGF0ZUxheW91dCgpOwot
ICAgIE5TSW1hZ2UqIHJlc3VsdCA9IGltYWdlRnJvbVJlY3Qoc2VsZWN0aW9uUmVjdCgpKTsKKyAg
ICBOU0ltYWdlKiByZXN1bHQgPSBpbWFnZUZyb21SZWN0KHNlbGVjdGlvbkJvdW5kcygpKTsKICAg
ICBkLT5tX3ZpZXctPnNldFBhaW50UmVzdHJpY3Rpb24oUGFpbnRSZXN0cmljdGlvbk5vbmUpOwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IDJhMzU3
MDIuLjI1YTJmNjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3Bw
CisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC0yNjUsNyArMjY1LDcg
QEAgUmVuZGVyT2JqZWN0KiByZW5kZXJlckFmdGVyUG9zaXRpb24oUmVuZGVyT2JqZWN0KiBvYmpl
Y3QsIHVuc2lnbmVkIG9mZnNldCkKICAgICByZXR1cm4gY2hpbGQgPyBjaGlsZCA6IG9iamVjdC0+
bmV4dEluUHJlT3JkZXJBZnRlckNoaWxkcmVuKCk7CiB9CiAKLUludFJlY3QgUmVuZGVyVmlldzo6
c2VsZWN0aW9uUmVjdChib29sIGNsaXBUb1Zpc2libGVDb250ZW50KSBjb25zdAorSW50UmVjdCBS
ZW5kZXJWaWV3OjpzZWxlY3Rpb25Cb3VuZHMoYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkgY29u
c3QKIHsKICAgICBkb2N1bWVudCgpLT51cGRhdGVSZW5kZXJpbmcoKTsKIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Vmlldy5oCmluZGV4IGM2OWRlYTYuLmM5YzBmMzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZXcuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKQEAg
LTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZl
Y3RvcjxJbnRSZWN0PiYsIGludCB0eCwgaW50IHR5LCBib29sIHRvcExldmVsID0gdHJ1ZSk7CiAg
ICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sIHRv
cExldmVsID0gdHJ1ZSk7CiAKLSAgICBJbnRSZWN0IHNlbGVjdGlvblJlY3QoYm9vbCBjbGlwVG9W
aXNpYmxlQ29udGVudCA9IHRydWUpIGNvbnN0OworICAgIEludFJlY3Qgc2VsZWN0aW9uQm91bmRz
KGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPSB0cnVlKSBjb25zdDsKIAogICAgIHZvaWQgc2V0
TWF4aW1hbE91dGxpbmVTaXplKGludCBvKSB7IG1fbWF4aW1hbE91dGxpbmVTaXplID0gbzsgfQog
ICAgIGludCBtYXhpbWFsT3V0bGluZVNpemUoKSBjb25zdCB7IHJldHVybiBtX21heGltYWxPdXRs
aW5lU2l6ZTsgfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1t
IGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IGQyZTQ1ZGQuLjljYThi
ZWUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTQ3NzQsNyArNDc3NCw3IEBAIHN0
YXRpYyBDR1BvaW50IGNvcmVHcmFwaGljc1NjcmVlblBvaW50Rm9yQXBwS2l0U2NyZWVuUG9pbnQo
TlNQb2ludCBwb2ludCkKICAgICAvLyBUaGUgSElEaWN0aW9uYXJ5V2luZG93U2hvdyBmdW5jdGlv
biByZXF1aXJlcyB0aGUgb3JpZ2luLCBpbiBDRyBzY3JlZW4gY29vcmRpbmF0ZXMsIG9mIHRoZSBm
aXJzdCBjaGFyYWN0ZXIgb2YgdGV4dCBpbiB0aGUgc2VsZWN0aW9uLgogICAgIC8vIEZJWE1FIDQ5
NDU4MDg6IFdlIGFwcHJveGltYXRlIHRoaXMgaW4gYSB3YXkgdGhhdCB3b3JrcyB3ZWxsIHdoZW4g
YSBzaW5nbGUgd29yZCBpcyBzZWxlY3RlZCwgYW5kIGxlc3Mgd2VsbCBpbiBzb21lIG90aGVyIGNh
c2VzCiAgICAgLy8gKGJ1dCBubyB3b3JzZSB0aGFuIHdlIGRpZCBpbiBUaWdlcikKLSAgICBOU1Jl
Y3QgcmVjdCA9IGNvcmVGcmFtZS0+c2VsZWN0aW9uUmVjdCgpOworICAgIE5TUmVjdCByZWN0ID0g
Y29yZUZyYW1lLT5zZWxlY3Rpb25Cb3VuZHMoKTsKIAogICAgIE5TRGljdGlvbmFyeSAqYXR0cmli
dXRlcyA9IFthdHRyU3RyaW5nIGZvbnRBdHRyaWJ1dGVzSW5SYW5nZTpOU01ha2VSYW5nZSgwLDEp
XTsKICAgICBOU0ZvbnQgKmZvbnQgPSBbYXR0cmlidXRlcyBvYmplY3RGb3JLZXk6TlNGb250QXR0
cmlidXRlTmFtZV07CkBAIC01NTgzLDcgKzU1ODMsNyBAQCBzdGF0aWMgdm9pZCBleHRyYWN0VW5k
ZXJsaW5lcyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgVmVjdG9yPENvbXBvc2l0aW9uVW5k
ZQogLSAoTlNSZWN0KXNlbGVjdGlvblJlY3QKIHsKICAgICBpZiAoW3NlbGYgX2hhc1NlbGVjdGlv
bl0pCi0gICAgICAgIHJldHVybiBjb3JlKFtzZWxmIF9mcmFtZV0pLT5zZWxlY3Rpb25SZWN0KCk7
CisgICAgICAgIHJldHVybiBjb3JlKFtzZWxmIF9mcmFtZV0pLT5zZWxlY3Rpb25Cb3VuZHMoKTsK
ICAgICByZXR1cm4gTlNaZXJvUmVjdDsKIH0KIApAQCAtNTYxOSw3ICs1NjE5LDcgQEAgc3RhdGlj
IHZvaWQgZXh0cmFjdFVuZGVybGluZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3Rv
cjxDb21wb3NpdGlvblVuZGUKIC0gKE5TUmVjdClzZWxlY3Rpb25JbWFnZVJlY3QKIHsKICAgICBp
ZiAoW3NlbGYgX2hhc1NlbGVjdGlvbl0pCi0gICAgICAgIHJldHVybiBjb3JlKFtzZWxmIF9mcmFt
ZV0pLT5zZWxlY3Rpb25SZWN0KCk7CisgICAgICAgIHJldHVybiBjb3JlKFtzZWxmIF9mcmFtZV0p
LT5zZWxlY3Rpb25Cb3VuZHMoKTsKICAgICByZXR1cm4gTlNaZXJvUmVjdDsKIH0KIAo=
</data>
<flag name="review"
          id="11799"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>