<?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>78926</bug_id>
          
          <creation_ts>2012-02-17 13:31:06 -0800</creation_ts>
          <short_desc>Full Screen Refactor Part 2: Remove unnecessary WebKit2 APIs for Full Screen made</short_desc>
          <delta_ts>2012-03-08 15:16:54 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>78925</dependson>
          <blocked>78927</blocked>
    
    <blocked>78928</blocked>
    
    <blocked>78930</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>menard</cc>
    
    <cc>pnormand</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>559476</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-02-17 13:31:06 -0800</bug_when>
    <thetext>Now that (bug #78925) compositing mode is no longer used in full-screen mode, remove the WebKit2 APIs which handle these modes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559518</commentid>
    <comment_count>1</comment_count>
      <attachid>127651</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-02-17 13:59:33 -0800</bug_when>
    <thetext>Created attachment 127651
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560362</commentid>
    <comment_count>2</comment_count>
      <attachid>127850</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-02-20 14:27:37 -0800</bug_when>
    <thetext>Created attachment 127850
Patch

Removed Source/WebKit2/WebProcess/FullScreen/win/WebFullScreenManagerWin.cpp,h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561072</commentid>
    <comment_count>3</comment_count>
      <attachid>127850</attachid>
    <who name="John Sullivan">sullivan</who>
    <bug_when>2012-02-21 11:25:21 -0800</bug_when>
    <thetext>Comment on attachment 127850
Patch

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

&gt; Source/WebKit2/UIProcess/WebFullScreenManagerProxy.h:85
&gt; +    void disposeOfLayerClient() { } // FIXME: Remove

These “// FIXME: Remove” comments don’t provide enough context. Is there a bug number about removing them that you could cite here? Otherwise, they need more context about when they can/should be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561077</commentid>
    <comment_count>4</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-02-21 11:27:57 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 127850 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=127850&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebFullScreenManagerProxy.h:85
&gt; &gt; +    void disposeOfLayerClient() { } // FIXME: Remove
&gt; 
&gt; These “// FIXME: Remove” comments don’t provide enough context. Is there a bug number about removing them that you could cite here? Otherwise, they need more context about when they can/should be removed.

Yes, these will be fully removed by the patch in bug #78928.  I&apos;ll add that to the comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574290</commentid>
    <comment_count>5</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-03-08 15:16:54 -0800</bug_when>
    <thetext>Committed r110214: &lt;http://trac.webkit.org/changeset/110214&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127651</attachid>
            <date>2012-02-17 13:59:33 -0800</date>
            <delta_ts>2012-02-20 14:27:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78926-20120217135931.patch</filename>
            <type>text/plain</type>
            <size>50138</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MjU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYWFiNzdmYmU2NzQwMjJk
OGE4NTc1ZTQ4MWZiYjkzNTY1ZTRmZGVlYi4uNDMxZTI1YmUwODJkOWU5ZjJlZTgyNTEwZDRiMjQ0
Y2ZiNmE2Nzk0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTAyLTE3ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEZ1bGwgU2NyZWVuIFJlZmFj
dG9yIFBhcnQgMjogUmVtb3ZlIHVubmVjZXNzYXJ5IFdlYktpdDIgQVBJcyBmb3IgRnVsbCBTY3Jl
ZW4gbWFkZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Nzg5MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyAoYW5kIGFsc28gdGhlaXIgUHJveHkgdmVyc2lvbnMpIHdl
cmUgcmVtb3ZlZCBjb21wbGV0ZWx5OgorICAgICAgICBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6ZW50
ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0JikKKyAg
ICAgICAgV2ViRnVsbFNjcmVlbk1hbmFnZXI6OmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9k
ZSgpCisgICAgICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpiZWdhbkVudGVyRnVsbFNjcmVlbkFu
aW1hdGlvbigpCisgICAgICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpmaW5pc2hlZEVudGVyRnVs
bFNjcmVlbkFuaW1hdGlvbihib29sKQorICAgICAgICBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6YmVn
YW5FeGl0RnVsbFNjcmVlbkFuaW1hdGlvbigpCisgICAgICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2Vy
OjpmaW5pc2hlZEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uKGJvb2wpCisgICAgICAgIFdlYkZ1bGxT
Y3JlZW5NYW5hZ2VyOjpnZXRGdWxsU2NyZWVuUmVjdChXZWJDb3JlOjpJbnRSZWN0JikKKworICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0
OjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpiZWdpbkVudGVyRnVsbFNjcmVlbkFuaW1hdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmJlZ2luRXhp
dEZ1bGxTY3JlZW5BbmltYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFu
YWdlclByb3h5OjpkaXNwb3NlT2ZMYXllckNsaWVudCk6CisgICAgICAgIChXZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQ
cm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYkZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHlHdGsuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eU1hYy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvV2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eVF0LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHlXaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFu
YWdlclByb3h5OjpmaW5pc2hlZEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uKToKKyAgICAgICAgKiBX
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9G
dWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnVsbFNjcmVlbk1hbmFnZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyOjp+V2ViRnVsbFNjcmVlbk1hbmFnZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
RnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5oOgorICAgICAgICAoV2ViRnVsbFNjcmVl
bk1hbmFnZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVu
TWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6
ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50KToKKwor
ICAgICAgICBBZGRpdGlvbmFsbHksIHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBXZWJGdWxsU2NyZWVu
TWFuYWdlciBzdWJjbGFzc2VzIHdlcmUgcmVtb3ZlZCwgYXMgbm8KKyAgICAgICAgcGxhdGZvcm0t
c3BlY2lmaWMgaW1wbGVtZW50YXRpb25zIHJlbWFpbmVkIGFmdGVyIHRoZSBhYm92ZSBmdW5jdGlv
bnMgd2VyZSByZW1vdmVkOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFRh
cmdldC5wcmk6CisgICAgICAgICogV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL21hYy9XZWJGdWxsU2Ny
ZWVuTWFuYWdlck1hYy5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvRnVsbFNjcmVl
bi9tYWMvV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWMubW06IFJlbW92ZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9GdWxsU2NyZWVuL2d0ay9XZWJGdWxsU2NyZWVuTWFuYWdlckd0ay5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL2d0ay9XZWJGdWxsU2NyZWVuTWFu
YWdlckd0ay5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvRnVsbFNjcmVlbi9xdC9X
ZWJGdWxsU2NyZWVuTWFuYWdlclF0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L0Z1bGxTY3JlZW4vcXQvV2ViRnVsbFNjcmVlbk1hbmFnZXJRdC5oOiBSZW1vdmVkLgorCiAyMDEy
LTAyLTA5ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR1RLXSBBZGQgV2ViS2l0V2ViVmlldzo6bW91c2UtdGFyZ2V0LWNoYW5nZWQgc2lnbmFs
IHRvIFdlYktpdDIgR1RLKyBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2Vm
aWxlLmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KaW5kZXggM2I4ZTdiZGEyOWI1
MGQ0NGUxOGExMTAzNDNjZTE1MjgwNWVkZTE2NC4uNmQ3NjE4YTVjZjllZjNjYzk0NDQ2ZmVjMDcw
ZjJmMmFiNjFjY2VhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0K
KysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KQEAgLTc1Niw4ICs3NTYsNiBAQCBs
aWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJ
X01JTk9SX1ZFUlNJT05AX2xhX1NPVQogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxv
YWRzL3NvdXAvRG93bmxvYWRTb3VwLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9G
dWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmggXAotCVNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9ndGsvV2ViRnVsbFNjcmVlbk1hbmFnZXJHdGsuY3Bw
IFwKLQlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vZ3RrL1dlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyR3RrLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvR2VvbG9jYXRpb24v
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9j
YXRpb25NYW5hZ2VyLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJp
IGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQppbmRleCBjZWRlNGVhNjdjMGExOTVhMWU2MDVi
YzdmOTk0ZDkwNmFmNDgwOTliLi5kMWY5NDljY2YwMzhlY2I4NjNiZjQzYWRjODQ4YTljMmQ3OWE2
ZjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1RhcmdldC5wcmkKQEAgLTI4MCw3ICsyODAsNiBAQCBIRUFERVJTICs9IFwKICAgICBX
ZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaCBcCiAgICAgV2ViUHJvY2Vzcy9E
b3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5oIFwKICAgICBXZWJQcm9jZXNzL0Z1bGxTY3Jl
ZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuaCBcCi0gICAgV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL3F0
L1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUXQuaCBcCiAgICAgV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9H
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIFwKICAgICBXZWJQcm9jZXNzL0dl
b2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oIFwKICAgICBXZWJQcm9jZXNzL0ljb25E
YXRhYmFzZS9XZWJJY29uRGF0YWJhc2VQcm94eS5oIFwKQEAgLTYxNSw3ICs2MTQsNiBAQCBTT1VS
Q0VTICs9IFwKICAgICBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9Eb3dubG9hZFF0LmNwcCBcCiAg
ICAgV2ViUHJvY2Vzcy9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5jcHAgXAogICAgIFdl
YlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHAgXAotICAgIFdlYlBy
b2Nlc3MvRnVsbFNjcmVlbi9xdC9XZWJGdWxsU2NyZWVuTWFuYWdlclF0LmNwcCBcCiAgICAgV2Vi
UHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5j
cHAgXAogICAgIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNw
cCBcCiAgICAgV2ViUHJvY2Vzcy9JY29uRGF0YWJhc2UvV2ViSWNvbkRhdGFiYXNlUHJveHkuY3Bw
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFu
YWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFu
YWdlclByb3h5LmNwcAppbmRleCA3MjliNjJlOWRjNTc2Njc0ZDNmZTMwMzZkM2EwNTNlOWIyMTRm
OGMzLi5lZGUxMTkxYzNjNDVkNWNjN2YxZTUzNzhjZDUyYTllYTk1ZmM0Yjc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHku
Y3BwCkBAIC04NCwyMCArODQsNiBAQCB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmRp
ZEV4aXRGdWxsU2NyZWVuKCkKICAgICBtX3BhZ2UtPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6
V2ViRnVsbFNjcmVlbk1hbmFnZXI6OkRpZEV4aXRGdWxsU2NyZWVuKCksIG1fcGFnZS0+cGFnZUlE
KCkpOwogfQogCi12b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmJlZ2luRW50ZXJGdWxs
U2NyZWVuQW5pbWF0aW9uKGZsb2F0IGR1cmF0aW9uKQotewotICAgIG1fcGFnZS0+cHJvY2Vzcygp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6QmVnaW5FbnRlckZ1bGxTY3Jl
ZW5BbmltYXRpb24oZHVyYXRpb24pLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKLX0KLQotdm9pZCBXZWJG
dWxsU2NyZWVuTWFuYWdlclByb3h5OjpiZWdpbkV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uKGZsb2F0
IGR1cmF0aW9uKQotewotICAgIG1fcGFnZS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJG
dWxsU2NyZWVuTWFuYWdlcjo6QmVnaW5FeGl0RnVsbFNjcmVlbkFuaW1hdGlvbihkdXJhdGlvbiks
IG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6
OmRpc3Bvc2VPZkxheWVyQ2xpZW50KCkKLXsKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS0+c2VuZChN
ZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OkRpc3Bvc2VPZkxheWVyQ2xpZW50KCksIG1f
cGFnZS0+cGFnZUlEKCkpOwotfQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnN1
cHBvcnRzRnVsbFNjcmVlbihib29sIHdpdGhLZXlib2FyZCwgYm9vbCYgc3VwcG9ydHMpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQ
cm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHkuaAppbmRleCAxYTFjOTRjOTNiMDM2Yzk0YjQ1NzQ3MWYzZTc0ZWVkNGQ4YWVjYmI0Li41NzZm
YTJmZGYwNWQ4ZTI2MTQyNGQyNzA2MmMyZDZjNWEyMTg3NGQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmgKQEAgLTgwLDkg
KzgwLDkgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRW50ZXJGdWxsU2NyZWVuKCk7CiAgICAgdm9p
ZCB3aWxsRXhpdEZ1bGxTY3JlZW4oKTsKICAgICB2b2lkIGRpZEV4aXRGdWxsU2NyZWVuKCk7Ci0g
ICAgdm9pZCBiZWdpbkVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbihmbG9hdCBkdXJhdGlvbik7Ci0g
ICAgdm9pZCBiZWdpbkV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uKGZsb2F0IGR1cmF0aW9uKTsKLSAg
ICB2b2lkIGRpc3Bvc2VPZkxheWVyQ2xpZW50KCk7CisgICAgdm9pZCBiZWdpbkVudGVyRnVsbFNj
cmVlbkFuaW1hdGlvbihmbG9hdCBkdXJhdGlvbikgeyB9IC8vIEZJWE1FOiBSZW1vdmUKKyAgICB2
b2lkIGJlZ2luRXhpdEZ1bGxTY3JlZW5BbmltYXRpb24oZmxvYXQgZHVyYXRpb24pIHsgfSAvLyBG
SVhNRTogUmVtb3ZlCisgICAgdm9pZCBkaXNwb3NlT2ZMYXllckNsaWVudCgpIHsgfSAvLyBGSVhN
RTogUmVtb3ZlCiAKIHByaXZhdGU6CiAgICAgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eShXZWJQ
YWdlUHJveHkqKTsKQEAgLTkwLDEzICs5MCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdXBwb3J0
c0Z1bGxTY3JlZW4oYm9vbCB3aXRoS2V5Ym9hcmQsIGJvb2wmKTsKICAgICB2b2lkIGVudGVyRnVs
bFNjcmVlbigpOwogICAgIHZvaWQgZXhpdEZ1bGxTY3JlZW4oKTsKLSAgICB2b2lkIGJlZ2FuRW50
ZXJGdWxsU2NyZWVuQW5pbWF0aW9uKCk7Ci0gICAgdm9pZCBmaW5pc2hlZEVudGVyRnVsbFNjcmVl
bkFuaW1hdGlvbihib29sIGNvbXBsZXRlZCk7Ci0gICAgdm9pZCBiZWdhbkV4aXRGdWxsU2NyZWVu
QW5pbWF0aW9uKCk7Ci0gICAgdm9pZCBmaW5pc2hlZEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uKGJv
b2wgY29tcGxldGVkKTsKLSAgICB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUo
Y29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpOwotICAgIHZvaWQgZXhpdEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdNb2RlKCk7Ci0gICAgdm9pZCBnZXRGdWxsU2NyZWVuUmVjdChXZWJDb3JlOjpJbnRSZWN0
Jik7CiAKICAgICBXZWJQYWdlUHJveHkqIG1fcGFnZTsKICAgICBQbGF0Zm9ybVdlYlZpZXcqIG1f
d2ViVmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMDA3ZTMwOTE2ZDFkYTYw
ZTkyYzkwODQ5MTAxMWRhZTEwYTBmMGJhNy4uZTgxZTIwYTkyNjBmYmRkMDlhYTc1NWVmMjk5Yjlk
YTMxZWE5MzM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZ1bGxT
Y3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAgLTI1LDE0ICsyNSw1
IEBAIG1lc3NhZ2VzIC0+IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkgewogICAgIFN1cHBvcnRz
RnVsbFNjcmVlbihib29sIHdpdGhLZXlib2FyZCkgLT4gKGJvb2wgc3VwcG9ydHNGdWxsU2NyZWVu
KQogICAgIEVudGVyRnVsbFNjcmVlbigpCiAgICAgRXhpdEZ1bGxTY3JlZW4oKQotICAgIEJlZ2Fu
RW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uKCkKLSAgICBGaW5pc2hlZEVudGVyRnVsbFNjcmVlbkFu
aW1hdGlvbihib29sIGNvbXBsZXRlZCkKLSAgICBCZWdhbkV4aXRGdWxsU2NyZWVuQW5pbWF0aW9u
KCkKLSAgICBGaW5pc2hlZEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uKGJvb2wgY29tcGxldGVkKQot
ICAgIEdldEZ1bGxTY3JlZW5SZWN0KCkgLT4gKFdlYkNvcmU6OkludFJlY3QgcmVjdCkKLSNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZShXZWJLaXQ6OkxheWVyVHJlZUNvbnRleHQgY29udGV4dCkKLSAgICBFeGl0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ01vZGUoKQotI2VuZGlmCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUd0ay5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHlHdGsuY3BwCmluZGV4IDViNWJmMDI0Mjg2MmMxYTk0NjZiYzdiYTdmNzEwMTZhM2MzYzU4ODEu
LjE0NzBlYTUxMjJiYzJlNGI1MzRjZDA3MDI3OGNkNTc0MzFlMmRiMjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUd0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJGdWxsU2NyZWVuTWFuYWdl
clByb3h5R3RrLmNwcApAQCAtNDYsNDEgKzQ2LDYgQEAgdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdl
clByb3h5OjpleGl0RnVsbFNjcmVlbigpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9p
ZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpiZWdhbkVudGVyRnVsbFNjcmVlbkFuaW1hdGlv
bigpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBXZWJGdWxsU2NyZWVuTWFu
YWdlclByb3h5OjpmaW5pc2hlZEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbihib29sIGNvbXBsZXRl
ZCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFdlYkZ1bGxTY3JlZW5NYW5h
Z2VyUHJveHk6OmJlZ2FuRXhpdEZ1bGxTY3JlZW5BbmltYXRpb24oKQotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci19Ci0KLXZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6ZmluaXNoZWRF
eGl0RnVsbFNjcmVlbkFuaW1hdGlvbihib29sIGNvbXBsZXRlZCkKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi12b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmVudGVyQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgY29udGV4dCkKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHk6OmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpnZXRGdWxsU2NyZWVu
UmVjdChXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKEZVTExTQ1JFRU5f
QVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJG
dWxsU2NyZWVuTWFuYWdlclByb3h5TWFjLm1tCmluZGV4IDIwZTkyYzA1NGI3NDNhZDFkOTUzNDAy
MGNmZDdjMGFlZmVmOGQwZDkuLmRhYjVmMTEwYTE3Yzg4ZTY3YTc0Njc3MmZiNDhlM2NkMDFkMDhk
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dl
YkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNYWMubW0KQEAgLTU3LDU2ICs1Nyw3IEBAIHZvaWQgV2Vi
RnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6ZXhpdEZ1bGxTY3JlZW4oKQogICAgICAgICByZXR1cm47
CiAgICAgW1ttX3dlYlZpZXcgZnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJdIGV4aXRGdWxsU2Ny
ZWVuXTsKIH0KLQotdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpiZWdhbkVudGVyRnVs
bFNjcmVlbkFuaW1hdGlvbigpCi17Ci0gICAgaWYgKCFtX3dlYlZpZXcpCi0gICAgICAgIHJldHVy
bjsKLSAgICBbW21fd2ViVmlldyBmdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcl0gYmVnYW5FbnRl
ckZ1bGxTY3JlZW5BbmltYXRpb25dOwotfQotCi12b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHk6OmZpbmlzaGVkRW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uKGJvb2wgY29tcGxldGVkKQotewot
ICAgIGlmICghbV93ZWJWaWV3KQotICAgICAgICByZXR1cm47Ci0gICAgW1ttX3dlYlZpZXcgZnVs
bFNjcmVlbldpbmRvd0NvbnRyb2xsZXJdIGZpbmlzaGVkRW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9u
OmNvbXBsZXRlZF07Ci19Ci0KLXZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6YmVnYW5F
eGl0RnVsbFNjcmVlbkFuaW1hdGlvbigpCi17Ci0gICAgaWYgKCFtX3dlYlZpZXcpCi0gICAgICAg
IHJldHVybjsKLSAgICBbW21fd2ViVmlldyBmdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcl0gYmVn
YW5FeGl0RnVsbFNjcmVlbkFuaW1hdGlvbl07Ci19Ci0KLXZvaWQgV2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eTo6ZmluaXNoZWRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbihib29sIGNvbXBsZXRlZCkK
LXsKLSAgICBpZiAoIW1fd2ViVmlldykKLSAgICAgICAgcmV0dXJuOwotICAgIFtbbV93ZWJWaWV3
IGZ1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyXSBmaW5pc2hlZEV4aXRGdWxsU2NyZWVuQW5pbWF0
aW9uOmNvbXBsZXRlZF07Ci19CiAgICAgCi12b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6
OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYg
Y29udGV4dCkKLXsKLSAgICBpZiAoIW1fd2ViVmlldykKLSAgICAgICAgcmV0dXJuOwotICAgIFtb
bV93ZWJWaWV3IGZ1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyXSBlbnRlckFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdNb2RlOmNvbnRleHRdOwotfQotCi12b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHk6OmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpCi17Ci0gICAgaWYgKCFtX3dlYlZp
ZXcpCi0gICAgICAgIHJldHVybjsKLSAgICBbW21fd2ViVmlldyBmdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlcl0gZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlXTsKLX0KLQotdm9pZCBXZWJG
dWxsU2NyZWVuTWFuYWdlclByb3h5OjpnZXRGdWxsU2NyZWVuUmVjdChXZWJDb3JlOjpJbnRSZWN0
JiByZWN0KQotewotICAgIGlmICghbV93ZWJWaWV3KQotICAgICAgICByZXR1cm47Ci0gICAgcmVj
dCA9IFtbbV93ZWJWaWV3IGZ1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyXSBnZXRGdWxsU2NyZWVu
UmVjdF07Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5UXQu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHlRdC5jcHAKaW5kZXggYzRhMTNmYWQ4OWUxMTI5YjU4ZjljM2RiNzk4YmIyMjdjN2RmNTUyNi4u
MzgzODlkZmJiZDBlYzZmYzBhMGFjNzNmOTk4MThmMGVjNmI0ODg2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlRdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHlRdC5jcHAKQEAgLTQ2LDQxICs0Niw2IEBAIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94
eTo6ZXhpdEZ1bGxTY3JlZW4oKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2Vi
RnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6YmVnYW5FbnRlckZ1bGxTY3JlZW5BbmltYXRpb24oKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQ
cm94eTo6ZmluaXNoZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb24oYm9vbCBjb21wbGV0ZWQpCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5OjpiZWdhbkV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uKCkKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotfQotCi12b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmZpbmlzaGVkRXhpdEZ1
bGxTY3JlZW5BbmltYXRpb24oYm9vbCBjb21wbGV0ZWQpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLX0KLQotdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjplbnRlckFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGNvbnRleHQpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Ojpl
eGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLXZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6Z2V0RnVsbFNjcmVlblJlY3Qo
V2ViQ29yZTo6SW50UmVjdCYgcmVjdCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYkZ1bGxT
Y3JlZW5NYW5hZ2VyUHJveHlXaW4uY3BwCmluZGV4IDg3OGZhMTM0ZTY5ZmZhYzhhNWE0Y2ViOGJi
MjU4MDQ3NmEzMmFlMGEuLjlhNmQ5ZTUyYTZhYzZlYWNlNTcxZTk3MjZmYjhhZTI5NGExYWNiMzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJG
dWxsU2NyZWVuTWFuYWdlclByb3h5V2luLmNwcApAQCAtNTcsNTUgKzU3LDYgQEAgdm9pZCBXZWJG
dWxsU2NyZWVuTWFuYWdlclByb3h5OjpleGl0RnVsbFNjcmVlbigpCiAgICAgbV93ZWJWaWV3LT5m
dWxsU2NyZWVuQ29udHJvbGxlcigpLT5leGl0RnVsbFNjcmVlbigpOwogfQogCi12b2lkIFdlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmJlZ2FuRW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uKCkKLXsK
LSAgICBpZiAoIW1fd2ViVmlldykKLSAgICAgICAgcmV0dXJuOwotICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQKLX0KLQotdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpmaW5pc2hlZEVudGVy
RnVsbFNjcmVlbkFuaW1hdGlvbihib29sIGNvbXBsZXRlZCkKLXsKLSAgICBpZiAoIW1fd2ViVmll
dykKLSAgICAgICAgcmV0dXJuOwotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKLX0KLQotdm9pZCBX
ZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpiZWdhbkV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uKCkK
LXsKLSAgICBpZiAoIW1fd2ViVmlldykKLSAgICAgICAgcmV0dXJuOwotICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQKLX0KLQotdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpmaW5pc2hlZEV4
aXRGdWxsU2NyZWVuQW5pbWF0aW9uKGJvb2wgY29tcGxldGVkKQotewotICAgIGlmICghbV93ZWJW
aWV3KQotICAgICAgICByZXR1cm47Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudAotfQotICAgIAot
dm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGNvbnRleHQpCi17Ci0gICAgaWYgKCFtX3dl
YlZpZXcpCi0gICAgICAgIHJldHVybjsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50Ci19Ci0KLXZv
aWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6ZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlKCkKLXsKLSAgICBpZiAoIW1fd2ViVmlldykKLSAgICAgICAgcmV0dXJuOwotICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQKLX0KLQotdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpnZXRG
dWxsU2NyZWVuUmVjdChXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQotewotICAgIGlmICghbV93ZWJW
aWV3KQotICAgICAgICByZXR1cm47Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudAotfQotCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTRmNWUzYWMyZDA0NjI2YmIyZmMyM2Q5
YzA3OWNkMjU4YzFkZTYzNy4uMDlkZDdhYjZkOTQ3NzY0ZDJjMzRhZGM4YjIyNjk1MGIzMDUwOTk1
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtODczLDcgKzg3Myw2IEBACiAJCUNEQ0E4NUM5MTMyQUJBNEUwMEU5NjFERiAvKiBX
S0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRENBODVDNzEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2Ny
ZWVuV2luZG93Q29udHJvbGxlci5oICovOyB9OwogCQlDRENBODVENTEzMkFDMkIzMDBFOTYxREYg
LyogSU9LaXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RDQTg1RDQxMzJBQzJCMzAwRTk2MURGIC8qIElPS2l0LmZyYW1ld29yayAq
LzsgfTsKIAkJQ0RDQTg1RUUxMzJBRDcwMTAwRTk2MURGIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRENBODVERTEzMkFEMDUzMDBFOTYxREYgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eU1h
Yy5tbSAqLzsgfTsKLQkJQ0RDQTg2MDMxMzJBREMwNTAwRTk2MURGIC8qIFdlYkZ1bGxTY3JlZW5N
YW5hZ2VyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RDQTg1RTYxMzJBRDMzMDAwRTk2MURGIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjLm1t
ICovOyB9OwogCQlEM0I5NDg0NjExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQzQjk0ODQyMTFG
RjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuY3BwICovOyB9OwogCQlEM0I5NDg0NzExRkY0
QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBEM0I5NDg0MzExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBN
ZW51LmggKi87IH07CiAJCUQzQjk0ODQ4MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1
cE1lbnUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RDNCOTQ4NDQxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5jcHAgKi87IH07
CkBAIC0xOTEzLDggKzE5MTIsNiBAQAogCQlDRENBODVDNzEzMkFCQTRFMDBFOTYxREYgLyogV0tG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNEQ0E4NUQ0MTMyQUMyQjMwMEU5NjFERiAvKiBJT0tpdC5mcmFtZXdvcmsgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZy
YW1ld29yazsgbmFtZSA9IElPS2l0LmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsK
IAkJQ0RDQTg1REUxMzJBRDA1MzAwRTk2MURGIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlN
YWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDRENB
ODVFNTEzMkFEMzMwMDBFOTYxREYgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0RDQTg1RTYxMzJBRDMzMDAwRTk2MURGIC8qIFdl
YkZ1bGxTY3JlZW5NYW5hZ2VyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUQzQjk0ODQyMTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUG9wdXBNZW51LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDNCOTQ4NDMxMUZGNEI2NTAwMDMyQjM5IC8qIFdl
YlBvcHVwTWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQb3B1cE1l
bnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDNCOTQ4NDQxMUZGNEI2NTAwMDMy
QjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJTZWFyY2hQb3B1cE1lbnUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMzY1MCw4ICszNjQ3LDYgQEAKIAkJQ0RDQTg1RTQxMzJBRDMzMDAwRTk2MURGIC8q
IG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJQ0RD
QTg1RTUxMzJBRDMzMDAwRTk2MURGIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjLmggKi8sCi0J
CQkJQ0RDQTg1RTYxMzJBRDMzMDAwRTk2MURGIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjLm1t
ICovLAogCQkJKTsKIAkJCW5hbWUgPSBtYWM7CiAJCQlwYXRoID0gRnVsbFNjcmVlbi9tYWM7CkBA
IC00NjcyLDcgKzQ2NjcsNiBAQAogCQkJCUJDQjlGNkExMTEyM0E4NEIwMEExMzdFMCAvKiBXZWJG
cmFtZVBvbGljeUxpc3RlbmVyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxMTFCMEUx
MTJGNUU0RjAwMzM3QkFCIC8qIFdlYkZyYW1lUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0Q3M0JBNTMxMzFCNjQ1QjAwRUVERUQyIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCUNEQ0E4NjAzMTMyQURDMDUwMEU5NjFERiAvKiBXZWJGdWxsU2NyZWVu
TWFuYWdlck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNENzNCQTRFMTMxQUNEQjcwMEVFREVE
MiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlDRDZGNzVGNDEzMUI2NkQwMDBENkIyMUUgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJQ
cm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRENBODVFRTEzMkFENzAxMDBFOTYxREYgLyog
V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2Ny
ZWVuTWFuYWdlci5jcHAKaW5kZXggMjM3ZmQ0Y2Y2OGUxODUwYWY2MWRhMGNjZTY3MTcwYjEyMDc2
Njk5ZC4uMmY4NzJjZTdiN2JiNWUxM2M3ZmJiZTc0YmI1ODY0MzEzY2FkNTliMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVs
bFNjcmVlbk1hbmFnZXIuY3BwCkBAIC00Miw2ICs0MiwxMSBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK1Bhc3NSZWZQdHI8V2ViRnVsbFNjcmVlbk1h
bmFnZXI+IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpjcmVhdGUoV2ViUGFnZSogcGFnZSkKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyKHBhZ2UpKTsKK30KKwog
V2ViRnVsbFNjcmVlbk1hbmFnZXI6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyKFdlYlBhZ2UqIHBhZ2Up
CiAgICAgOiBtX3BhZ2UocGFnZSkKIHsKQEAgLTQ5LDcgKzU0LDYgQEAgV2ViRnVsbFNjcmVlbk1h
bmFnZXI6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyKFdlYlBhZ2UqIHBhZ2UpCiAgICAgCiBXZWJGdWxs
U2NyZWVuTWFuYWdlcjo6fldlYkZ1bGxTY3JlZW5NYW5hZ2VyKCkKIHsKLSAgICAKIH0KIAogV2Vi
Q29yZTo6RWxlbWVudCogV2ViRnVsbFNjcmVlbk1hbmFnZXI6OmVsZW1lbnQoKSAKQEAgLTg2LDMz
ICs5MCw2IEBAIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXI6OmV4aXRGdWxsU2NyZWVuRm9yRWxl
bWVudChXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50KQogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5k
bGVGdWxsU2NyZWVuQ2xpZW50KCkuZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KG1fcGFnZS5nZXQo
KSwgZWxlbWVudCk7CiB9CiAKLXZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXI6OmJlZ2FuRW50ZXJG
dWxsU2NyZWVuQW5pbWF0aW9uKCkKLXsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHk6OkJlZ2FuRW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uKCkpOwot
fQotCi12b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpmaW5pc2hlZEVudGVyRnVsbFNjcmVlbkFu
aW1hdGlvbihib29sIGNvbXBsZXRlZCkKLXsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OkZpbmlzaGVkRW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9u
KGNvbXBsZXRlZCkpOwotfQotCi12b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpiZWdhbkV4aXRG
dWxsU2NyZWVuQW5pbWF0aW9uKCkKLXsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHk6OkJlZ2FuRXhpdEZ1bGxTY3JlZW5BbmltYXRpb24oKSk7Ci19
Ci0KLXZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXI6OmZpbmlzaGVkRXhpdEZ1bGxTY3JlZW5Bbmlt
YXRpb24oYm9vbCBjb21wbGV0ZWQpCi17Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJG
dWxsU2NyZWVuTWFuYWdlclByb3h5OjpGaW5pc2hlZEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uKGNv
bXBsZXRlZCkpOwotfQotICAgIAotSW50UmVjdCBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6Z2V0RnVs
bFNjcmVlblJlY3QoKQotewotICAgIEludFJlY3QgcmVjdDsKLSAgICBtX3BhZ2UtPnNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpHZXRGdWxsU2NyZWVuUmVjdCgp
LCBNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6R2V0RnVsbFNjcmVlblJlY3Q6
OlJlcGx5KHJlY3QpKTsKLSAgICByZXR1cm4gcmVjdDsKLX0KLQogdm9pZCBXZWJGdWxsU2NyZWVu
TWFuYWdlcjo6d2lsbEVudGVyRnVsbFNjcmVlbigpCiB7CiAgICAgQVNTRVJUKG1fZWxlbWVudCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVs
bFNjcmVlbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9X
ZWJGdWxsU2NyZWVuTWFuYWdlci5oCmluZGV4IGEyYjk5MmY4ZjFhYTVkMDc2OWMzODE3NGU3MWQz
YzhhZGRhNTRiOWUuLjQwYzlkN2M3MTEzYTgwMDI4NDNjYWM0MjZlZjNiOGJmMDZmYzJjMzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2Ny
ZWVuTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9X
ZWJGdWxsU2NyZWVuTWFuYWdlci5oCkBAIC01NywxMSArNTcsNiBAQCBwdWJsaWM6CiAgICAgYm9v
bCBzdXBwb3J0c0Z1bGxTY3JlZW4oYm9vbCB3aXRoS2V5Ym9hcmQpOwogICAgIHZvaWQgZW50ZXJG
dWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50Kik7CiAgICAgdm9pZCBleGl0RnVs
bFNjcmVlbkZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCopOwotICAgIHZvaWQgYmVnYW5FbnRl
ckZ1bGxTY3JlZW5BbmltYXRpb24oKTsKLSAgICB2b2lkIGZpbmlzaGVkRW50ZXJGdWxsU2NyZWVu
QW5pbWF0aW9uKGJvb2wgY29tcGxldGVkKTsKLSAgICB2b2lkIGJlZ2FuRXhpdEZ1bGxTY3JlZW5B
bmltYXRpb24oKTsKLSAgICB2b2lkIGZpbmlzaGVkRXhpdEZ1bGxTY3JlZW5BbmltYXRpb24oYm9v
bCBjb21wbGV0ZWQpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRSb290RnVsbFNjcmVlbkxheWVyKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSA9IDA7CiAKICAgICB2b2lkIHdpbGxFbnRlckZ1bGxTY3Jl
ZW4oKTsKICAgICB2b2lkIGRpZEVudGVyRnVsbFNjcmVlbigpOwpAQCAtNzMsMTAgKzY4LDYgQEAg
cHVibGljOgogcHJvdGVjdGVkOgogICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyKFdlYlBhZ2UqKTsK
IAotICAgIHZpcnR1YWwgdm9pZCBiZWdpbkVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbihmbG9hdCBk
dXJhdGlvbikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBiZWdpbkV4aXRGdWxsU2NyZWVuQW5pbWF0
aW9uKGZsb2F0IGR1cmF0aW9uKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3Bvc2VPZkxheWVy
Q2xpZW50KCkgeyB9Ci0gICAgV2ViQ29yZTo6SW50UmVjdCBnZXRGdWxsU2NyZWVuUmVjdCgpOwog
CiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViRnVsbFNjcmVlbk1hbmFnZXJNZXNzYWdlKENvcmVJUEM6
OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rl
ciopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4v
V2ViRnVsbFNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggODJl
ZWUzZGE2MTEyZGYwZmRiNTAzYWJhZDIxMzg1ZGE2MDI3NjVhYy4uZjg0MDgxYjA1M2E4ZThkOTM4
NjMyYmQ0ZjBkMjFkMDI3YmE5OTVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5t
ZXNzYWdlcy5pbgpAQCAtMjYsOCArMjYsNSBAQCBtZXNzYWdlcyAtPiBXZWJGdWxsU2NyZWVuTWFu
YWdlciB7CiAgICAgRGlkRW50ZXJGdWxsU2NyZWVuKCkKICAgICBXaWxsRXhpdEZ1bGxTY3JlZW4o
KQogICAgIERpZEV4aXRGdWxsU2NyZWVuKCkKLSAgICBCZWdpbkVudGVyRnVsbFNjcmVlbkFuaW1h
dGlvbihmbG9hdCBkdXJhdGlvbikKLSAgICBCZWdpbkV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uKGZs
b2F0IGR1cmF0aW9uKQotICAgIERpc3Bvc2VPZkxheWVyQ2xpZW50KCkKIH0KICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL2d0ay9XZWJGdWxs
U2NyZWVuTWFuYWdlckd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3Jl
ZW4vZ3RrL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyR3RrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNWM0ZTY5NzU2Mjc0NDZmNDNmNGM2YzhiZWUyY2MzNDJjNmEyY2YxNi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0Z1bGxTY3JlZW4vZ3RrL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyR3RrLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDExIEln
YWxpYSBTLkwuCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAq
Ci0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJG
dWxsU2NyZWVuTWFuYWdlckd0ay5oIgotCi0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotCi0j
aW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotV2ViRnVsbFNjcmVlbk1hbmFnZXJHdGs6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyR3RrKFdlYlBh
Z2UqIHBhZ2UpCi0gICAgOiBXZWJGdWxsU2NyZWVuTWFuYWdlcihwYWdlKQotewotfQotCi1QYXNz
UmVmUHRyPFdlYkZ1bGxTY3JlZW5NYW5hZ2VyPiBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6Y3JlYXRl
KFdlYlBhZ2UqIHBhZ2UpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJGdWxsU2NyZWVu
TWFuYWdlckd0ayhwYWdlKSk7Ci19Ci0KLXZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJHdGs6OnNl
dFJvb3RGdWxsU2NyZWVuTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciogbGF5ZXIpCi17Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlckd0azo6
YmVnaW5FbnRlckZ1bGxTY3JlZW5BbmltYXRpb24oZmxvYXQgZHVyYXRpb24pCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlckd0azo6YmVnaW5F
eGl0RnVsbFNjcmVlbkFuaW1hdGlvbihmbG9hdCBkdXJhdGlvbikKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVs
bFNjcmVlbi9ndGsvV2ViRnVsbFNjcmVlbk1hbmFnZXJHdGsuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvRnVsbFNjcmVlbi9ndGsvV2ViRnVsbFNjcmVlbk1hbmFnZXJHdGsuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTFmNTUyN2ZjNGI1NTZiZmJjNWY4ZDJmYmRmMGViZmY5
YjI0MmVmMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vZ3RrL1dlYkZ1bGxTY3JlZW5NYW5h
Z2VyR3RrLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBXZWJGdWxsU2NyZWVuTWFuYWdlckd0a19oCi0jZGVmaW5lIFdlYkZ1bGxTY3JlZW5NYW5h
Z2VyR3RrX2gKLQotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLQotI2luY2x1ZGUgIldlYkZ1
bGxTY3JlZW5NYW5hZ2VyLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJGdWxs
U2NyZWVuTWFuYWdlckd0ayA6IHB1YmxpYyBXZWJGdWxsU2NyZWVuTWFuYWdlciB7Ci1wdWJsaWM6
Ci0gICAgV2ViRnVsbFNjcmVlbk1hbmFnZXJHdGsoV2ViUGFnZSopOwotICAgIHZpcnR1YWwgdm9p
ZCBzZXRSb290RnVsbFNjcmVlbkxheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKLQotcHJp
dmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgYmVnaW5FbnRlckZ1bGxTY3JlZW5BbmltYXRpb24oZmxv
YXQgZHVyYXRpb24pOwotICAgIHZpcnR1YWwgdm9pZCBiZWdpbkV4aXRGdWxsU2NyZWVuQW5pbWF0
aW9uKGZsb2F0IGR1cmF0aW9uKTsKLQotfTsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKEZVTExT
Q1JFRU5fQVBJKQotCi0jZW5kaWYgLy8gV2ViRnVsbFNjcmVlbk1hbmFnZXJHdGtfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL21hYy9XZWJGdWxsU2Ny
ZWVuTWFuYWdlck1hYy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL21h
Yy9XZWJGdWxsU2NyZWVuTWFuYWdlck1hYy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAyN2U4YWZmMjAxZGI0ZWQ5MDI4OWE0ZjljOTI5MjI4YzdlNDE0YjYxLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvRnVsbFNjcmVlbi9tYWMvV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWMuaAorKysgL2Rldi9udWxs
CkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkZ1bGxTY3JlZW5NYW5h
Z2VyTWFjX2gKLSNkZWZpbmUgV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWNfaAotCi0jaWYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQotCi0jaW1wb3J0ICJMYXllclRyZWVDb250ZXh0LmgiCi0jaW1wb3J0
ICJXZWJGdWxsU2NyZWVuTWFuYWdlci5oIgotCi0jaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzTGF5
ZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvSW50UmVjdC5oPgotI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgotCi10eXBlZGVmIHN0cnVjdCBfX1dLQ0FSZW1vdGVMYXllckNsaWVudFJlZiogV0tDQVJl
bW90ZUxheWVyQ2xpZW50UmVmOwotT0JKQ19DTEFTUyBXZWJGdWxsU2NyZWVuTWFuYWdlckFuaW1h
dGlvbkxpc3RlbmVyOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViRnVsbFNjcmVl
bk1hbmFnZXJNYWMgOiBwdWJsaWMgV2ViRnVsbFNjcmVlbk1hbmFnZXIgewotcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjPiBjcmVhdGUoV2ViUGFn
ZSopOwotCi0gICAgdmlydHVhbCB2b2lkIHNldFJvb3RGdWxsU2NyZWVuTGF5ZXIoV2ViQ29yZTo6
R3JhcGhpY3NMYXllciopOwotCi1wcml2YXRlOgotICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFj
KFdlYlBhZ2UqKTsKLSAgICB2aXJ0dWFsIH5XZWJGdWxsU2NyZWVuTWFuYWdlck1hYygpOwotCi0g
ICAgdmlydHVhbCB2b2lkIGJlZ2luRW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uKGZsb2F0IGR1cmF0
aW9uKTsKLSAgICB2aXJ0dWFsIHZvaWQgYmVnaW5FeGl0RnVsbFNjcmVlbkFuaW1hdGlvbihmbG9h
dCBkdXJhdGlvbik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3Bvc2VPZkxheWVyQ2xpZW50KCk7Ci0K
LSAgICB2b2lkIGFuaW1hdGVGdWxsU2NyZWVuKGNvbnN0IENBVHJhbnNmb3JtM0QmIHN0YXJ0VHJh
bnNmb3JtLCBjb25zdCBDQVRyYW5zZm9ybTNEJiBlbmRUcmFuc2Zvcm0sIGZsb2F0IGR1cmF0aW9u
LCBpZCBsaXN0ZW5lcik7Ci0gICAgQ0FUcmFuc2Zvcm0zRCB3aW5kb3dlZENHVHJhbnNmb3JtKCk7
Ci0KLSAgICBPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbV9yb290TGF5ZXI7Ci0gICAg
TGF5ZXJUcmVlQ29udGV4dCBtX2xheWVyVHJlZUNvbnRleHQ7Ci0gICAgUmV0YWluUHRyPFdLQ0FS
ZW1vdGVMYXllckNsaWVudFJlZj4gbV9yZW1vdGVMYXllckNsaWVudDsKLSAgICBSZXRhaW5QdHI8
aWQ+IG1fZW50ZXJGdWxsU2NyZWVuTGlzdGVuZXI7Ci0gICAgUmV0YWluUHRyPGlkPiBtX2V4aXRG
dWxsU2NyZWVuTGlzdGVuZXI7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoRlVMTFNDUkVF
Tl9BUEkpCi0KLSNlbmRpZiAvLyBXZWJGdWxsU2NyZWVuTWFuYWdlck1hY19oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vbWFjL1dlYkZ1bGxTY3JlZW5N
YW5hZ2VyTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL21hYy9X
ZWJGdWxsU2NyZWVuTWFuYWdlck1hYy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDcwNjAwNzhkYzdiMTZjNDdmMjVkOTUyNzdmYjRiZDgzNWJlMzA5MS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0Z1bGxTY3JlZW4vbWFjL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjLm1tCisrKyAvZGV2L251bGwK
QEAgLTEsMzExICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0
ICJXZWJGdWxsU2NyZWVuTWFuYWdlck1hYy5oIgotCi0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQotCi0jaW1wb3J0ICJDb25uZWN0aW9uLmgiCi0jaW1wb3J0ICJMYXllclRyZWVDb250ZXh0Lmgi
Ci0jaW1wb3J0ICJNZXNzYWdlSUQuaCIKLSNpbXBvcnQgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHlNZXNzYWdlcy5oIgotI2ltcG9ydCAiV2ViUGFnZS5oIgotI2ltcG9ydCAiV2ViUHJvY2Vzcy5o
IgotI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0Zy
YW1lLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgotI2ltcG9ydCA8V2ViQ29yZS9H
cmFwaGljc0xheWVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvUmVuZGVyTGF5ZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyTGF5ZXJCYWNraW5nLmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL1JlbmRlck9iamVjdC5oPgotI2ltcG9ydCA8V2ViQ29yZS9TZXR0
aW5ncy5oPgotI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+Ci0KLXVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwotCi10eXBlZGVmIHZvaWQgKFdlYktpdDo6V2ViRnVsbFNjcmVlbk1hbmFn
ZXI6OipBbmltYXRpb25CZWdhbkZ1bmN0aW9uKSgpOwotdHlwZWRlZiB2b2lkIChXZWJLaXQ6Oldl
YkZ1bGxTY3JlZW5NYW5hZ2VyOjoqQW5pbWF0aW9uRmluaXNoZWRGdW5jdGlvbikoYm9vbCk7Ci0K
LSNpZiBkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCi1AaW50ZXJmYWNlIENBVHJhbnNhY3Rp
b24oU25vd0xlb3BhcmRDb252ZW5pZW5jZUZ1bmN0aW9ucykKLSsgKHZvaWQpc2V0RGlzYWJsZUFj
dGlvbnM6KEJPT0wpZmxhZzsKLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIENBVHJhbnNhY3Rpb24o
U25vd0xlb3BhcmRDb252ZW5pZW5jZUZ1bmN0aW9ucykKLSsgKHZvaWQpc2V0RGlzYWJsZUFjdGlv
bnM6KEJPT0wpZmxhZwotewotICAgIFtzZWxmIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRo
Qm9vbDpmbGFnXSBmb3JLZXk6a0NBVHJhbnNhY3Rpb25EaXNhYmxlQWN0aW9uc107Ci19Ci1AZW5k
Ci0jZW5kaWYKLQotQGludGVyZmFjZSBXS0Z1bGxTY3JlZW5NYW5hZ2VyQW5pbWF0aW9uTGlzdGVu
ZXIgOiBOU09iamVjdCB7Ci0gICAgV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlciogX21hbmFn
ZXI7Ci0gICAgQW5pbWF0aW9uQmVnYW5GdW5jdGlvbiBfYmVnYW47Ci0gICAgQW5pbWF0aW9uRmlu
aXNoZWRGdW5jdGlvbiBfZmluaXNoZWQ7Ci19Ci0tIChpZClpbml0V2l0aE1hbmFnZXI6KFdlYktp
dDo6V2ViRnVsbFNjcmVlbk1hbmFnZXIqKW1hbmFnZXIgYmVnYW46KEFuaW1hdGlvbkJlZ2FuRnVu
Y3Rpb24pYmVnYW4gZmluaXNoZWQ6KEFuaW1hdGlvbkZpbmlzaGVkRnVuY3Rpb24pZmluaXNoZWQ7
Ci0tICh2b2lkKWFuaW1hdGlvbkRpZFN0YXJ0OihDQUFuaW1hdGlvbiAqKWFuaW07Ci0tICh2b2lk
KWFuaW1hdGlvbkRpZFN0b3A6KENBQW5pbWF0aW9uICopYW5pbSBmaW5pc2hlZDooQk9PTClmbGFn
OwotLSAodm9pZClpbnZhbGlkYXRlOwotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gV0tGdWxsU2Ny
ZWVuTWFuYWdlckFuaW1hdGlvbkxpc3RlbmVyCi0tIChpZClpbml0V2l0aE1hbmFnZXI6KFdlYktp
dDo6V2ViRnVsbFNjcmVlbk1hbmFnZXIqKW1hbmFnZXIgYmVnYW46KEFuaW1hdGlvbkJlZ2FuRnVu
Y3Rpb24pYmVnYW4gZmluaXNoZWQ6KEFuaW1hdGlvbkZpbmlzaGVkRnVuY3Rpb24pZmluaXNoZWQK
LXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0
dXJuIG5pbDsKLQotICAgIF9tYW5hZ2VyID0gbWFuYWdlcjsKLSAgICBfYmVnYW4gPSBiZWdhbjsK
LSAgICBfZmluaXNoZWQgPSBmaW5pc2hlZDsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9p
ZClhbmltYXRpb25EaWRTdGFydDooQ0FBbmltYXRpb24gKilhbmltCi17Ci0gICAgaWYgKF9tYW5h
Z2VyICYmIF9iZWdhbikKLSAgICAgICAgKF9tYW5hZ2VyLT4qX2JlZ2FuKSgpOwotfQotCi0tICh2
b2lkKWFuaW1hdGlvbkRpZFN0b3A6KENBQW5pbWF0aW9uICopYW5pbSBmaW5pc2hlZDooQk9PTClm
bGFnCi17Ci0gICAgaWYgKF9tYW5hZ2VyICYmIF9maW5pc2hlZCkKLSAgICAgICAgKF9tYW5hZ2Vy
LT4qX2ZpbmlzaGVkKShmbGFnKTsKLX0KLQotLSAodm9pZClpbnZhbGlkYXRlCi17Ci0gICAgX21h
bmFnZXIgPSAwOwotICAgIF9iZWdhbiA9IDA7Ci0gICAgX2ZpbmlzaGVkID0gMDsKLX0KLUBlbmQK
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVBhc3NSZWZQdHI8V2ViRnVsbFNjcmVlbk1hbmFnZXI+
IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpjcmVhdGUoV2ViUGFnZSogcGFnZSkKLXsKLSAgICByZXR1
cm4gV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWM6OmNyZWF0ZShwYWdlKTsKLX0KLQotUGFzc1JlZlB0
cjxXZWJGdWxsU2NyZWVuTWFuYWdlck1hYz4gV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWM6OmNyZWF0
ZShXZWJQYWdlKiBwYWdlKQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViRnVsbFNjcmVl
bk1hbmFnZXJNYWMocGFnZSkpOwotfQotCi1XZWJGdWxsU2NyZWVuTWFuYWdlck1hYzo6V2ViRnVs
bFNjcmVlbk1hbmFnZXJNYWMoV2ViUGFnZSogcGFnZSkKLSAgICA6IFdlYkZ1bGxTY3JlZW5NYW5h
Z2VyKHBhZ2UpCi17Ci0gICAgbV9lbnRlckZ1bGxTY3JlZW5MaXN0ZW5lci5hZG9wdE5TKFtbV0tG
dWxsU2NyZWVuTWFuYWdlckFuaW1hdGlvbkxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aE1hbmFnZXI6
dGhpcyBiZWdhbjomV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWM6OmJlZ2FuRW50ZXJGdWxsU2NyZWVu
QW5pbWF0aW9uIGZpbmlzaGVkOiZXZWJGdWxsU2NyZWVuTWFuYWdlck1hYzo6ZmluaXNoZWRFbnRl
ckZ1bGxTY3JlZW5BbmltYXRpb25dKTsKLSAgICBtX2V4aXRGdWxsU2NyZWVuTGlzdGVuZXIuYWRv
cHROUyhbW1dLRnVsbFNjcmVlbk1hbmFnZXJBbmltYXRpb25MaXN0ZW5lciBhbGxvY10gaW5pdFdp
dGhNYW5hZ2VyOnRoaXMgYmVnYW46JldlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjOjpiZWdhbkV4aXRG
dWxsU2NyZWVuQW5pbWF0aW9uIGZpbmlzaGVkOiZXZWJGdWxsU2NyZWVuTWFuYWdlck1hYzo6Zmlu
aXNoZWRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbl0pOwotfQotCi1XZWJGdWxsU2NyZWVuTWFuYWdl
ck1hYzo6fldlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjKCkKLXsKLSAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OkV4aXRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZSgpKTsKLSAgICBbbV9lbnRlckZ1bGxTY3JlZW5MaXN0ZW5lci5nZXQoKSBpbnZhbGlk
YXRlXTsKLSAgICBbbV9leGl0RnVsbFNjcmVlbkxpc3RlbmVyLmdldCgpIGludmFsaWRhdGVdOwot
fQotCi12b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjOjpzZXRSb290RnVsbFNjcmVlbkxheWVy
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGxheWVyKQotewotICAgIGlmICghbV9yb290TGF5ZXIg
JiYgIWxheWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIWxheWVyKSB7Ci0gICAgICAg
IFBsYXRmb3JtTGF5ZXIqIHJvb3RQbGF0Zm9ybUxheWVyID0gbV9yb290TGF5ZXItPnBsYXRmb3Jt
TGF5ZXIoKTsKLSAgICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBw
b3N0Tm90aWZpY2F0aW9uTmFtZTpAIldlYktpdExheWVySG9zdENoYW5nZWQiIG9iamVjdDpyb290
UGxhdGZvcm1MYXllciB1c2VySW5mbzpuaWxdOwotICAgICAgICBtX3Jvb3RMYXllci0+cmVtb3Zl
QWxsQ2hpbGRyZW4oKTsKLSAgICAgICAgbV9yb290TGF5ZXItPnN5bmNDb21wb3NpdGluZ1N0YXRl
Rm9yVGhpc0xheWVyT25seSgpOwotICAgICAgICBtX3Jvb3RMYXllciA9IG51bGxwdHI7Ci0KLSAg
ICAgICAgbV9wYWdlLT5mb3JjZVJlcGFpbnRXaXRob3V0Q2FsbGJhY2soKTsKLSAgICAgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpFeGl0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ01vZGUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAobV9yb290TGF5ZXIgJiYgbV9yb290TGF5ZXItPmNoaWxkcmVuKCkuY29udGFpbnMobGF5ZXIp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1fcm9vdExheWVyKSB7Ci0gICAgICAgIG1h
Y2hfcG9ydF90IHNlcnZlclBvcnQgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb21wb3NpdGluZ1Jl
bmRlclNlcnZlclBvcnQoKTsKLSAgICAgICAgbV9yZW1vdGVMYXllckNsaWVudCA9IFdLQ0FSZW1v
dGVMYXllckNsaWVudE1ha2VXaXRoU2VydmVyUG9ydChzZXJ2ZXJQb3J0KTsKLQotICAgICAgICBt
X3Jvb3RMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShOVUxMKTsKLSNpZm5kZWYgTkRFQlVH
Ci0gICAgICAgIG1fcm9vdExheWVyLT5zZXROYW1lKCJGdWxsIHNjcmVlbiByb290IGxheWVyIik7
Ci0jZW5kaWYKLSAgICAgICAgbV9yb290TGF5ZXItPnNldERyYXdzQ29udGVudChmYWxzZSk7Ci0g
ICAgICAgIG1fcm9vdExheWVyLT5zZXRTaXplKGdldEZ1bGxTY3JlZW5SZWN0KCkuc2l6ZSgpKTsK
LQotICAgICAgICBbbV9yb290TGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSBzZXRHZW9tZXRyeUZsaXBw
ZWQ6WUVTXTsKLSAgICAgICAgV0tDQVJlbW90ZUxheWVyQ2xpZW50U2V0TGF5ZXIobV9yZW1vdGVM
YXllckNsaWVudC5nZXQoKSwgbV9yb290TGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSk7Ci0gICAgICAg
IG1fbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQgPSBXS0NBUmVtb3RlTGF5ZXJDbGllbnRHZXRD
bGllbnRJZChtX3JlbW90ZUxheWVyQ2xpZW50LmdldCgpKTsKLSAgICAgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpFbnRlckFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdNb2RlKG1fbGF5ZXJUcmVlQ29udGV4dCkpOwotICAgIH0KLQotICAgIFtDQVRyYW5z
YWN0aW9uIGJlZ2luXTsKLSAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0aW9uczpZRVNd
OwotICAgIG1fcm9vdExheWVyLT5yZW1vdmVBbGxDaGlsZHJlbigpOwotICAgIG1fcm9vdExheWVy
LT5hZGRDaGlsZChsYXllcik7Ci0gICAgbV9yb290TGF5ZXItPnN5bmNDb21wb3NpdGluZ1N0YXRl
KGdldEZ1bGxTY3JlZW5SZWN0KCkpOwotICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07Ci0KLSAg
ICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25O
YW1lOkAiV2ViS2l0TGF5ZXJIb3N0Q2hhbmdlZCIgb2JqZWN0Om1fcm9vdExheWVyLT5wbGF0Zm9y
bUxheWVyKCkgdXNlckluZm86bmlsXTsKLX0KLQotdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlck1h
Yzo6ZGlzcG9zZU9mTGF5ZXJDbGllbnQoKQotewotICAgIGlmICghbV9yZW1vdGVMYXllckNsaWVu
dCkKLSAgICAgICAgcmV0dXJuOwotICAgIFdLQ0FSZW1vdGVMYXllckNsaWVudFNldExheWVyKG1f
cmVtb3RlTGF5ZXJDbGllbnQuZ2V0KCksIDApOwotICAgIFdLQ0FSZW1vdGVMYXllckNsaWVudElu
dmFsaWRhdGUobV9yZW1vdGVMYXllckNsaWVudC5nZXQoKSk7Ci0gICAgbV9yZW1vdGVMYXllckNs
aWVudCA9IG51bGxwdHI7Ci19Ci0KLXZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWM6OmJlZ2lu
RW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uKGZsb2F0IGR1cmF0aW9uKQotewotICAgIEFTU0VSVCht
X2VsZW1lbnQpOwotICAgIAotICAgIGlmICghbV9yb290TGF5ZXIgfHwgbV9yb290TGF5ZXItPmNo
aWxkcmVuKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSByb290
IGxheWVyLCB3ZSBjYW4ndCBhbmltYXRlIGluIGFuZCBvdXQgb2YgZnVsbCBzY3JlZW4KLSAgICAg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpFbnRl
ckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKG1fbGF5ZXJUcmVlQ29udGV4dCkpOwotICAgICAg
ICB0aGlzLT5iZWdhbkVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbigpOwotICAgICAgICB0aGlzLT5m
aW5pc2hlZEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbih0cnVlKTsKLSAgICAgICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpFeGl0QWNjZWxlcmF0ZWRD
b21wb3NpdGluZ01vZGUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBJbnRSZWN0
IGRlc3RpbmF0aW9uRnJhbWUgPSBnZXRGdWxsU2NyZWVuUmVjdCgpOwotICAgIG1fZWxlbWVudC0+
ZG9jdW1lbnQoKS0+c2V0RnVsbFNjcmVlblJlbmRlcmVyU2l6ZShkZXN0aW5hdGlvbkZyYW1lLnNp
emUoKSk7Ci0gICAgbV9yb290TGF5ZXItPnN5bmNDb21wb3NpdGluZ1N0YXRlKGRlc3RpbmF0aW9u
RnJhbWUpOwotCi0gICAgLy8gRklYTUU6IE9uY2Ugd2UgZ2FpbiB0aGUgYWJpbGl0eSB0byBkbyBu
YXRpdmUgV2ViS2l0IGFuaW1hdGlvbnMgb2YgZ2VuZXJhdGVkCi0gICAgLy8gY29udGVudCwgdGhp
cyBjYW4gY2hhbmdlIHRvIHVzZSB0aGVtLiAgTWVhbndoaWxlLCB3ZSdsbCBoYXZlIHRvIGFuaW1h
dGUgdGhlCi0gICAgLy8gQ0FMYXllciBkaXJlY3RseS4KLSAgICBhbmltYXRlRnVsbFNjcmVlbih3
aW5kb3dlZENHVHJhbnNmb3JtKCksIENBVHJhbnNmb3JtM0RJZGVudGl0eSwgZHVyYXRpb24sIG1f
ZW50ZXJGdWxsU2NyZWVuTGlzdGVuZXIuZ2V0KCkpOwotfQotCi12b2lkIFdlYkZ1bGxTY3JlZW5N
YW5hZ2VyTWFjOjpiZWdpbkV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uKGZsb2F0IGR1cmF0aW9uKQot
ewotICAgIEFTU0VSVChtX2VsZW1lbnQpOwotICAgIAotICAgIGlmICghbV9yb290TGF5ZXIgfHwg
bV9yb290TGF5ZXItPmNoaWxkcmVuKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIC8vIElmIHdlIGRv
bid0IGhhdmUgYSByb290IGxheWVyLCB3ZSBjYW4ndCBhbmltYXRlIGluIGFuZCBvdXQgb2YgZnVs
bCBzY3JlZW4KLSAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFu
YWdlclByb3h5OjpFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKG1fbGF5ZXJUcmVlQ29u
dGV4dCkpOwotICAgICAgICB0aGlzLT5iZWdhbkV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uKCk7Ci0g
ICAgICAgIHRoaXMtPmZpbmlzaGVkRXhpdEZ1bGxTY3JlZW5BbmltYXRpb24odHJ1ZSk7Ci0gICAg
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6RXhp
dEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgSW50UmVjdCBkZXN0aW5hdGlvbkZyYW1lID0gZ2V0RnVsbFNjcmVlblJlY3QoKTsKLSAg
ICBtX2VsZW1lbnQtPmRvY3VtZW50KCktPnNldEZ1bGxTY3JlZW5SZW5kZXJlclNpemUoZGVzdGlu
YXRpb25GcmFtZS5zaXplKCkpOwotICAgIG1fcm9vdExheWVyLT5zeW5jQ29tcG9zaXRpbmdTdGF0
ZShkZXN0aW5hdGlvbkZyYW1lKTsKLQotICAgIC8vIEZJWE1FOiBPbmNlIHdlIGdhaW4gdGhlIGFi
aWxpdHkgdG8gZG8gbmF0aXZlIFdlYktpdCBhbmltYXRpb25zIG9mIGdlbmVyYXRlZAotICAgIC8v
IGNvbnRlbnQsIHRoaXMgY2FuIGNoYW5nZSB0byB1c2UgdGhlbS4gIE1lYW53aGlsZSwgd2UnbGwg
aGF2ZSB0byBhbmltYXRlIHRoZQotICAgIC8vIENBTGF5ZXIgZGlyZWN0bHkuCi0gICAgQ0FMYXll
ciogY2FMYXllciA9IG1fcm9vdExheWVyLT5jaGlsZHJlbigpLmZpcnN0KCktPnBsYXRmb3JtTGF5
ZXIoKTsKLSAgICBDQUxheWVyKiBwcmVzZW50YXRpb25MYXllciA9IFtjYUxheWVyIHByZXNlbnRh
dGlvbkxheWVyXSA/IChDQUxheWVyKilbY2FMYXllciBwcmVzZW50YXRpb25MYXllcl0gOiBjYUxh
eWVyOwotICAgIGFuaW1hdGVGdWxsU2NyZWVuKFtwcmVzZW50YXRpb25MYXllciB0cmFuc2Zvcm1d
LCB3aW5kb3dlZENHVHJhbnNmb3JtKCksIGR1cmF0aW9uLCBtX2V4aXRGdWxsU2NyZWVuTGlzdGVu
ZXIuZ2V0KCkpOwotfQotCi12b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjOjphbmltYXRlRnVs
bFNjcmVlbihjb25zdCBDQVRyYW5zZm9ybTNEJiBzdGFydFRyYW5zZm9ybSwgY29uc3QgQ0FUcmFu
c2Zvcm0zRCYgZW5kVHJhbnNmb3JtLCBmbG9hdCBkdXJhdGlvbiwgaWQgbGlzdGVuZXIpCi17Ci0g
ICAgLy8gVGhpcyBpcyB0aGUgZnVsbCBzaXplIG9mIHRoZSBzY3JlZW4uCi0gICAgSW50UmVjdCBm
dWxsU2NyZWVuUmVjdCA9IGdldEZ1bGxTY3JlZW5SZWN0KCk7ICAgIAotICAgIENBTGF5ZXIqIGNh
TGF5ZXIgPSBtX3Jvb3RMYXllci0+Y2hpbGRyZW4oKS5maXJzdCgpLT5wbGF0Zm9ybUxheWVyKCk7
Ci0KLSAgICAvLyBUaGlzIGFuaW1hdGlvbiByZXByZXNlbnRzIHRoZSB6b29tIGVmZmVjdC4KLSAg
ICBDQUJhc2ljQW5pbWF0aW9uKiB6b29tQW5pbWF0aW9uID0gW0NBQmFzaWNBbmltYXRpb24gYW5p
bWF0aW9uV2l0aEtleVBhdGg6QCJ0cmFuc2Zvcm0iXTsKLSAgICBbem9vbUFuaW1hdGlvbiBzZXRG
cm9tVmFsdWU6W05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDpzdGFydFRyYW5zZm9ybV1d
OwotICAgIFt6b29tQW5pbWF0aW9uIHNldFRvVmFsdWU6W05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFu
c2Zvcm0zRDplbmRUcmFuc2Zvcm1dXTsKLSAgICAKLSAgICAvLyBUaGlzIGFuaW1hdGlvbiBwcm92
aWRlcyBhIHBvc2l0aW9uIGNvcnJlY3Rpb24gdG8gdGhlIENBTGF5ZXIsIHdoaWNoIG1pZ2h0IGJl
IG9mZnNldCBiYXNlZCBvbiB0aGUgcGFnZSdzCi0gICAgLy8gc2Nyb2xsIHBvc2l0aW9uLiBXZSBh
bmltYXRlIGl0IGluc3RlYWQgb2YganVzdCBzZXR0aW5nIHRoZSBwcm9wZXJ0eSBiZWNhdXNlIG90
aGVycyBtaWdodCB0cnkgdG8KLSAgICAvLyBhbHRlciBpdHMgcG9zaXRpb24gd2hpbGUgdGhlIGFu
aW1hdGlvbiBpcyBwbGF5aW5nLgotICAgIENHUG9pbnQgbGF5ZXJBbmNob3IgPSBbY2FMYXllciBh
bmNob3JQb2ludF07Ci0gICAgQ0dQb2ludCBmdWxsU2NyZWVuUG9zaXRpb24gPSBDR1BvaW50TWFr
ZSgKLSAgICAgICAgZnVsbFNjcmVlblJlY3QueCgpICsgZnVsbFNjcmVlblJlY3Qud2lkdGgoKSAq
IGxheWVyQW5jaG9yLngsCi0gICAgICAgIGZ1bGxTY3JlZW5SZWN0LnkoKSArIGZ1bGxTY3JlZW5S
ZWN0LmhlaWdodCgpICogbGF5ZXJBbmNob3IueSk7Ci0gICAgQ0FCYXNpY0FuaW1hdGlvbiogcG9z
aXRpb25Db3JyZWN0aW9uID0gW0NBQmFzaWNBbmltYXRpb24gYW5pbWF0aW9uV2l0aEtleVBhdGg6
QCJwb3NpdGlvbiJdOwotICAgIFtwb3NpdGlvbkNvcnJlY3Rpb24gc2V0RnJvbVZhbHVlOltOU1Zh
bHVlIHZhbHVlV2l0aFBvaW50Ok5TUG9pbnRGcm9tQ0dQb2ludChmdWxsU2NyZWVuUG9zaXRpb24p
XV07Ci0gICAgW3Bvc2l0aW9uQ29ycmVjdGlvbiBzZXRUb1ZhbHVlOltOU1ZhbHVlIHZhbHVlV2l0
aFBvaW50Ok5TUG9pbnRGcm9tQ0dQb2ludChmdWxsU2NyZWVuUG9zaXRpb24pXV07Ci0gICAgCi0g
ICAgLy8gV2Ugd2FudCB0byBiZSBub3RpZmllZCB0aGF0IHRoZSBhbmltYXRpb24gaGFzIGNvbXBs
ZXRlZCBieSB3YXkgb2YgdGhlIENBQW5pbWF0aW9uIGRlbGVnYXRlLgotICAgIENBQW5pbWF0aW9u
R3JvdXAqIHRyYW5zaXRpb25BbmltYXRpb24gPSBbQ0FBbmltYXRpb25Hcm91cCBhbmltYXRpb25d
OwotICAgIFt0cmFuc2l0aW9uQW5pbWF0aW9uIHNldEFuaW1hdGlvbnM6W05TQXJyYXkgYXJyYXlX
aXRoT2JqZWN0czp6b29tQW5pbWF0aW9uLCBwb3NpdGlvbkNvcnJlY3Rpb24sIG5pbF1dOwotICAg
IFt0cmFuc2l0aW9uQW5pbWF0aW9uIHNldERlbGVnYXRlOmxpc3RlbmVyXTsKLSAgICBbdHJhbnNp
dGlvbkFuaW1hdGlvbiBzZXREdXJhdGlvbjpkdXJhdGlvbl07Ci0gICAgW3RyYW5zaXRpb25Bbmlt
YXRpb24gc2V0VGltaW5nRnVuY3Rpb246W0NBTWVkaWFUaW1pbmdGdW5jdGlvbiBmdW5jdGlvbldp
dGhOYW1lOmtDQU1lZGlhVGltaW5nRnVuY3Rpb25FYXNlSW5FYXNlT3V0XV07Ci0gICAgW3RyYW5z
aXRpb25BbmltYXRpb24gc2V0RmlsbE1vZGU6a0NBRmlsbE1vZGVGb3J3YXJkc107Ci0gICAgW3Ry
YW5zaXRpb25BbmltYXRpb24gc2V0UmVtb3ZlZE9uQ29tcGxldGlvbjpOT107Ci0gICAgCi0gICAg
Ly8gRGlzYWJsZSBpbXBsaWNpdCBhbmltYXRpb25zIGFuZCBzZXQgdGhlIGxheWVyJ3MgdHJhbnNm
b3JtYXRpb24gbWF0cml4IHRvIGl0cyBmaW5hbCBzdGF0ZS4KLSAgICBbQ0FUcmFuc2FjdGlvbiBi
ZWdpbl07Ci0gICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKLSAgICBb
Y2FMYXllciBhZGRBbmltYXRpb246dHJhbnNpdGlvbkFuaW1hdGlvbiBmb3JLZXk6QCJ6b29tIl07
Ci0gICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKLX0KLQotQ0FUcmFuc2Zvcm0zRCBXZWJGdWxs
U2NyZWVuTWFuYWdlck1hYzo6d2luZG93ZWRDR1RyYW5zZm9ybSgpCi17Ci0gICAgSW50UmVjdCBm
dWxsU2NyZWVuUmVjdCA9IGdldEZ1bGxTY3JlZW5SZWN0KCk7Ci0gICAgUmVuZGVyTGF5ZXIqIGxh
eWVyID0gbV9lbGVtZW50LT5yZW5kZXJlcigpID8gbV9lbGVtZW50LT5yZW5kZXJlcigpLT5lbmNs
b3NpbmdMYXllcigpIDogMDsKLSAgICBSZW5kZXJMYXllckJhY2tpbmcqIGJhY2tpbmcgPSBsYXll
ciA/IGxheWVyLT5iYWNraW5nKCkgOiAwOwotICAgIEludFNpemUgZnVsbFNjcmVlblNpemUgPSBm
dWxsU2NyZWVuUmVjdC5zaXplKCk7Ci0gICAgaWYgKGJhY2tpbmcpCi0gICAgICAgIGZ1bGxTY3Jl
ZW5TaXplID0gYmFja2luZy0+Y29udGVudHNCb3goKS5zaXplKCk7Ci0KLSAgICBDQUxheWVyKiBj
YUxheWVyID0gbV9yb290TGF5ZXItPmNoaWxkcmVuKCkuZmlyc3QoKS0+cGxhdGZvcm1MYXllcigp
OwotCi0gICAgLy8gQ3JlYXRlIGEgdHJhbnNmb3JtYXRpb24gbWF0cml4IHRoYXQgd2lsbCB0cmFu
c2Zvcm0gdGhlIHJlbmRlcmVyIGxheWVyIHN1Y2ggdGhhdAotICAgIC8vIHRoZSBmdWxsc2NyZWVu
IGVsZW1lbnQgYXBwZWFycyB0byBtb3ZlIGZyb20gaXRzIHN0YXJ0aW5nIHBvc2l0aW9uIGFuZCBz
aXplIHRvIGl0cwotICAgIC8vIGZpbmFsIG9uZS4KLSAgICBDR1BvaW50IGxheWVyQW5jaG9yID0g
W2NhTGF5ZXIgYW5jaG9yUG9pbnRdOwotICAgIENHUG9pbnQgZnVsbFNjcmVlblBvc2l0aW9uID0g
Q0dQb2ludE1ha2UoCi0gICAgICAgIGZ1bGxTY3JlZW5SZWN0LngoKSArIGZ1bGxTY3JlZW5SZWN0
LndpZHRoKCkgKiBsYXllckFuY2hvci54LAotICAgICAgICBmdWxsU2NyZWVuUmVjdC55KCkgKyBm
dWxsU2NyZWVuUmVjdC5oZWlnaHQoKSAqIGxheWVyQW5jaG9yLnkpOyAvL1twcmVzZW50YXRpb25M
YXllciBwb3NpdGlvbl07Ci0gICAgQ0dQb2ludCB3aW5kb3dlZFBvc2l0aW9uID0gQ0dQb2ludE1h
a2UoCi0gICAgICAgIG1faW5pdGlhbEZyYW1lLngoKSArIG1faW5pdGlhbEZyYW1lLndpZHRoKCkg
KiBsYXllckFuY2hvci54LAotICAgICAgICBtX2luaXRpYWxGcmFtZS55KCkgKyBtX2luaXRpYWxG
cmFtZS5oZWlnaHQoKSAqIGxheWVyQW5jaG9yLnkpOwotICAgIENBVHJhbnNmb3JtM0Qgc2hyaW5r
VHJhbnNmb3JtID0gQ0FUcmFuc2Zvcm0zRE1ha2VTY2FsZSgKLSAgICAgICAgc3RhdGljX2Nhc3Q8
Q0dGbG9hdD4obV9pbml0aWFsRnJhbWUud2lkdGgoKSkgLyBmdWxsU2NyZWVuU2l6ZS53aWR0aCgp
LAotICAgICAgICBzdGF0aWNfY2FzdDxDR0Zsb2F0PihtX2luaXRpYWxGcmFtZS5oZWlnaHQoKSkg
LyBmdWxsU2NyZWVuU2l6ZS5oZWlnaHQoKSwgMSk7Ci0gICAgQ0FUcmFuc2Zvcm0zRCBzaGlmdFRy
YW5zZm9ybSA9IENBVHJhbnNmb3JtM0RNYWtlVHJhbnNsYXRpb24oCi0gICAgICAgIHdpbmRvd2Vk
UG9zaXRpb24ueCAtIGZ1bGxTY3JlZW5Qb3NpdGlvbi54LAotICAgICAgICAvLyBEcmF3aW5nIGlz
IGZsaXBwZWQgaGVyZSwgYW5kIHNvIG11c3QgYmUgdGhlIHRyYW5zbGF0aW9uIHRyYW5zZm9ybWF0
aW9uCi0gICAgICAgIGZ1bGxTY3JlZW5Qb3NpdGlvbi55IC0gd2luZG93ZWRQb3NpdGlvbi55LCAw
KTsKLSAgICAKLSAgICByZXR1cm4gQ0FUcmFuc2Zvcm0zRENvbmNhdChzaHJpbmtUcmFuc2Zvcm0s
IHNoaWZ0VHJhbnNmb3JtKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAv
LyBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0Z1bGxTY3JlZW4vcXQvV2ViRnVsbFNjcmVlbk1hbmFnZXJRdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vcXQvV2ViRnVsbFNjcmVlbk1hbmFnZXJRdC5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0NjdlNTY2MWNhM2ViZTFlMzExNjdh
OWNiZDE1MGI3OGQyMmNmNGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL3F0L1dlYkZ1bGxT
Y3JlZW5NYW5hZ2VyUXQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoK
LSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkZ1
bGxTY3JlZW5NYW5hZ2VyUXQuaCIKLQotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLQotI2lu
Y2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LVdlYkZ1bGxTY3JlZW5NYW5hZ2VyUXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUXQoV2ViUGFnZSog
cGFnZSkKLSAgICA6IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyKHBhZ2UpCi17Ci19Ci0KLVBhc3NSZWZQ
dHI8V2ViRnVsbFNjcmVlbk1hbmFnZXI+IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpjcmVhdGUoV2Vi
UGFnZSogcGFnZSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkZ1bGxTY3JlZW5NYW5h
Z2VyUXQocGFnZSkpOwotfQotCi12b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUXQ6OnNldFJvb3RG
dWxsU2NyZWVuTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciogbGF5ZXIpCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclF0OjpiZWdpbkVu
dGVyRnVsbFNjcmVlbkFuaW1hdGlvbihmbG9hdCBkdXJhdGlvbikKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi12b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUXQ6OmJlZ2luRXhpdEZ1bGxT
Y3JlZW5BbmltYXRpb24oZmxvYXQgZHVyYXRpb24pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoRlVMTFNDUkVF
Tl9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4v
cXQvV2ViRnVsbFNjcmVlbk1hbmFnZXJRdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9G
dWxsU2NyZWVuL3F0L1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUXQuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggODI4MWYzNmY4N2Q1MTQ0Y2EzNDZhNmVkM2M3MTUzZTg1Y2EzNWIxYi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vcXQvV2ViRnVsbFNjcmVlbk1hbmFnZXJRdC5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBXZWJGdWxsU2NyZWVuTWFuYWdlclF0X2gKLSNkZWZpbmUgV2ViRnVsbFNjcmVlbk1hbmFn
ZXJRdF9oCi0KLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0KLSNpbmNsdWRlICJXZWJGdWxs
U2NyZWVuTWFuYWdlci5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViRnVsbFNj
cmVlbk1hbmFnZXJRdCA6IHB1YmxpYyBXZWJGdWxsU2NyZWVuTWFuYWdlciB7Ci1wdWJsaWM6Ci0g
ICAgV2ViRnVsbFNjcmVlbk1hbmFnZXJRdChXZWJQYWdlKik7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFJvb3RGdWxsU2NyZWVuTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopOwotCi1wcml2YXRl
OgotICAgIHZpcnR1YWwgdm9pZCBiZWdpbkVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbihmbG9hdCBk
dXJhdGlvbik7Ci0gICAgdmlydHVhbCB2b2lkIGJlZ2luRXhpdEZ1bGxTY3JlZW5BbmltYXRpb24o
ZmxvYXQgZHVyYXRpb24pOwotCi19OwotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoRlVMTFNDUkVF
Tl9BUEkpCi0KLSNlbmRpZiAvLyBXZWJGdWxsU2NyZWVuTWFuYWdlclF0X2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcAppbmRleCA1YTQ4ZmZmODcxZjllZThkOTI5M2M4YmRmNWY5MmU4M2UwYzk1NmI4
Li41NGVmZDljMzQ5Zjk2YzdiNWJhY2VhZWE4NmM0NzA2OGY2YTcyNDQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwCkBAIC03MjcsMTIgKzcyNyw2IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpl
eGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCkKIHsKICAg
ICBtX3BhZ2UtPmZ1bGxTY3JlZW5NYW5hZ2VyKCktPmV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChl
bGVtZW50KTsKIH0KLSAgICAKLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRSb290RnVsbFNjcmVl
bkxheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQotewotICAgIG1fcGFnZS0+ZnVsbFNjcmVlbk1h
bmFnZXIoKS0+c2V0Um9vdEZ1bGxTY3JlZW5MYXllcihsYXllcik7Ci19Ci0KICNlbmRpZgogCiB2
b2lkIFdlYkNocm9tZUNsaWVudDo6ZGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNEaWRDaGFuZ2Uo
Y29uc3QgVmlld3BvcnRBcmd1bWVudHMmIGFyZ3MpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApp
bmRleCBkZDY4ZTFmOWJkZDMzOTkyMjE1MmVjM2UwYTVlYTM0YTA1MWE4ZWM2Li44OTg1ZTQ5MDY5
Y2JhYTI2YThhODA4MzUzYTU5MjI5M2E3NmIxNDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAg
LTIwNiw3ICsyMDYsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0Z1bGxT
Y3JlZW5Gb3JFbGVtZW50KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnQqLCBib29sIHdpdGhLZXlib2Fy
ZCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQo
V2ViQ29yZTo6RWxlbWVudCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbFNj
cmVlbkZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCopIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRSb290RnVsbFNjcmVlbkxheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBPVkVS
UklERTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127850</attachid>
            <date>2012-02-20 14:27:37 -0800</date>
            <delta_ts>2012-02-21 11:25:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78926-20120220142736.patch</filename>
            <type>text/plain</type>
            <size>57932</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MjU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYWFiNzdmYmU2NzQwMjJk
OGE4NTc1ZTQ4MWZiYjkzNTY1ZTRmZGVlYi4uZDc2NTY2MTE5ZTRhNDA1YThlYTk3NTc2YWI4MGZm
NTFlZWViZmJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTAyLTIwICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEZ1bGwgU2NyZWVuIFJlZmFj
dG9yIFBhcnQgMjogUmVtb3ZlIHVubmVjZXNzYXJ5IFdlYktpdDIgQVBJcyBmb3IgRnVsbCBTY3Jl
ZW4gbWFkZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Nzg5MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyAoYW5kIGFsc28gdGhlaXIgUHJveHkgdmVyc2lvbnMpIHdl
cmUgcmVtb3ZlZCBjb21wbGV0ZWx5OgorICAgICAgICBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6ZW50
ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0JikKKyAg
ICAgICAgV2ViRnVsbFNjcmVlbk1hbmFnZXI6OmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9k
ZSgpCisgICAgICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpiZWdhbkVudGVyRnVsbFNjcmVlbkFu
aW1hdGlvbigpCisgICAgICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpmaW5pc2hlZEVudGVyRnVs
bFNjcmVlbkFuaW1hdGlvbihib29sKQorICAgICAgICBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6YmVn
YW5FeGl0RnVsbFNjcmVlbkFuaW1hdGlvbigpCisgICAgICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2Vy
OjpmaW5pc2hlZEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uKGJvb2wpCisgICAgICAgIFdlYkZ1bGxT
Y3JlZW5NYW5hZ2VyOjpnZXRGdWxsU2NyZWVuUmVjdChXZWJDb3JlOjpJbnRSZWN0JikKKworICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0
OjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpiZWdpbkVudGVyRnVsbFNjcmVlbkFuaW1hdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmJlZ2luRXhp
dEZ1bGxTY3JlZW5BbmltYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFu
YWdlclByb3h5OjpkaXNwb3NlT2ZMYXllckNsaWVudCk6CisgICAgICAgIChXZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQ
cm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYkZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHlHdGsuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eU1hYy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvV2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eVF0LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHlXaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFu
YWdlclByb3h5OjpmaW5pc2hlZEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uKToKKyAgICAgICAgKiBX
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9G
dWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnVsbFNjcmVlbk1hbmFnZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyOjp+V2ViRnVsbFNjcmVlbk1hbmFnZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
RnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5oOgorICAgICAgICAoV2ViRnVsbFNjcmVl
bk1hbmFnZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVu
TWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6
ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50KToKKwor
ICAgICAgICBBZGRpdGlvbmFsbHksIHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBXZWJGdWxsU2NyZWVu
TWFuYWdlciBzdWJjbGFzc2VzIHdlcmUgcmVtb3ZlZCwgYXMgbm8KKyAgICAgICAgcGxhdGZvcm0t
c3BlY2lmaWMgaW1wbGVtZW50YXRpb25zIHJlbWFpbmVkIGFmdGVyIHRoZSBhYm92ZSBmdW5jdGlv
bnMgd2VyZSByZW1vdmVkOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFRh
cmdldC5wcmk6CisgICAgICAgICogd2luL1dlYktpdDIudmNwcm9qOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvRnVsbFNjcmVlbi9ndGsvV2ViRnVsbFNjcmVlbk1hbmFnZXJHdGsuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvRnVsbFNjcmVlbi9ndGsvV2ViRnVsbFNjcmVlbk1hbmFn
ZXJHdGsuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0Z1bGxTY3JlZW4vbWFjL1dl
YkZ1bGxTY3JlZW5NYW5hZ2VyTWFjLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9G
dWxsU2NyZWVuL21hYy9XZWJGdWxsU2NyZWVuTWFuYWdlck1hYy5tbTogUmVtb3ZlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0Z1bGxTY3JlZW4vcXQvV2ViRnVsbFNjcmVlbk1hbmFnZXJRdC5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL3F0L1dlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUXQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0Z1bGxTY3JlZW4v
d2luL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyV2luLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0Z1bGxTY3JlZW4vd2luL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyV2luLmg6IFJlbW92ZWQu
CisKIDIwMTItMDItMDkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtHVEtdIEFkZCBXZWJLaXRXZWJWaWV3Ojptb3VzZS10YXJnZXQtY2hhbmdl
ZCBzaWduYWwgdG8gV2ViS2l0MiBHVEsrIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
R05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRleCAzYjhl
N2JkYTI5YjUwZDQ0ZTE4YTExMDM0M2NlMTUyODA1ZWRlMTY0Li42ZDc2MThhNWNmOWVmM2NjOTQ0
NDZmZWMwNzBmMmYyYWI2MWNjZWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtl
ZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpAQCAtNzU2LDggKzc1
Niw2IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJ
VEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfU09VCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuaCBcCi0JU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL2d0ay9XZWJGdWxsU2NyZWVuTWFuYWdl
ckd0ay5jcHAgXAotCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9ndGsvV2Vi
RnVsbFNjcmVlbk1hbmFnZXJHdGsuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HZW9s
b2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAgXAogCVNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9X
ZWJHZW9sb2NhdGlvbk1hbmFnZXIuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Rh
cmdldC5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCmluZGV4IGNlZGU0ZWE2N2MwYTE5
NWExZTYwNWJjN2Y5OTRkOTA2YWY0ODA5OWIuLmQxZjk0OWNjZjAzOGVjYjg2M2JmNDNhZGM4NDhh
OWMyZDc5YTZmNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKKysrIGIv
U291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQpAQCAtMjgwLDcgKzI4MCw2IEBAIEhFQURFUlMgKz0g
XAogICAgIFdlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oIFwKICAgICBXZWJQ
cm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmggXAogICAgIFdlYlByb2Nlc3Mv
RnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5oIFwKLSAgICBXZWJQcm9jZXNzL0Z1bGxT
Y3JlZW4vcXQvV2ViRnVsbFNjcmVlbk1hbmFnZXJRdC5oIFwKICAgICBXZWJQcm9jZXNzL0dlb2xv
Y2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmggXAogICAgIFdlYlBy
b2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmggXAogICAgIFdlYlByb2Nl
c3MvSWNvbkRhdGFiYXNlL1dlYkljb25EYXRhYmFzZVByb3h5LmggXApAQCAtNjE1LDcgKzYxNCw2
IEBAIFNPVVJDRVMgKz0gXAogICAgIFdlYlByb2Nlc3MvRG93bmxvYWRzL3F0L0Rvd25sb2FkUXQu
Y3BwIFwKICAgICBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmNwcCBc
CiAgICAgV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcCBcCi0g
ICAgV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL3F0L1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUXQuY3BwIFwK
ICAgICBXZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1h
bmFnZXIuY3BwIFwKICAgICBXZWJQcm9jZXNzL0ljb25EYXRhYmFzZS9XZWJJY29uRGF0YWJhc2VQ
cm94eS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZ1bGxT
Y3JlZW5NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZ1bGxT
Y3JlZW5NYW5hZ2VyUHJveHkuY3BwCmluZGV4IDcyOWI2MmU5ZGM1NzY2NzRkM2ZlMzAzNmQzYTA1
M2U5YjIxNGY4YzMuLmVkZTExOTFjM2M0NWQ1Y2M3ZjFlNTM3OGNkNTJhOWVhOTVmYzRiNzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eS5jcHAKQEAgLTg0LDIwICs4NCw2IEBAIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQ
cm94eTo6ZGlkRXhpdEZ1bGxTY3JlZW4oKQogICAgIG1fcGFnZS0+cHJvY2VzcygpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6RGlkRXhpdEZ1bGxTY3JlZW4oKSwgbV9wYWdl
LT5wYWdlSUQoKSk7CiB9CiAKLXZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6YmVnaW5F
bnRlckZ1bGxTY3JlZW5BbmltYXRpb24oZmxvYXQgZHVyYXRpb24pCi17Ci0gICAgbV9wYWdlLT5w
cm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpCZWdpbkVudGVy
RnVsbFNjcmVlbkFuaW1hdGlvbihkdXJhdGlvbiksIG1fcGFnZS0+cGFnZUlEKCkpOwotfQotCi12
b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmJlZ2luRXhpdEZ1bGxTY3JlZW5BbmltYXRp
b24oZmxvYXQgZHVyYXRpb24pCi17Ci0gICAgbV9wYWdlLT5wcm9jZXNzKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpCZWdpbkV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uKGR1
cmF0aW9uKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19Ci0KLXZvaWQgV2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eTo6ZGlzcG9zZU9mTGF5ZXJDbGllbnQoKQotewotICAgIG1fcGFnZS0+cHJvY2Vzcygp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6RGlzcG9zZU9mTGF5ZXJDbGll
bnQoKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci19CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQ
cm94eTo6c3VwcG9ydHNGdWxsU2NyZWVuKGJvb2wgd2l0aEtleWJvYXJkLCBib29sJiBzdXBwb3J0
cykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eS5oCmluZGV4IDFhMWM5NGM5M2IwMzZjOTRiNDU3NDcxZjNlNzRlZWQ0ZDhhZWNi
YjQuLjU3NmZhMmZkZjA1ZDhlMjYxNDI0ZDI3MDYyYzJkNmM1YTIxODc0ZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuaApA
QCAtODAsOSArODAsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRFbnRlckZ1bGxTY3JlZW4oKTsK
ICAgICB2b2lkIHdpbGxFeGl0RnVsbFNjcmVlbigpOwogICAgIHZvaWQgZGlkRXhpdEZ1bGxTY3Jl
ZW4oKTsKLSAgICB2b2lkIGJlZ2luRW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uKGZsb2F0IGR1cmF0
aW9uKTsKLSAgICB2b2lkIGJlZ2luRXhpdEZ1bGxTY3JlZW5BbmltYXRpb24oZmxvYXQgZHVyYXRp
b24pOwotICAgIHZvaWQgZGlzcG9zZU9mTGF5ZXJDbGllbnQoKTsKKyAgICB2b2lkIGJlZ2luRW50
ZXJGdWxsU2NyZWVuQW5pbWF0aW9uKGZsb2F0IGR1cmF0aW9uKSB7IH0gLy8gRklYTUU6IFJlbW92
ZQorICAgIHZvaWQgYmVnaW5FeGl0RnVsbFNjcmVlbkFuaW1hdGlvbihmbG9hdCBkdXJhdGlvbikg
eyB9IC8vIEZJWE1FOiBSZW1vdmUKKyAgICB2b2lkIGRpc3Bvc2VPZkxheWVyQ2xpZW50KCkgeyB9
IC8vIEZJWE1FOiBSZW1vdmUKIAogcHJpdmF0ZToKICAgICBXZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5KFdlYlBhZ2VQcm94eSopOwpAQCAtOTAsMTMgKzkwLDYgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHN1cHBvcnRzRnVsbFNjcmVlbihib29sIHdpdGhLZXlib2FyZCwgYm9vbCYpOwogICAgIHZvaWQg
ZW50ZXJGdWxsU2NyZWVuKCk7CiAgICAgdm9pZCBleGl0RnVsbFNjcmVlbigpOwotICAgIHZvaWQg
YmVnYW5FbnRlckZ1bGxTY3JlZW5BbmltYXRpb24oKTsKLSAgICB2b2lkIGZpbmlzaGVkRW50ZXJG
dWxsU2NyZWVuQW5pbWF0aW9uKGJvb2wgY29tcGxldGVkKTsKLSAgICB2b2lkIGJlZ2FuRXhpdEZ1
bGxTY3JlZW5BbmltYXRpb24oKTsKLSAgICB2b2lkIGZpbmlzaGVkRXhpdEZ1bGxTY3JlZW5Bbmlt
YXRpb24oYm9vbCBjb21wbGV0ZWQpOwotICAgIHZvaWQgZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0Jik7Ci0gICAgdm9pZCBleGl0QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGUoKTsKLSAgICB2b2lkIGdldEZ1bGxTY3JlZW5SZWN0KFdlYkNvcmU6
OkludFJlY3QmKTsKIAogICAgIFdlYlBhZ2VQcm94eSogbV9wYWdlOwogICAgIFBsYXRmb3JtV2Vi
VmlldyogbV93ZWJWaWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCAwMDdlMzA5
MTZkMWRhNjBlOTJjOTA4NDkxMDExZGFlMTBhMGYwYmE3Li5lODFlMjBhOTI2MGZiZGQwOWFhNzU1
ZWYyOTliOWRhMzFlYTkzMzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjUs
MTQgKzI1LDUgQEAgbWVzc2FnZXMgLT4gV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSB7CiAgICAg
U3VwcG9ydHNGdWxsU2NyZWVuKGJvb2wgd2l0aEtleWJvYXJkKSAtPiAoYm9vbCBzdXBwb3J0c0Z1
bGxTY3JlZW4pCiAgICAgRW50ZXJGdWxsU2NyZWVuKCkKICAgICBFeGl0RnVsbFNjcmVlbigpCi0g
ICAgQmVnYW5FbnRlckZ1bGxTY3JlZW5BbmltYXRpb24oKQotICAgIEZpbmlzaGVkRW50ZXJGdWxs
U2NyZWVuQW5pbWF0aW9uKGJvb2wgY29tcGxldGVkKQotICAgIEJlZ2FuRXhpdEZ1bGxTY3JlZW5B
bmltYXRpb24oKQotICAgIEZpbmlzaGVkRXhpdEZ1bGxTY3JlZW5BbmltYXRpb24oYm9vbCBjb21w
bGV0ZWQpCi0gICAgR2V0RnVsbFNjcmVlblJlY3QoKSAtPiAoV2ViQ29yZTo6SW50UmVjdCByZWN0
KQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBFbnRlckFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKFdlYktpdDo6TGF5ZXJUcmVlQ29udGV4dCBjb250ZXh0KQotICAgIEV4
aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpCi0jZW5kaWYKIH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eUd0ay5jcHAKaW5kZXggNWI1YmYwMjQyODYyYzFhOTQ2NmJjN2JhN2Y3MTAxNmEz
YzNjNTg4MS4uMTQ3MGVhNTEyMmJjMmU0YjUzNGNkMDcwMjc4Y2Q1NzQzMWUyZGIyNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHlHdGsuY3BwCkBAIC00Niw0MSArNDYsNiBAQCB2b2lkIFdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHk6OmV4aXRGdWxsU2NyZWVuKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQogCi12b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmJlZ2FuRW50ZXJGdWxsU2NyZWVu
QW5pbWF0aW9uKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFdlYkZ1bGxT
Y3JlZW5NYW5hZ2VyUHJveHk6OmZpbmlzaGVkRW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uKGJvb2wg
Y29tcGxldGVkKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgV2ViRnVsbFNj
cmVlbk1hbmFnZXJQcm94eTo6YmVnYW5FeGl0RnVsbFNjcmVlbkFuaW1hdGlvbigpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Ojpm
aW5pc2hlZEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uKGJvb2wgY29tcGxldGVkKQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6ZW50
ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0JiBjb250
ZXh0KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgV2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eTo6ZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmdldEZ1
bGxTY3JlZW5SZWN0KFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dl
YkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNYWMubW0KaW5kZXggMjBlOTJjMDU0Yjc0M2Fk
MWQ5NTM0MDIwY2ZkN2MwYWVmZWY4ZDBkOS4uZGFiNWYxMTBhMTdjODhlNjdhNzQ2NzcyZmI0OGUz
Y2QwMWQwOGQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJG
dWxsU2NyZWVuTWFuYWdlclByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eU1hYy5tbQpAQCAtNTcsNTYgKzU3LDcgQEAg
dm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpleGl0RnVsbFNjcmVlbigpCiAgICAgICAg
IHJldHVybjsKICAgICBbW21fd2ViVmlldyBmdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcl0gZXhp
dEZ1bGxTY3JlZW5dOwogfQotCi12b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmJlZ2Fu
RW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uKCkKLXsKLSAgICBpZiAoIW1fd2ViVmlldykKLSAgICAg
ICAgcmV0dXJuOwotICAgIFtbbV93ZWJWaWV3IGZ1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyXSBi
ZWdhbkVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbl07Ci19Ci0KLXZvaWQgV2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eTo6ZmluaXNoZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb24oYm9vbCBjb21wbGV0
ZWQpCi17Ci0gICAgaWYgKCFtX3dlYlZpZXcpCi0gICAgICAgIHJldHVybjsKLSAgICBbW21fd2Vi
VmlldyBmdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcl0gZmluaXNoZWRFbnRlckZ1bGxTY3JlZW5B
bmltYXRpb246Y29tcGxldGVkXTsKLX0KLQotdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
OjpiZWdhbkV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uKCkKLXsKLSAgICBpZiAoIW1fd2ViVmlldykK
LSAgICAgICAgcmV0dXJuOwotICAgIFtbbV93ZWJWaWV3IGZ1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVyXSBiZWdhbkV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uXTsKLX0KLQotdm9pZCBXZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5OjpmaW5pc2hlZEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uKGJvb2wgY29t
cGxldGVkKQotewotICAgIGlmICghbV93ZWJWaWV3KQotICAgICAgICByZXR1cm47Ci0gICAgW1tt
X3dlYlZpZXcgZnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJdIGZpbmlzaGVkRXhpdEZ1bGxTY3Jl
ZW5BbmltYXRpb246Y29tcGxldGVkXTsKLX0KICAgICAKLXZvaWQgV2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eTo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVD
b250ZXh0JiBjb250ZXh0KQotewotICAgIGlmICghbV93ZWJWaWV3KQotICAgICAgICByZXR1cm47
Ci0gICAgW1ttX3dlYlZpZXcgZnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJdIGVudGVyQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ01vZGU6Y29udGV4dF07Ci19Ci0KLXZvaWQgV2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eTo6ZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkKLXsKLSAgICBpZiAo
IW1fd2ViVmlldykKLSAgICAgICAgcmV0dXJuOwotICAgIFtbbV93ZWJWaWV3IGZ1bGxTY3JlZW5X
aW5kb3dDb250cm9sbGVyXSBleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGVdOwotfQotCi12
b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmdldEZ1bGxTY3JlZW5SZWN0KFdlYkNvcmU6
OkludFJlY3QmIHJlY3QpCi17Ci0gICAgaWYgKCFtX3dlYlZpZXcpCi0gICAgICAgIHJldHVybjsK
LSAgICByZWN0ID0gW1ttX3dlYlZpZXcgZnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJdIGdldEZ1
bGxTY3JlZW5SZWN0XTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHlRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eVF0LmNwcAppbmRleCBjNGExM2ZhZDg5ZTExMjliNThmOWMzZGI3OThiYjIyN2M3
ZGY1NTI2Li4zODM4OWRmYmJkMGVjNmZjMGEwYWM3M2Y5OTgxOGYwZWM2YjQ4ODZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94
eVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eVF0LmNwcApAQCAtNDYsNDEgKzQ2LDYgQEAgdm9pZCBXZWJGdWxsU2NyZWVuTWFu
YWdlclByb3h5OjpleGl0RnVsbFNjcmVlbigpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAot
dm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpiZWdhbkVudGVyRnVsbFNjcmVlbkFuaW1h
dGlvbigpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBXZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5OjpmaW5pc2hlZEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbihib29sIGNvbXBs
ZXRlZCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFdlYkZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHk6OmJlZ2FuRXhpdEZ1bGxTY3JlZW5BbmltYXRpb24oKQotewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6ZmluaXNo
ZWRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbihib29sIGNvbXBsZXRlZCkKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotfQotCi12b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmVudGVyQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgY29udGV4dCkK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHk6OmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpCi17Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLX0KLQotdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpnZXRGdWxsU2Ny
ZWVuUmVjdChXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJGdWxs
U2NyZWVuTWFuYWdlclByb3h5V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4v
V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eVdpbi5jcHAKaW5kZXggODc4ZmExMzRlNjlmZmFjOGE1
YTRjZWI4YmIyNTgwNDc2YTMyYWUwYS4uOWE2ZDllNTJhNmFjNmVhY2U1NzFlOTcyNmZiOGFlMjk0
YTFhY2IzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJGdWxs
U2NyZWVuTWFuYWdlclByb3h5V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
d2luL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlXaW4uY3BwCkBAIC01Nyw1NSArNTcsNiBAQCB2
b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmV4aXRGdWxsU2NyZWVuKCkKICAgICBtX3dl
YlZpZXctPmZ1bGxTY3JlZW5Db250cm9sbGVyKCktPmV4aXRGdWxsU2NyZWVuKCk7CiB9CiAKLXZv
aWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6YmVnYW5FbnRlckZ1bGxTY3JlZW5BbmltYXRp
b24oKQotewotICAgIGlmICghbV93ZWJWaWV3KQotICAgICAgICByZXR1cm47Ci0gICAgLy8gRklY
TUU6IEltcGxlbWVudAotfQotCi12b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmZpbmlz
aGVkRW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uKGJvb2wgY29tcGxldGVkKQotewotICAgIGlmICgh
bV93ZWJWaWV3KQotICAgICAgICByZXR1cm47Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudAotfQot
Ci12b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmJlZ2FuRXhpdEZ1bGxTY3JlZW5Bbmlt
YXRpb24oKQotewotICAgIGlmICghbV93ZWJWaWV3KQotICAgICAgICByZXR1cm47Ci0gICAgLy8g
RklYTUU6IEltcGxlbWVudAotfQotCi12b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmZp
bmlzaGVkRXhpdEZ1bGxTY3JlZW5BbmltYXRpb24oYm9vbCBjb21wbGV0ZWQpCi17Ci0gICAgaWYg
KCFtX3dlYlZpZXcpCi0gICAgICAgIHJldHVybjsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50Ci19
Ci0gICAgCi12b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmVudGVyQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgY29udGV4dCkKLXsKLSAgICBp
ZiAoIW1fd2ViVmlldykKLSAgICAgICAgcmV0dXJuOwotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQK
LX0KLQotdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpleGl0QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGUoKQotewotICAgIGlmICghbV93ZWJWaWV3KQotICAgICAgICByZXR1cm47Ci0g
ICAgLy8gRklYTUU6IEltcGxlbWVudAotfQotCi12b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHk6OmdldEZ1bGxTY3JlZW5SZWN0KFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCi17Ci0gICAgaWYg
KCFtX3dlYlZpZXcpCi0gICAgICAgIHJldHVybjsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50Ci19
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhNGY1ZTNhYzJkMDQ2MjZi
YjJmYzIzZDljMDc5Y2QyNThjMWRlNjM3Li4wOWRkN2FiNmQ5NDc3NjRkMmMzNGFkYzhiMjI2OTUw
YjMwNTA5OTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC04NzMsNyArODczLDYgQEAKIAkJQ0RDQTg1QzkxMzJBQkE0RTAwRTk2
MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQ0E4NUM3MTMyQUJBNEUwMEU5NjFERiAvKiBX
S0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmggKi87IH07CiAJCUNEQ0E4NUQ1MTMyQUMyQjMw
MEU5NjFERiAvKiBJT0tpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRENBODVENDEzMkFDMkIzMDBFOTYxREYgLyogSU9LaXQuZnJh
bWV3b3JrICovOyB9OwogCQlDRENBODVFRTEzMkFENzAxMDBFOTYxREYgLyogV2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEQ0E4NURFMTMyQUQwNTMwMEU5NjFERiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdl
clByb3h5TWFjLm1tICovOyB9OwotCQlDRENBODYwMzEzMkFEQzA1MDBFOTYxREYgLyogV2ViRnVs
bFNjcmVlbk1hbmFnZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRENBODVFNjEzMkFEMzMwMDBFOTYxREYgLyogV2ViRnVsbFNjcmVlbk1hbmFn
ZXJNYWMubW0gKi87IH07CiAJCUQzQjk0ODQ2MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1l
bnUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDNC
OTQ4NDIxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5jcHAgKi87IH07CiAJCUQzQjk0
ODQ3MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQzQjk0ODQzMTFGRjRCNjUwMDAzMkIzOSAvKiBX
ZWJQb3B1cE1lbnUuaCAqLzsgfTsKIAkJRDNCOTQ4NDgxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNl
YXJjaFBvcHVwTWVudS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBEM0I5NDg0NDExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmNw
cCAqLzsgfTsKQEAgLTE5MTMsOCArMTkxMiw2IEBACiAJCUNEQ0E4NUM3MTMyQUJBNEUwMEU5NjFE
RiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDQTg1RDQxMzJBQzJCMzAwRTk2MURGIC8qIElPS2l0LmZyYW1l
d29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdy
YXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gSU9LaXQuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0
ZT4iOyB9OwogCQlDRENBODVERTEzMkFEMDUzMDBFOTYxREYgLyogV2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdl
YkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUNEQ0E4NUU1MTMyQUQzMzAwMEU5NjFERiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlck1hYy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJGdWxsU2NyZWVuTWFuYWdlck1h
Yy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDRENBODVFNjEzMkFEMzMwMDBFOTYx
REYgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXZWJGdWxsU2NyZWVuTWFuYWdlck1hYy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRDNCOTQ4NDIxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVu
dS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQb3B1cE1lbnUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEM0I5NDg0MzExRkY0QjY1MDAwMzJC
MzkgLyogV2ViUG9wdXBNZW51LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YlBvcHVwTWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEM0I5NDg0NDExRkY0
QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNlYXJjaFBvcHVwTWVudS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0zNjUwLDggKzM2NDcsNiBAQAogCQlDRENBODVFNDEzMkFEMzMwMDBF
OTYxREYgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
LQkJCQlDRENBODVFNTEzMkFEMzMwMDBFOTYxREYgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWMu
aCAqLywKLQkJCQlDRENBODVFNjEzMkFEMzMwMDBFOTYxREYgLyogV2ViRnVsbFNjcmVlbk1hbmFn
ZXJNYWMubW0gKi8sCiAJCQkpOwogCQkJbmFtZSA9IG1hYzsKIAkJCXBhdGggPSBGdWxsU2NyZWVu
L21hYzsKQEAgLTQ2NzIsNyArNDY2Nyw2IEBACiAJCQkJQkNCOUY2QTExMTIzQTg0QjAwQTEzN0Uw
IC8qIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
QzExMUIwRTExMkY1RTRGMDAzMzdCQUIgLyogV2ViRnJhbWVQcm94eS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlDRDczQkE1MzEzMUI2NDVCMDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQ0RDQTg2MDMxMzJBREMwNTAwRTk2MURGIC8qIFdlYkZ1
bGxTY3JlZW5NYW5hZ2VyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q3M0JBNEUxMzFBQ0RC
NzAwRUVERUQyIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUNENkY3NUY0MTMxQjY2RDAwMEQ2QjIxRSAvKiBXZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQ0E4NUVFMTMyQUQ3MDEwMEU5
NjFERiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNj
cmVlbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dl
YkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcAppbmRleCAyMzdmZDRjZjY4ZTE4NTBhZjYxZGEwY2NlNjcx
NzBiMTIwNzY2OTlkLi4yZjg3MmNlN2I3YmI1ZTEzYzdmYmJlNzRiYjU4NjQzMTNjYWQ1OWIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNj
cmVlbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVl
bi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHAKQEAgLTQyLDYgKzQyLDExIEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorUGFzc1JlZlB0cjxXZWJGdWxs
U2NyZWVuTWFuYWdlcj4gV2ViRnVsbFNjcmVlbk1hbmFnZXI6OmNyZWF0ZShXZWJQYWdlKiBwYWdl
KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViRnVsbFNjcmVlbk1hbmFnZXIocGFnZSkp
OworfQorCiBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6V2ViRnVsbFNjcmVlbk1hbmFnZXIoV2ViUGFn
ZSogcGFnZSkKICAgICA6IG1fcGFnZShwYWdlKQogewpAQCAtNDksNyArNTQsNiBAQCBXZWJGdWxs
U2NyZWVuTWFuYWdlcjo6V2ViRnVsbFNjcmVlbk1hbmFnZXIoV2ViUGFnZSogcGFnZSkKICAgICAK
IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyOjp+V2ViRnVsbFNjcmVlbk1hbmFnZXIoKQogewotICAgIAog
fQogCiBXZWJDb3JlOjpFbGVtZW50KiBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6ZWxlbWVudCgpIApA
QCAtODYsMzMgKzkwLDYgQEAgdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6ZXhpdEZ1bGxTY3Jl
ZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQpCiAgICAgbV9wYWdlLT5pbmpl
Y3RlZEJ1bmRsZUZ1bGxTY3JlZW5DbGllbnQoKS5leGl0RnVsbFNjcmVlbkZvckVsZW1lbnQobV9w
YWdlLmdldCgpLCBlbGVtZW50KTsKIH0KIAotdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6YmVn
YW5FbnRlckZ1bGxTY3JlZW5BbmltYXRpb24oKQotewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6QmVnYW5FbnRlckZ1bGxTY3JlZW5BbmltYXRp
b24oKSk7Ci19Ci0KLXZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXI6OmZpbmlzaGVkRW50ZXJGdWxs
U2NyZWVuQW5pbWF0aW9uKGJvb2wgY29tcGxldGVkKQotewotICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6RmluaXNoZWRFbnRlckZ1bGxTY3JlZW5B
bmltYXRpb24oY29tcGxldGVkKSk7Ci19Ci0KLXZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXI6OmJl
Z2FuRXhpdEZ1bGxTY3JlZW5BbmltYXRpb24oKQotewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6QmVnYW5FeGl0RnVsbFNjcmVlbkFuaW1hdGlv
bigpKTsKLX0KLQotdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6ZmluaXNoZWRFeGl0RnVsbFNj
cmVlbkFuaW1hdGlvbihib29sIGNvbXBsZXRlZCkKLXsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OkZpbmlzaGVkRXhpdEZ1bGxTY3JlZW5Bbmlt
YXRpb24oY29tcGxldGVkKSk7Ci19Ci0gICAgCi1JbnRSZWN0IFdlYkZ1bGxTY3JlZW5NYW5hZ2Vy
OjpnZXRGdWxsU2NyZWVuUmVjdCgpCi17Ci0gICAgSW50UmVjdCByZWN0OwotICAgIG1fcGFnZS0+
c2VuZFN5bmMoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OkdldEZ1bGxTY3Jl
ZW5SZWN0KCksIE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpHZXRGdWxsU2Ny
ZWVuUmVjdDo6UmVwbHkocmVjdCkpOwotICAgIHJldHVybiByZWN0OwotfQotCiB2b2lkIFdlYkZ1
bGxTY3JlZW5NYW5hZ2VyOjp3aWxsRW50ZXJGdWxsU2NyZWVuKCkKIHsKICAgICBBU1NFUlQobV9l
bGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVl
bi9XZWJGdWxsU2NyZWVuTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxs
U2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmgKaW5kZXggYTJiOTkyZjhmMWFhNWQwNzY5YzM4
MTc0ZTcxZDNjOGFkZGE1NGI5ZS4uNDBjOWQ3YzcxMTNhODAwMjg0M2NhYzQyNmVmM2I4YmYwNmZj
MmMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dl
YkZ1bGxTY3JlZW5NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxs
U2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmgKQEAgLTU3LDExICs1Nyw2IEBAIHB1YmxpYzoK
ICAgICBib29sIHN1cHBvcnRzRnVsbFNjcmVlbihib29sIHdpdGhLZXlib2FyZCk7CiAgICAgdm9p
ZCBlbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqKTsKICAgICB2b2lk
IGV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50Kik7Ci0gICAgdm9pZCBi
ZWdhbkVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbigpOwotICAgIHZvaWQgZmluaXNoZWRFbnRlckZ1
bGxTY3JlZW5BbmltYXRpb24oYm9vbCBjb21wbGV0ZWQpOwotICAgIHZvaWQgYmVnYW5FeGl0RnVs
bFNjcmVlbkFuaW1hdGlvbigpOwotICAgIHZvaWQgZmluaXNoZWRFeGl0RnVsbFNjcmVlbkFuaW1h
dGlvbihib29sIGNvbXBsZXRlZCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldFJvb3RGdWxsU2NyZWVu
TGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopID0gMDsKIAogICAgIHZvaWQgd2lsbEVudGVy
RnVsbFNjcmVlbigpOwogICAgIHZvaWQgZGlkRW50ZXJGdWxsU2NyZWVuKCk7CkBAIC03MywxMCAr
NjgsNiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgV2ViRnVsbFNjcmVlbk1hbmFnZXIoV2Vi
UGFnZSopOwogCi0gICAgdmlydHVhbCB2b2lkIGJlZ2luRW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9u
KGZsb2F0IGR1cmF0aW9uKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGJlZ2luRXhpdEZ1bGxTY3Jl
ZW5BbmltYXRpb24oZmxvYXQgZHVyYXRpb24pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcG9z
ZU9mTGF5ZXJDbGllbnQoKSB7IH0KLSAgICBXZWJDb3JlOjpJbnRSZWN0IGdldEZ1bGxTY3JlZW5S
ZWN0KCk7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJGdWxsU2NyZWVuTWFuYWdlck1lc3NhZ2Uo
Q29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1l
bnREZWNvZGVyKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVs
bFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgpp
bmRleCA4MmVlZTNkYTYxMTJkZjBmZGI1MDNhYmFkMjEzODVkYTYwMjc2NWFjLi5mODQwODFiMDUz
YThlOGQ5Mzg2MzJiZDRmMGQyMWQwMjdiYTk5NWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5N
YW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yNiw4ICsyNiw1IEBAIG1lc3NhZ2VzIC0+IFdlYkZ1bGxT
Y3JlZW5NYW5hZ2VyIHsKICAgICBEaWRFbnRlckZ1bGxTY3JlZW4oKQogICAgIFdpbGxFeGl0RnVs
bFNjcmVlbigpCiAgICAgRGlkRXhpdEZ1bGxTY3JlZW4oKQotICAgIEJlZ2luRW50ZXJGdWxsU2Ny
ZWVuQW5pbWF0aW9uKGZsb2F0IGR1cmF0aW9uKQotICAgIEJlZ2luRXhpdEZ1bGxTY3JlZW5Bbmlt
YXRpb24oZmxvYXQgZHVyYXRpb24pCi0gICAgRGlzcG9zZU9mTGF5ZXJDbGllbnQoKQogfQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vZ3Rr
L1dlYkZ1bGxTY3JlZW5NYW5hZ2VyR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
RnVsbFNjcmVlbi9ndGsvV2ViRnVsbFNjcmVlbk1hbmFnZXJHdGsuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA1YzRlNjk3NTYyNzQ0NmY0M2Y0YzZjOGJlZTJjYzM0MmM2YTJjZjE2
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9ndGsvV2ViRnVsbFNjcmVlbk1hbmFnZXJHdGsu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMp
IDIwMTEgSWdhbGlhIFMuTC4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyR3RrLmgiCi0KLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9B
UEkpCi0KLSNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJLaXQgewotCi1XZWJGdWxsU2NyZWVuTWFuYWdlckd0azo6V2ViRnVsbFNjcmVlbk1hbmFnZXJH
dGsoV2ViUGFnZSogcGFnZSkKLSAgICA6IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyKHBhZ2UpCi17Ci19
Ci0KLVBhc3NSZWZQdHI8V2ViRnVsbFNjcmVlbk1hbmFnZXI+IFdlYkZ1bGxTY3JlZW5NYW5hZ2Vy
OjpjcmVhdGUoV2ViUGFnZSogcGFnZSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkZ1
bGxTY3JlZW5NYW5hZ2VyR3RrKHBhZ2UpKTsKLX0KLQotdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdl
ckd0azo6c2V0Um9vdEZ1bGxTY3JlZW5MYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBsYXll
cikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFdlYkZ1bGxTY3JlZW5NYW5h
Z2VyR3RrOjpiZWdpbkVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbihmbG9hdCBkdXJhdGlvbikKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyR3Rr
OjpiZWdpbkV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uKGZsb2F0IGR1cmF0aW9uKQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8g
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9GdWxsU2NyZWVuL2d0ay9XZWJGdWxsU2NyZWVuTWFuYWdlckd0ay5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL2d0ay9XZWJGdWxsU2NyZWVuTWFuYWdlckd0ay5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MWY1NTI3ZmM0YjU1NmJmYmM1ZjhkMmZi
ZGYwZWJmZjliMjQyZWYyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9ndGsvV2ViRnVsbFNj
cmVlbk1hbmFnZXJHdGsuaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWZuZGVmIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyR3RrX2gKLSNkZWZpbmUgV2ViRnVsbFNj
cmVlbk1hbmFnZXJHdGtfaAotCi0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotCi0jaW5jbHVk
ZSAiV2ViRnVsbFNjcmVlbk1hbmFnZXIuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNz
IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyR3RrIDogcHVibGljIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyIHsK
LXB1YmxpYzoKLSAgICBXZWJGdWxsU2NyZWVuTWFuYWdlckd0ayhXZWJQYWdlKik7Ci0gICAgdmly
dHVhbCB2b2lkIHNldFJvb3RGdWxsU2NyZWVuTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciop
OwotCi1wcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBiZWdpbkVudGVyRnVsbFNjcmVlbkFuaW1h
dGlvbihmbG9hdCBkdXJhdGlvbik7Ci0gICAgdmlydHVhbCB2b2lkIGJlZ2luRXhpdEZ1bGxTY3Jl
ZW5BbmltYXRpb24oZmxvYXQgZHVyYXRpb24pOwotCi19OwotCi19Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCi0KLSNlbmRpZiAvLyBXZWJGdWxsU2NyZWVuTWFuYWdlckd0a19o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vbWFjL1dl
YkZ1bGxTY3JlZW5NYW5hZ2VyTWFjLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxT
Y3JlZW4vbWFjL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDI3ZThhZmYyMDFkYjRlZDkwMjg5YTRmOWM5MjkyMjhjN2U0MTRiNjEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9GdWxsU2NyZWVuL21hYy9XZWJGdWxsU2NyZWVuTWFuYWdlck1hYy5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViRnVsbFNj
cmVlbk1hbmFnZXJNYWNfaAotI2RlZmluZSBXZWJGdWxsU2NyZWVuTWFuYWdlck1hY19oCi0KLSNp
ZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0KLSNpbXBvcnQgIkxheWVyVHJlZUNvbnRleHQuaCIK
LSNpbXBvcnQgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyLmgiCi0KLSNpbXBvcnQgPFdlYkNvcmUvR3Jh
cGhpY3NMYXllci5oPgotI2ltcG9ydCA8V2ViQ29yZS9JbnRSZWN0Lmg+Ci0jaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+Ci0KLXR5cGVkZWYgc3RydWN0IF9fV0tDQVJlbW90ZUxheWVyQ2xpZW50UmVm
KiBXS0NBUmVtb3RlTGF5ZXJDbGllbnRSZWY7Ci1PQkpDX0NMQVNTIFdlYkZ1bGxTY3JlZW5NYW5h
Z2VyQW5pbWF0aW9uTGlzdGVuZXI7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJG
dWxsU2NyZWVuTWFuYWdlck1hYyA6IHB1YmxpYyBXZWJGdWxsU2NyZWVuTWFuYWdlciB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViRnVsbFNjcmVlbk1hbmFnZXJNYWM+IGNyZWF0
ZShXZWJQYWdlKik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0Um9vdEZ1bGxTY3JlZW5MYXllcihX
ZWJDb3JlOjpHcmFwaGljc0xheWVyKik7Ci0KLXByaXZhdGU6Ci0gICAgV2ViRnVsbFNjcmVlbk1h
bmFnZXJNYWMoV2ViUGFnZSopOwotICAgIHZpcnR1YWwgfldlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFj
KCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgYmVnaW5FbnRlckZ1bGxTY3JlZW5BbmltYXRpb24oZmxv
YXQgZHVyYXRpb24pOwotICAgIHZpcnR1YWwgdm9pZCBiZWdpbkV4aXRGdWxsU2NyZWVuQW5pbWF0
aW9uKGZsb2F0IGR1cmF0aW9uKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcG9zZU9mTGF5ZXJDbGll
bnQoKTsKLQotICAgIHZvaWQgYW5pbWF0ZUZ1bGxTY3JlZW4oY29uc3QgQ0FUcmFuc2Zvcm0zRCYg
c3RhcnRUcmFuc2Zvcm0sIGNvbnN0IENBVHJhbnNmb3JtM0QmIGVuZFRyYW5zZm9ybSwgZmxvYXQg
ZHVyYXRpb24sIGlkIGxpc3RlbmVyKTsKLSAgICBDQVRyYW5zZm9ybTNEIHdpbmRvd2VkQ0dUcmFu
c2Zvcm0oKTsKLQotICAgIE93blB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBtX3Jvb3RMYXll
cjsKLSAgICBMYXllclRyZWVDb250ZXh0IG1fbGF5ZXJUcmVlQ29udGV4dDsKLSAgICBSZXRhaW5Q
dHI8V0tDQVJlbW90ZUxheWVyQ2xpZW50UmVmPiBtX3JlbW90ZUxheWVyQ2xpZW50OwotICAgIFJl
dGFpblB0cjxpZD4gbV9lbnRlckZ1bGxTY3JlZW5MaXN0ZW5lcjsKLSAgICBSZXRhaW5QdHI8aWQ+
IG1fZXhpdEZ1bGxTY3JlZW5MaXN0ZW5lcjsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkKLQotI2VuZGlmIC8vIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9tYWMvV2ViRnVs
bFNjcmVlbk1hbmFnZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3Jl
ZW4vbWFjL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwNzA2MDA3OGRjN2IxNmM0N2YyNWQ5NTI3N2ZiNGJkODM1YmUzMDkxLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvRnVsbFNjcmVlbi9tYWMvV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWMubW0KKysrIC9k
ZXYvbnVsbApAQCAtMSwzMTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0jaW1wb3J0ICJjb25maWcuaCIK
LSNpbXBvcnQgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjLmgiCi0KLSNpZiBFTkFCTEUoRlVMTFND
UkVFTl9BUEkpCi0KLSNpbXBvcnQgIkNvbm5lY3Rpb24uaCIKLSNpbXBvcnQgIkxheWVyVHJlZUNv
bnRleHQuaCIKLSNpbXBvcnQgIk1lc3NhZ2VJRC5oIgotI2ltcG9ydCAiV2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eU1lc3NhZ2VzLmgiCi0jaW1wb3J0ICJXZWJQYWdlLmgiCi0jaW1wb3J0ICJXZWJQ
cm9jZXNzLmgiCi0jaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvRnJhbWUuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgotI2ltcG9y
dCA8V2ViQ29yZS9SZW5kZXJMYXllci5oPgotI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJMYXllckJh
Y2tpbmcuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyT2JqZWN0Lmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1NldHRpbmdzLmg+Ci0jaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KLQotdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLXR5cGVkZWYgdm9pZCAoV2ViS2l0OjpXZWJGdWxsU2Ny
ZWVuTWFuYWdlcjo6KkFuaW1hdGlvbkJlZ2FuRnVuY3Rpb24pKCk7Ci10eXBlZGVmIHZvaWQgKFdl
YktpdDo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OipBbmltYXRpb25GaW5pc2hlZEZ1bmN0aW9uKShi
b29sKTsKLQotI2lmIGRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKLUBpbnRlcmZhY2UgQ0FU
cmFuc2FjdGlvbihTbm93TGVvcGFyZENvbnZlbmllbmNlRnVuY3Rpb25zKQotKyAodm9pZClzZXRE
aXNhYmxlQWN0aW9uczooQk9PTClmbGFnOwotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gQ0FUcmFu
c2FjdGlvbihTbm93TGVvcGFyZENvbnZlbmllbmNlRnVuY3Rpb25zKQotKyAodm9pZClzZXREaXNh
YmxlQWN0aW9uczooQk9PTClmbGFnCi17Ci0gICAgW3NlbGYgc2V0VmFsdWU6W05TTnVtYmVyIG51
bWJlcldpdGhCb29sOmZsYWddIGZvcktleTprQ0FUcmFuc2FjdGlvbkRpc2FibGVBY3Rpb25zXTsK
LX0KLUBlbmQKLSNlbmRpZgotCi1AaW50ZXJmYWNlIFdLRnVsbFNjcmVlbk1hbmFnZXJBbmltYXRp
b25MaXN0ZW5lciA6IE5TT2JqZWN0IHsKLSAgICBXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2Vy
KiBfbWFuYWdlcjsKLSAgICBBbmltYXRpb25CZWdhbkZ1bmN0aW9uIF9iZWdhbjsKLSAgICBBbmlt
YXRpb25GaW5pc2hlZEZ1bmN0aW9uIF9maW5pc2hlZDsKLX0KLS0gKGlkKWluaXRXaXRoTWFuYWdl
cjooV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlciopbWFuYWdlciBiZWdhbjooQW5pbWF0aW9u
QmVnYW5GdW5jdGlvbiliZWdhbiBmaW5pc2hlZDooQW5pbWF0aW9uRmluaXNoZWRGdW5jdGlvbilm
aW5pc2hlZDsKLS0gKHZvaWQpYW5pbWF0aW9uRGlkU3RhcnQ6KENBQW5pbWF0aW9uICopYW5pbTsK
LS0gKHZvaWQpYW5pbWF0aW9uRGlkU3RvcDooQ0FBbmltYXRpb24gKilhbmltIGZpbmlzaGVkOihC
T09MKWZsYWc7Ci0tICh2b2lkKWludmFsaWRhdGU7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBX
S0Z1bGxTY3JlZW5NYW5hZ2VyQW5pbWF0aW9uTGlzdGVuZXIKLS0gKGlkKWluaXRXaXRoTWFuYWdl
cjooV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlciopbWFuYWdlciBiZWdhbjooQW5pbWF0aW9u
QmVnYW5GdW5jdGlvbiliZWdhbiBmaW5pc2hlZDooQW5pbWF0aW9uRmluaXNoZWRGdW5jdGlvbilm
aW5pc2hlZAotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxmKQotICAg
ICAgICByZXR1cm4gbmlsOwotCi0gICAgX21hbmFnZXIgPSBtYW5hZ2VyOwotICAgIF9iZWdhbiA9
IGJlZ2FuOwotICAgIF9maW5pc2hlZCA9IGZpbmlzaGVkOwotICAgIHJldHVybiBzZWxmOwotfQot
Ci0tICh2b2lkKWFuaW1hdGlvbkRpZFN0YXJ0OihDQUFuaW1hdGlvbiAqKWFuaW0KLXsKLSAgICBp
ZiAoX21hbmFnZXIgJiYgX2JlZ2FuKQotICAgICAgICAoX21hbmFnZXItPipfYmVnYW4pKCk7Ci19
Ci0KLS0gKHZvaWQpYW5pbWF0aW9uRGlkU3RvcDooQ0FBbmltYXRpb24gKilhbmltIGZpbmlzaGVk
OihCT09MKWZsYWcKLXsKLSAgICBpZiAoX21hbmFnZXIgJiYgX2ZpbmlzaGVkKQotICAgICAgICAo
X21hbmFnZXItPipfZmluaXNoZWQpKGZsYWcpOwotfQotCi0tICh2b2lkKWludmFsaWRhdGUKLXsK
LSAgICBfbWFuYWdlciA9IDA7Ci0gICAgX2JlZ2FuID0gMDsKLSAgICBfZmluaXNoZWQgPSAwOwot
fQotQGVuZAotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotUGFzc1JlZlB0cjxXZWJGdWxsU2NyZWVu
TWFuYWdlcj4gV2ViRnVsbFNjcmVlbk1hbmFnZXI6OmNyZWF0ZShXZWJQYWdlKiBwYWdlKQotewot
ICAgIHJldHVybiBXZWJGdWxsU2NyZWVuTWFuYWdlck1hYzo6Y3JlYXRlKHBhZ2UpOwotfQotCi1Q
YXNzUmVmUHRyPFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjPiBXZWJGdWxsU2NyZWVuTWFuYWdlck1h
Yzo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJG
dWxsU2NyZWVuTWFuYWdlck1hYyhwYWdlKSk7Ci19Ci0KLVdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFj
OjpXZWJGdWxsU2NyZWVuTWFuYWdlck1hYyhXZWJQYWdlKiBwYWdlKQotICAgIDogV2ViRnVsbFNj
cmVlbk1hbmFnZXIocGFnZSkKLXsKLSAgICBtX2VudGVyRnVsbFNjcmVlbkxpc3RlbmVyLmFkb3B0
TlMoW1tXS0Z1bGxTY3JlZW5NYW5hZ2VyQW5pbWF0aW9uTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRo
TWFuYWdlcjp0aGlzIGJlZ2FuOiZXZWJGdWxsU2NyZWVuTWFuYWdlck1hYzo6YmVnYW5FbnRlckZ1
bGxTY3JlZW5BbmltYXRpb24gZmluaXNoZWQ6JldlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjOjpmaW5p
c2hlZEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbl0pOwotICAgIG1fZXhpdEZ1bGxTY3JlZW5MaXN0
ZW5lci5hZG9wdE5TKFtbV0tGdWxsU2NyZWVuTWFuYWdlckFuaW1hdGlvbkxpc3RlbmVyIGFsbG9j
XSBpbml0V2l0aE1hbmFnZXI6dGhpcyBiZWdhbjomV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWM6OmJl
Z2FuRXhpdEZ1bGxTY3JlZW5BbmltYXRpb24gZmluaXNoZWQ6JldlYkZ1bGxTY3JlZW5NYW5hZ2Vy
TWFjOjpmaW5pc2hlZEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uXSk7Ci19Ci0KLVdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyTWFjOjp+V2ViRnVsbFNjcmVlbk1hbmFnZXJNYWMoKQotewotICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6RXhpdEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKCkpOwotICAgIFttX2VudGVyRnVsbFNjcmVlbkxpc3RlbmVyLmdldCgp
IGludmFsaWRhdGVdOwotICAgIFttX2V4aXRGdWxsU2NyZWVuTGlzdGVuZXIuZ2V0KCkgaW52YWxp
ZGF0ZV07Ci19Ci0KLXZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWM6OnNldFJvb3RGdWxsU2Ny
ZWVuTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciogbGF5ZXIpCi17Ci0gICAgaWYgKCFtX3Jv
b3RMYXllciAmJiAhbGF5ZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghbGF5ZXIpIHsK
LSAgICAgICAgUGxhdGZvcm1MYXllciogcm9vdFBsYXRmb3JtTGF5ZXIgPSBtX3Jvb3RMYXllci0+
cGxhdGZvcm1MYXllcigpOwotICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRD
ZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOkAiV2ViS2l0TGF5ZXJIb3N0Q2hhbmdlZCIgb2Jq
ZWN0OnJvb3RQbGF0Zm9ybUxheWVyIHVzZXJJbmZvOm5pbF07Ci0gICAgICAgIG1fcm9vdExheWVy
LT5yZW1vdmVBbGxDaGlsZHJlbigpOwotICAgICAgICBtX3Jvb3RMYXllci0+c3luY0NvbXBvc2l0
aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCk7Ci0gICAgICAgIG1fcm9vdExheWVyID0gbnVsbHB0
cjsKLQotICAgICAgICBtX3BhZ2UtPmZvcmNlUmVwYWludFdpdGhvdXRDYWxsYmFjaygpOwotICAg
ICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OkV4
aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmIChtX3Jvb3RMYXllciAmJiBtX3Jvb3RMYXllci0+Y2hpbGRyZW4oKS5jb250YWlu
cyhsYXllcikpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghbV9yb290TGF5ZXIpIHsKLSAg
ICAgICAgbWFjaF9wb3J0X3Qgc2VydmVyUG9ydCA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbXBv
c2l0aW5nUmVuZGVyU2VydmVyUG9ydCgpOwotICAgICAgICBtX3JlbW90ZUxheWVyQ2xpZW50ID0g
V0tDQVJlbW90ZUxheWVyQ2xpZW50TWFrZVdpdGhTZXJ2ZXJQb3J0KHNlcnZlclBvcnQpOwotCi0g
ICAgICAgIG1fcm9vdExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKE5VTEwpOwotI2lmbmRl
ZiBOREVCVUcKLSAgICAgICAgbV9yb290TGF5ZXItPnNldE5hbWUoIkZ1bGwgc2NyZWVuIHJvb3Qg
bGF5ZXIiKTsKLSNlbmRpZgotICAgICAgICBtX3Jvb3RMYXllci0+c2V0RHJhd3NDb250ZW50KGZh
bHNlKTsKLSAgICAgICAgbV9yb290TGF5ZXItPnNldFNpemUoZ2V0RnVsbFNjcmVlblJlY3QoKS5z
aXplKCkpOwotCi0gICAgICAgIFttX3Jvb3RMYXllci0+cGxhdGZvcm1MYXllcigpIHNldEdlb21l
dHJ5RmxpcHBlZDpZRVNdOwotICAgICAgICBXS0NBUmVtb3RlTGF5ZXJDbGllbnRTZXRMYXllciht
X3JlbW90ZUxheWVyQ2xpZW50LmdldCgpLCBtX3Jvb3RMYXllci0+cGxhdGZvcm1MYXllcigpKTsK
LSAgICAgICAgbV9sYXllclRyZWVDb250ZXh0LmNvbnRleHRJRCA9IFdLQ0FSZW1vdGVMYXllckNs
aWVudEdldENsaWVudElkKG1fcmVtb3RlTGF5ZXJDbGllbnQuZ2V0KCkpOwotICAgICAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OkVudGVyQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ01vZGUobV9sYXllclRyZWVDb250ZXh0KSk7Ci0gICAgfQotCi0gICAg
W0NBVHJhbnNhY3Rpb24gYmVnaW5dOwotICAgIFtDQVRyYW5zYWN0aW9uIHNldERpc2FibGVBY3Rp
b25zOllFU107Ci0gICAgbV9yb290TGF5ZXItPnJlbW92ZUFsbENoaWxkcmVuKCk7Ci0gICAgbV9y
b290TGF5ZXItPmFkZENoaWxkKGxheWVyKTsKLSAgICBtX3Jvb3RMYXllci0+c3luY0NvbXBvc2l0
aW5nU3RhdGUoZ2V0RnVsbFNjcmVlblJlY3QoKSk7Ci0gICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0
XTsKLQotICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlm
aWNhdGlvbk5hbWU6QCJXZWJLaXRMYXllckhvc3RDaGFuZ2VkIiBvYmplY3Q6bV9yb290TGF5ZXIt
PnBsYXRmb3JtTGF5ZXIoKSB1c2VySW5mbzpuaWxdOwotfQotCi12b2lkIFdlYkZ1bGxTY3JlZW5N
YW5hZ2VyTWFjOjpkaXNwb3NlT2ZMYXllckNsaWVudCgpCi17Ci0gICAgaWYgKCFtX3JlbW90ZUxh
eWVyQ2xpZW50KQotICAgICAgICByZXR1cm47Ci0gICAgV0tDQVJlbW90ZUxheWVyQ2xpZW50U2V0
TGF5ZXIobV9yZW1vdGVMYXllckNsaWVudC5nZXQoKSwgMCk7Ci0gICAgV0tDQVJlbW90ZUxheWVy
Q2xpZW50SW52YWxpZGF0ZShtX3JlbW90ZUxheWVyQ2xpZW50LmdldCgpKTsKLSAgICBtX3JlbW90
ZUxheWVyQ2xpZW50ID0gbnVsbHB0cjsKLX0KLQotdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlck1h
Yzo6YmVnaW5FbnRlckZ1bGxTY3JlZW5BbmltYXRpb24oZmxvYXQgZHVyYXRpb24pCi17Ci0gICAg
QVNTRVJUKG1fZWxlbWVudCk7Ci0gICAgCi0gICAgaWYgKCFtX3Jvb3RMYXllciB8fCBtX3Jvb3RM
YXllci0+Y2hpbGRyZW4oKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2
ZSBhIHJvb3QgbGF5ZXIsIHdlIGNhbid0IGFuaW1hdGUgaW4gYW5kIG91dCBvZiBmdWxsIHNjcmVl
bgotICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHk6OkVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUobV9sYXllclRyZWVDb250ZXh0KSk7
Ci0gICAgICAgIHRoaXMtPmJlZ2FuRW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uKCk7Ci0gICAgICAg
IHRoaXMtPmZpbmlzaGVkRW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uKHRydWUpOwotICAgICAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OkV4aXRBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IEludFJlY3QgZGVzdGluYXRpb25GcmFtZSA9IGdldEZ1bGxTY3JlZW5SZWN0KCk7Ci0gICAgbV9l
bGVtZW50LT5kb2N1bWVudCgpLT5zZXRGdWxsU2NyZWVuUmVuZGVyZXJTaXplKGRlc3RpbmF0aW9u
RnJhbWUuc2l6ZSgpKTsKLSAgICBtX3Jvb3RMYXllci0+c3luY0NvbXBvc2l0aW5nU3RhdGUoZGVz
dGluYXRpb25GcmFtZSk7Ci0KLSAgICAvLyBGSVhNRTogT25jZSB3ZSBnYWluIHRoZSBhYmlsaXR5
IHRvIGRvIG5hdGl2ZSBXZWJLaXQgYW5pbWF0aW9ucyBvZiBnZW5lcmF0ZWQKLSAgICAvLyBjb250
ZW50LCB0aGlzIGNhbiBjaGFuZ2UgdG8gdXNlIHRoZW0uICBNZWFud2hpbGUsIHdlJ2xsIGhhdmUg
dG8gYW5pbWF0ZSB0aGUKLSAgICAvLyBDQUxheWVyIGRpcmVjdGx5LgotICAgIGFuaW1hdGVGdWxs
U2NyZWVuKHdpbmRvd2VkQ0dUcmFuc2Zvcm0oKSwgQ0FUcmFuc2Zvcm0zRElkZW50aXR5LCBkdXJh
dGlvbiwgbV9lbnRlckZ1bGxTY3JlZW5MaXN0ZW5lci5nZXQoKSk7Ci19Ci0KLXZvaWQgV2ViRnVs
bFNjcmVlbk1hbmFnZXJNYWM6OmJlZ2luRXhpdEZ1bGxTY3JlZW5BbmltYXRpb24oZmxvYXQgZHVy
YXRpb24pCi17Ci0gICAgQVNTRVJUKG1fZWxlbWVudCk7Ci0gICAgCi0gICAgaWYgKCFtX3Jvb3RM
YXllciB8fCBtX3Jvb3RMYXllci0+Y2hpbGRyZW4oKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgLy8g
SWYgd2UgZG9uJ3QgaGF2ZSBhIHJvb3QgbGF5ZXIsIHdlIGNhbid0IGFuaW1hdGUgaW4gYW5kIG91
dCBvZiBmdWxsIHNjcmVlbgotICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxT
Y3JlZW5NYW5hZ2VyUHJveHk6OkVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUobV9sYXll
clRyZWVDb250ZXh0KSk7Ci0gICAgICAgIHRoaXMtPmJlZ2FuRXhpdEZ1bGxTY3JlZW5BbmltYXRp
b24oKTsKLSAgICAgICAgdGhpcy0+ZmluaXNoZWRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbih0cnVl
KTsKLSAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5OjpFeGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBJbnRSZWN0IGRlc3RpbmF0aW9uRnJhbWUgPSBnZXRGdWxsU2NyZWVuUmVj
dCgpOwotICAgIG1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+c2V0RnVsbFNjcmVlblJlbmRlcmVyU2l6
ZShkZXN0aW5hdGlvbkZyYW1lLnNpemUoKSk7Ci0gICAgbV9yb290TGF5ZXItPnN5bmNDb21wb3Np
dGluZ1N0YXRlKGRlc3RpbmF0aW9uRnJhbWUpOwotCi0gICAgLy8gRklYTUU6IE9uY2Ugd2UgZ2Fp
biB0aGUgYWJpbGl0eSB0byBkbyBuYXRpdmUgV2ViS2l0IGFuaW1hdGlvbnMgb2YgZ2VuZXJhdGVk
Ci0gICAgLy8gY29udGVudCwgdGhpcyBjYW4gY2hhbmdlIHRvIHVzZSB0aGVtLiAgTWVhbndoaWxl
LCB3ZSdsbCBoYXZlIHRvIGFuaW1hdGUgdGhlCi0gICAgLy8gQ0FMYXllciBkaXJlY3RseS4KLSAg
ICBDQUxheWVyKiBjYUxheWVyID0gbV9yb290TGF5ZXItPmNoaWxkcmVuKCkuZmlyc3QoKS0+cGxh
dGZvcm1MYXllcigpOwotICAgIENBTGF5ZXIqIHByZXNlbnRhdGlvbkxheWVyID0gW2NhTGF5ZXIg
cHJlc2VudGF0aW9uTGF5ZXJdID8gKENBTGF5ZXIqKVtjYUxheWVyIHByZXNlbnRhdGlvbkxheWVy
XSA6IGNhTGF5ZXI7Ci0gICAgYW5pbWF0ZUZ1bGxTY3JlZW4oW3ByZXNlbnRhdGlvbkxheWVyIHRy
YW5zZm9ybV0sIHdpbmRvd2VkQ0dUcmFuc2Zvcm0oKSwgZHVyYXRpb24sIG1fZXhpdEZ1bGxTY3Jl
ZW5MaXN0ZW5lci5nZXQoKSk7Ci19Ci0KLXZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJNYWM6OmFu
aW1hdGVGdWxsU2NyZWVuKGNvbnN0IENBVHJhbnNmb3JtM0QmIHN0YXJ0VHJhbnNmb3JtLCBjb25z
dCBDQVRyYW5zZm9ybTNEJiBlbmRUcmFuc2Zvcm0sIGZsb2F0IGR1cmF0aW9uLCBpZCBsaXN0ZW5l
cikKLXsKLSAgICAvLyBUaGlzIGlzIHRoZSBmdWxsIHNpemUgb2YgdGhlIHNjcmVlbi4KLSAgICBJ
bnRSZWN0IGZ1bGxTY3JlZW5SZWN0ID0gZ2V0RnVsbFNjcmVlblJlY3QoKTsgICAgCi0gICAgQ0FM
YXllciogY2FMYXllciA9IG1fcm9vdExheWVyLT5jaGlsZHJlbigpLmZpcnN0KCktPnBsYXRmb3Jt
TGF5ZXIoKTsKLQotICAgIC8vIFRoaXMgYW5pbWF0aW9uIHJlcHJlc2VudHMgdGhlIHpvb20gZWZm
ZWN0LgotICAgIENBQmFzaWNBbmltYXRpb24qIHpvb21BbmltYXRpb24gPSBbQ0FCYXNpY0FuaW1h
dGlvbiBhbmltYXRpb25XaXRoS2V5UGF0aDpAInRyYW5zZm9ybSJdOwotICAgIFt6b29tQW5pbWF0
aW9uIHNldEZyb21WYWx1ZTpbTlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOnN0YXJ0VHJh
bnNmb3JtXV07Ci0gICAgW3pvb21BbmltYXRpb24gc2V0VG9WYWx1ZTpbTlNWYWx1ZSB2YWx1ZVdp
dGhDQVRyYW5zZm9ybTNEOmVuZFRyYW5zZm9ybV1dOwotICAgIAotICAgIC8vIFRoaXMgYW5pbWF0
aW9uIHByb3ZpZGVzIGEgcG9zaXRpb24gY29ycmVjdGlvbiB0byB0aGUgQ0FMYXllciwgd2hpY2gg
bWlnaHQgYmUgb2Zmc2V0IGJhc2VkIG9uIHRoZSBwYWdlJ3MKLSAgICAvLyBzY3JvbGwgcG9zaXRp
b24uIFdlIGFuaW1hdGUgaXQgaW5zdGVhZCBvZiBqdXN0IHNldHRpbmcgdGhlIHByb3BlcnR5IGJl
Y2F1c2Ugb3RoZXJzIG1pZ2h0IHRyeSB0bwotICAgIC8vIGFsdGVyIGl0cyBwb3NpdGlvbiB3aGls
ZSB0aGUgYW5pbWF0aW9uIGlzIHBsYXlpbmcuCi0gICAgQ0dQb2ludCBsYXllckFuY2hvciA9IFtj
YUxheWVyIGFuY2hvclBvaW50XTsKLSAgICBDR1BvaW50IGZ1bGxTY3JlZW5Qb3NpdGlvbiA9IENH
UG9pbnRNYWtlKAotICAgICAgICBmdWxsU2NyZWVuUmVjdC54KCkgKyBmdWxsU2NyZWVuUmVjdC53
aWR0aCgpICogbGF5ZXJBbmNob3IueCwKLSAgICAgICAgZnVsbFNjcmVlblJlY3QueSgpICsgZnVs
bFNjcmVlblJlY3QuaGVpZ2h0KCkgKiBsYXllckFuY2hvci55KTsKLSAgICBDQUJhc2ljQW5pbWF0
aW9uKiBwb3NpdGlvbkNvcnJlY3Rpb24gPSBbQ0FCYXNpY0FuaW1hdGlvbiBhbmltYXRpb25XaXRo
S2V5UGF0aDpAInBvc2l0aW9uIl07Ci0gICAgW3Bvc2l0aW9uQ29ycmVjdGlvbiBzZXRGcm9tVmFs
dWU6W05TVmFsdWUgdmFsdWVXaXRoUG9pbnQ6TlNQb2ludEZyb21DR1BvaW50KGZ1bGxTY3JlZW5Q
b3NpdGlvbildXTsKLSAgICBbcG9zaXRpb25Db3JyZWN0aW9uIHNldFRvVmFsdWU6W05TVmFsdWUg
dmFsdWVXaXRoUG9pbnQ6TlNQb2ludEZyb21DR1BvaW50KGZ1bGxTY3JlZW5Qb3NpdGlvbildXTsK
LSAgICAKLSAgICAvLyBXZSB3YW50IHRvIGJlIG5vdGlmaWVkIHRoYXQgdGhlIGFuaW1hdGlvbiBo
YXMgY29tcGxldGVkIGJ5IHdheSBvZiB0aGUgQ0FBbmltYXRpb24gZGVsZWdhdGUuCi0gICAgQ0FB
bmltYXRpb25Hcm91cCogdHJhbnNpdGlvbkFuaW1hdGlvbiA9IFtDQUFuaW1hdGlvbkdyb3VwIGFu
aW1hdGlvbl07Ci0gICAgW3RyYW5zaXRpb25BbmltYXRpb24gc2V0QW5pbWF0aW9uczpbTlNBcnJh
eSBhcnJheVdpdGhPYmplY3RzOnpvb21BbmltYXRpb24sIHBvc2l0aW9uQ29ycmVjdGlvbiwgbmls
XV07Ci0gICAgW3RyYW5zaXRpb25BbmltYXRpb24gc2V0RGVsZWdhdGU6bGlzdGVuZXJdOwotICAg
IFt0cmFuc2l0aW9uQW5pbWF0aW9uIHNldER1cmF0aW9uOmR1cmF0aW9uXTsKLSAgICBbdHJhbnNp
dGlvbkFuaW1hdGlvbiBzZXRUaW1pbmdGdW5jdGlvbjpbQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uIGZ1
bmN0aW9uV2l0aE5hbWU6a0NBTWVkaWFUaW1pbmdGdW5jdGlvbkVhc2VJbkVhc2VPdXRdXTsKLSAg
ICBbdHJhbnNpdGlvbkFuaW1hdGlvbiBzZXRGaWxsTW9kZTprQ0FGaWxsTW9kZUZvcndhcmRzXTsK
LSAgICBbdHJhbnNpdGlvbkFuaW1hdGlvbiBzZXRSZW1vdmVkT25Db21wbGV0aW9uOk5PXTsKLSAg
ICAKLSAgICAvLyBEaXNhYmxlIGltcGxpY2l0IGFuaW1hdGlvbnMgYW5kIHNldCB0aGUgbGF5ZXIn
cyB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggdG8gaXRzIGZpbmFsIHN0YXRlLgotICAgIFtDQVRyYW5z
YWN0aW9uIGJlZ2luXTsKLSAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0aW9uczpZRVNd
OwotICAgIFtjYUxheWVyIGFkZEFuaW1hdGlvbjp0cmFuc2l0aW9uQW5pbWF0aW9uIGZvcktleTpA
Inpvb20iXTsKLSAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwotfQotCi1DQVRyYW5zZm9ybTNE
IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyTWFjOjp3aW5kb3dlZENHVHJhbnNmb3JtKCkKLXsKLSAgICBJ
bnRSZWN0IGZ1bGxTY3JlZW5SZWN0ID0gZ2V0RnVsbFNjcmVlblJlY3QoKTsKLSAgICBSZW5kZXJM
YXllciogbGF5ZXIgPSBtX2VsZW1lbnQtPnJlbmRlcmVyKCkgPyBtX2VsZW1lbnQtPnJlbmRlcmVy
KCktPmVuY2xvc2luZ0xheWVyKCkgOiAwOwotICAgIFJlbmRlckxheWVyQmFja2luZyogYmFja2lu
ZyA9IGxheWVyID8gbGF5ZXItPmJhY2tpbmcoKSA6IDA7Ci0gICAgSW50U2l6ZSBmdWxsU2NyZWVu
U2l6ZSA9IGZ1bGxTY3JlZW5SZWN0LnNpemUoKTsKLSAgICBpZiAoYmFja2luZykKLSAgICAgICAg
ZnVsbFNjcmVlblNpemUgPSBiYWNraW5nLT5jb250ZW50c0JveCgpLnNpemUoKTsKLQotICAgIENB
TGF5ZXIqIGNhTGF5ZXIgPSBtX3Jvb3RMYXllci0+Y2hpbGRyZW4oKS5maXJzdCgpLT5wbGF0Zm9y
bUxheWVyKCk7Ci0KLSAgICAvLyBDcmVhdGUgYSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggdGhhdCB3
aWxsIHRyYW5zZm9ybSB0aGUgcmVuZGVyZXIgbGF5ZXIgc3VjaCB0aGF0Ci0gICAgLy8gdGhlIGZ1
bGxzY3JlZW4gZWxlbWVudCBhcHBlYXJzIHRvIG1vdmUgZnJvbSBpdHMgc3RhcnRpbmcgcG9zaXRp
b24gYW5kIHNpemUgdG8gaXRzCi0gICAgLy8gZmluYWwgb25lLgotICAgIENHUG9pbnQgbGF5ZXJB
bmNob3IgPSBbY2FMYXllciBhbmNob3JQb2ludF07Ci0gICAgQ0dQb2ludCBmdWxsU2NyZWVuUG9z
aXRpb24gPSBDR1BvaW50TWFrZSgKLSAgICAgICAgZnVsbFNjcmVlblJlY3QueCgpICsgZnVsbFNj
cmVlblJlY3Qud2lkdGgoKSAqIGxheWVyQW5jaG9yLngsCi0gICAgICAgIGZ1bGxTY3JlZW5SZWN0
LnkoKSArIGZ1bGxTY3JlZW5SZWN0LmhlaWdodCgpICogbGF5ZXJBbmNob3IueSk7IC8vW3ByZXNl
bnRhdGlvbkxheWVyIHBvc2l0aW9uXTsKLSAgICBDR1BvaW50IHdpbmRvd2VkUG9zaXRpb24gPSBD
R1BvaW50TWFrZSgKLSAgICAgICAgbV9pbml0aWFsRnJhbWUueCgpICsgbV9pbml0aWFsRnJhbWUu
d2lkdGgoKSAqIGxheWVyQW5jaG9yLngsCi0gICAgICAgIG1faW5pdGlhbEZyYW1lLnkoKSArIG1f
aW5pdGlhbEZyYW1lLmhlaWdodCgpICogbGF5ZXJBbmNob3IueSk7Ci0gICAgQ0FUcmFuc2Zvcm0z
RCBzaHJpbmtUcmFuc2Zvcm0gPSBDQVRyYW5zZm9ybTNETWFrZVNjYWxlKAotICAgICAgICBzdGF0
aWNfY2FzdDxDR0Zsb2F0PihtX2luaXRpYWxGcmFtZS53aWR0aCgpKSAvIGZ1bGxTY3JlZW5TaXpl
LndpZHRoKCksCi0gICAgICAgIHN0YXRpY19jYXN0PENHRmxvYXQ+KG1faW5pdGlhbEZyYW1lLmhl
aWdodCgpKSAvIGZ1bGxTY3JlZW5TaXplLmhlaWdodCgpLCAxKTsKLSAgICBDQVRyYW5zZm9ybTNE
IHNoaWZ0VHJhbnNmb3JtID0gQ0FUcmFuc2Zvcm0zRE1ha2VUcmFuc2xhdGlvbigKLSAgICAgICAg
d2luZG93ZWRQb3NpdGlvbi54IC0gZnVsbFNjcmVlblBvc2l0aW9uLngsCi0gICAgICAgIC8vIERy
YXdpbmcgaXMgZmxpcHBlZCBoZXJlLCBhbmQgc28gbXVzdCBiZSB0aGUgdHJhbnNsYXRpb24gdHJh
bnNmb3JtYXRpb24KLSAgICAgICAgZnVsbFNjcmVlblBvc2l0aW9uLnkgLSB3aW5kb3dlZFBvc2l0
aW9uLnksIDApOwotICAgIAotICAgIHJldHVybiBDQVRyYW5zZm9ybTNEQ29uY2F0KHNocmlua1Ry
YW5zZm9ybSwgc2hpZnRUcmFuc2Zvcm0pOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9xdC9XZWJGdWxsU2NyZWVuTWFuYWdlclF0LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9xdC9XZWJGdWxsU2NyZWVuTWFu
YWdlclF0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQ2N2U1NjYxY2EzZWJl
MWUzMTE2N2E5Y2JkMTUwYjc4ZDIyY2Y0YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vcXQv
V2ViRnVsbFNjcmVlbk1hbmFnZXJRdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMg
c3Vic2lkaWFyeSgtaWVzKQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiV2ViRnVsbFNjcmVlbk1hbmFnZXJRdC5oIgotCi0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQotCi0jaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLQotV2ViRnVsbFNjcmVlbk1hbmFnZXJRdDo6V2ViRnVsbFNjcmVlbk1hbmFnZXJRdChX
ZWJQYWdlKiBwYWdlKQotICAgIDogV2ViRnVsbFNjcmVlbk1hbmFnZXIocGFnZSkKLXsKLX0KLQot
UGFzc1JlZlB0cjxXZWJGdWxsU2NyZWVuTWFuYWdlcj4gV2ViRnVsbFNjcmVlbk1hbmFnZXI6OmNy
ZWF0ZShXZWJQYWdlKiBwYWdlKQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViRnVsbFNj
cmVlbk1hbmFnZXJRdChwYWdlKSk7Ci19Ci0KLXZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJRdDo6
c2V0Um9vdEZ1bGxTY3JlZW5MYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBsYXllcikKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUXQ6
OmJlZ2luRW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uKGZsb2F0IGR1cmF0aW9uKQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJRdDo6YmVnaW5F
eGl0RnVsbFNjcmVlbkFuaW1hdGlvbihmbG9hdCBkdXJhdGlvbikKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVs
bFNjcmVlbi9xdC9XZWJGdWxsU2NyZWVuTWFuYWdlclF0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0Z1bGxTY3JlZW4vcXQvV2ViRnVsbFNjcmVlbk1hbmFnZXJRdC5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA4MjgxZjM2Zjg3ZDUxNDRjYTM0NmE2ZWQzYzcxNTNlODVjYTM1
YjFiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9xdC9XZWJGdWxsU2NyZWVuTWFuYWdlclF0
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWZuZGVmIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUXRfaAotI2RlZmluZSBXZWJGdWxsU2Ny
ZWVuTWFuYWdlclF0X2gKLQotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLQotI2luY2x1ZGUg
IldlYkZ1bGxTY3JlZW5NYW5hZ2VyLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBX
ZWJGdWxsU2NyZWVuTWFuYWdlclF0IDogcHVibGljIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyIHsKLXB1
YmxpYzoKLSAgICBXZWJGdWxsU2NyZWVuTWFuYWdlclF0KFdlYlBhZ2UqKTsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0Um9vdEZ1bGxTY3JlZW5MYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKik7Ci0K
LXByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGJlZ2luRW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9u
KGZsb2F0IGR1cmF0aW9uKTsKLSAgICB2aXJ0dWFsIHZvaWQgYmVnaW5FeGl0RnVsbFNjcmVlbkFu
aW1hdGlvbihmbG9hdCBkdXJhdGlvbik7Ci0KLX07Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkKLQotI2VuZGlmIC8vIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUXRfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL3dpbi9XZWJGdWxs
U2NyZWVuTWFuYWdlcldpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3Jl
ZW4vd2luL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyV2luLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMjhlYTU0YjcwOTFiNTcyMmE1ZDE5ZTFmYWYyNmMyYjIzNGZlNGRiNS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0Z1bGxTY3JlZW4vd2luL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyV2luLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDExMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyV2luLmgiCi0KLSNpZiBFTkFCTEUo
RlVMTFNDUkVFTl9BUEkpCi0KLSNpbmNsdWRlICJNZXNzYWdlSUQuaCIKLSNpbmNsdWRlICJXZWJG
dWxsU2NyZWVuTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKLSNpbmNsdWRlICJXZWJQYWdlLmgiCi0j
aW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXll
ci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgotI2luY2x1ZGUgPFdlYktpdFN5c3RlbUlu
dGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1QYXNzUmVmUHRyPFdlYkZ1bGxTY3JlZW5NYW5h
Z2VyPiBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UpCi17Ci0gICAg
cmV0dXJuIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyV2luOjpjcmVhdGUocGFnZSk7Ci19Ci0KLVBhc3NS
ZWZQdHI8V2ViRnVsbFNjcmVlbk1hbmFnZXJXaW4+IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyV2luOjpj
cmVhdGUoV2ViUGFnZSogcGFnZSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkZ1bGxT
Y3JlZW5NYW5hZ2VyV2luKHBhZ2UpKTsKLX0KLQotV2ViRnVsbFNjcmVlbk1hbmFnZXJXaW46Oldl
YkZ1bGxTY3JlZW5NYW5hZ2VyV2luKFdlYlBhZ2UqIHBhZ2UpCi0gICAgOiBXZWJGdWxsU2NyZWVu
TWFuYWdlcihwYWdlKQotewotfQotCi1XZWJGdWxsU2NyZWVuTWFuYWdlcldpbjo6fldlYkZ1bGxT
Y3JlZW5NYW5hZ2VyV2luKCkKLXsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxT
Y3JlZW5NYW5hZ2VyUHJveHk6OkV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpKTsKLX0K
LQotdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlcldpbjo6c2V0Um9vdEZ1bGxTY3JlZW5MYXllcihX
ZWJDb3JlOjpHcmFwaGljc0xheWVyKiBsYXllcikKLXsKLSAgICAvLyBIb3N0IHRoZSBmdWxsIHNj
cmVlbiBsYXllciBpZiBpdHMgZ2l2ZW4gdG8gdXM7IG90aGVyd2lzZSBpdCB3aWxsIGJlIGRpc2Nv
bm5lY3RlZCAKLSAgICAvLyBmcm9tIHRoZSBsYXllciBoZWlyYXJjaHkgYW5kIGNhdXNlIGFuIEFT
U0VSVCBkdXJpbmcgcmVzeW5jLgotICAgIC8vIEZJWE1FOiBEaXNhYmxlIHNldHRpbmcgUmVuZGVy
TGF5ZXI6OnNldEFuaW1hdGluZygpIHRvIG1ha2UgdGhpcyB1bm5lY2Vzc2FyeS4KLSAgICBpZiAo
bV9mdWxsU2NyZWVuUm9vdExheWVyID09IGxheWVyKQotICAgICAgICByZXR1cm47Ci0gICAgbV9m
dWxsU2NyZWVuUm9vdExheWVyID0gbGF5ZXI7Ci0KLSAgICBpZiAoIW1fZnVsbFNjcmVlblJvb3RM
YXllcikgewotICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5h
Z2VyUHJveHk6OkV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpKTsKLSAgICAgICAgaWYg
KG1fcm9vdExheWVyKSB7Ci0gICAgICAgICAgICBtX3Jvb3RMYXllci0+cmVtb3ZlQWxsQ2hpbGRy
ZW4oKTsKLSAgICAgICAgICAgIG1fcm9vdExheWVyID0gbnVsbHB0cjsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFtX3Jvb3RMYXllcikgewotICAgICAgICBt
X3Jvb3RMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZSgwKTsKLSNpZm5kZWYgTkRFQlVHCi0g
ICAgICAgIG1fcm9vdExheWVyLT5zZXROYW1lKCJGdWxsIHNjcmVlbiByb290IGxheWVyIik7Ci0j
ZW5kaWYKLSAgICAgICAgbV9yb290TGF5ZXItPnNldERyYXdzQ29udGVudChmYWxzZSk7Ci0gICAg
ICAgIG1fcm9vdExheWVyLT5zZXRTaXplKGdldEZ1bGxTY3JlZW5SZWN0KCkuc2l6ZSgpKTsKLSAg
ICB9Ci0KLSAgICBtX3Jvb3RMYXllci0+cmVtb3ZlQWxsQ2hpbGRyZW4oKTsKLQotICAgIGlmICht
X2Z1bGxTY3JlZW5Sb290TGF5ZXIpCi0gICAgICAgIG1fcm9vdExheWVyLT5hZGRDaGlsZChtX2Z1
bGxTY3JlZW5Sb290TGF5ZXIpOwotCi0gICAgbV9yb290TGF5ZXItPnN5bmNDb21wb3NpdGluZ1N0
YXRlRm9yVGhpc0xheWVyT25seSgpOwotICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1l
KCktPnZpZXcoKS0+c3luY0NvbXBvc2l0aW5nU3RhdGVJbmNsdWRpbmdTdWJmcmFtZXMoKTsKLX0K
LQotdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlcldpbjo6YmVnaW5FbnRlckZ1bGxTY3JlZW5Bbmlt
YXRpb24oZmxvYXQpCi17Ci0gICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBhbmltYXRpbmcg
dGhlIGNvbnRlbnQgaW50byBmdWxsIHNjcmVlbi4KLX0KLQotdm9pZCBXZWJGdWxsU2NyZWVuTWFu
YWdlcldpbjo6YmVnaW5FeGl0RnVsbFNjcmVlbkFuaW1hdGlvbihmbG9hdCkKLXsKLSAgICAvLyBG
SVhNRTogQWRkIHN1cHBvcnQgZm9yIGFuaW1hdGluZyB0aGUgY29udGVudCBpbnRvIGZ1bGwgc2Ny
ZWVuLgotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShGVUxM
U0NSRUVOX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNj
cmVlbi93aW4vV2ViRnVsbFNjcmVlbk1hbmFnZXJXaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvRnVsbFNjcmVlbi93aW4vV2ViRnVsbFNjcmVlbk1hbmFnZXJXaW4uaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMjJmNzRmMWNmNDE1ZWY3MjJkNzQyZTAzMzY5NzhjNmViZmFh
YTcxMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vd2luL1dlYkZ1bGxTY3JlZW5NYW5hZ2Vy
V2luLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRl
ZiBXZWJGdWxsU2NyZWVuTWFuYWdlcldpbl9oCi0jZGVmaW5lIFdlYkZ1bGxTY3JlZW5NYW5hZ2Vy
V2luX2gKLQotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLQotI2luY2x1ZGUgIldlYkZ1bGxT
Y3JlZW5NYW5hZ2VyLmgiCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyV2luIDogcHVibGljIFdl
YkZ1bGxTY3JlZW5NYW5hZ2VyIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJG
dWxsU2NyZWVuTWFuYWdlcldpbj4gY3JlYXRlKFdlYlBhZ2UqKTsKLQotcHJpdmF0ZToKLSAgICBX
ZWJGdWxsU2NyZWVuTWFuYWdlcldpbihXZWJQYWdlKik7Ci0gICAgdmlydHVhbCB+V2ViRnVsbFNj
cmVlbk1hbmFnZXJXaW4oKTsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXRSb290RnVsbFNjcmVlbkxh
eWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQgYmVnaW5FbnRl
ckZ1bGxTY3JlZW5BbmltYXRpb24oZmxvYXQgZHVyYXRpb24pOwotICAgIHZpcnR1YWwgdm9pZCBi
ZWdpbkV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uKGZsb2F0IGR1cmF0aW9uKTsKLQotICAgIE93blB0
cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBtX3Jvb3RMYXllcjsKLSAgICBXZWJDb3JlOjpHcmFw
aGljc0xheWVyKiBtX2Z1bGxTY3JlZW5Sb290TGF5ZXI7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0KLSNlbmRpZiAvLyBXZWJGdWxsU2NyZWVuTWFuYWdlcldp
bl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggNWE0OGZmZjg3MWY5ZWU4ZDkyOTNjOGJk
ZjVmOTJlODNlMGM5NTZiOC4uNTRlZmQ5YzM0OWY5NmM3YjViYWNlYWVhODZjNDcwNjhmNmE3MjQ0
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNzI3LDEyICs3MjcsNiBAQCB2b2lkIFdl
YkNocm9tZUNsaWVudDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQq
IGVsZW1lbnQpCiB7CiAgICAgbV9wYWdlLT5mdWxsU2NyZWVuTWFuYWdlcigpLT5leGl0RnVsbFNj
cmVlbkZvckVsZW1lbnQoZWxlbWVudCk7CiB9Ci0gICAgCi12b2lkIFdlYkNocm9tZUNsaWVudDo6
c2V0Um9vdEZ1bGxTY3JlZW5MYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKLXsKLSAgICBtX3Bh
Z2UtPmZ1bGxTY3JlZW5NYW5hZ2VyKCktPnNldFJvb3RGdWxsU2NyZWVuTGF5ZXIobGF5ZXIpOwot
fQotCiAjZW5kaWYKIAogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmRpc3BhdGNoVmlld3BvcnRQcm9w
ZXJ0aWVzRGlkQ2hhbmdlKGNvbnN0IFZpZXdwb3J0QXJndW1lbnRzJiBhcmdzKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmgKaW5kZXggZGQ2OGUxZjliZGQzMzk5MjIxNTJlYzNlMGE1ZWEzNGEwNTFh
OGVjNi4uODk4NWU0OTA2OWNiYWEyNmE4YTgwODM1M2E1OTIyOTNhNzZiMTQ0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oCkBAIC0yMDYsNyArMjA2LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJv
b2wgc3VwcG9ydHNGdWxsU2NyZWVuRm9yRWxlbWVudChjb25zdCBXZWJDb3JlOjpFbGVtZW50Kiwg
Ym9vbCB3aXRoS2V5Ym9hcmQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxT
Y3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqKSBPVkVSUklE
RTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Um9vdEZ1bGxTY3JlZW5MYXllcihXZWJDb3JlOjpHcmFw
aGljc0xheWVyKikgT1ZFUlJJREU7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvaiBiL1NvdXJjZS9XZWJLaXQy
L3dpbi9XZWJLaXQyLnZjcHJvagppbmRleCAxNjdiYTNkOTEyN2I4N2RkMDU1NDdlZDdhYjRlZjcx
MTY5OTEyMzUyLi5lNGFjMzU0MTE1OWZiZmE0NzM3OGEzOTk4N2RjYWY4MDUxOGU0NzRhIDEwMDc1
NQotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oKKysrIGIvU291cmNlL1dl
YktpdDIvd2luL1dlYktpdDIudmNwcm9qCkBAIC0yNzA1LDE4ICsyNzA1LDYgQEAKIAkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXEZ1bGxTY3JlZW5cV2ViRnVsbFNjcmVlbk1hbmFnZXIu
aCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KLQkJCQk8RmlsdGVyCi0JCQkJCU5hbWU9IndpbiIKLQkJ
CQkJPgotCQkJCQk8RmlsZQotCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXEZ1bGxT
Y3JlZW5cd2luXFdlYkZ1bGxTY3JlZW5NYW5hZ2VyV2luLmNwcCIKLQkJCQkJCT4KLQkJCQkJPC9G
aWxlPgotCQkJCQk8RmlsZQotCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXEZ1bGxT
Y3JlZW5cd2luXFdlYkZ1bGxTY3JlZW5NYW5hZ2VyV2luLmgiCi0JCQkJCQk+Ci0JCQkJCTwvRmls
ZT4KLQkJCQk8L0ZpbHRlcj4KIAkJCTwvRmlsdGVyPgogCQkJPEZpbHRlcgogCQkJCU5hbWU9Ik5v
dGlmaWNhdGlvbnMgKFVzZXIpIgo=
</data>
<flag name="review"
          id="130089"
          type_id="1"
          status="+"
          setter="sullivan"
    />
          </attachment>
      

    </bug>

</bugzilla>