<?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>51656</bug_id>
          
          <creation_ts>2010-12-27 15:34:29 -0800</creation_ts>
          <short_desc>WebKit2: Add API for getting snapshots</short_desc>
          <delta_ts>2010-12-27 16:03:19 -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>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>buildbot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>327132</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-27 15:34:29 -0800</bug_when>
    <thetext>WebKit2: Add API for getting snapshots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327133</commentid>
    <comment_count>1</comment_count>
      <attachid>77522</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-27 15:39:41 -0800</bug_when>
    <thetext>Created attachment 77522
Patch

Some known deficiencies with this patch are that you can&apos;t pass a WKImageRef via post message if it is not sharable, and this will probably not work with accelerated rendering.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327136</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-27 16:01:35 -0800</bug_when>
    <thetext>Landed in r74698.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327137</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2010-12-27 16:03:19 -0800</bug_when>
    <thetext>Attachment 77522 did not build on win:
Build output: http://queues.webkit.org/results/7218213</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77522</attachid>
            <date>2010-12-27 15:39:41 -0800</date>
            <delta_ts>2010-12-27 15:54:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>snapshot.diff</filename>
            <type>text/plain</type>
            <size>46809</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NDY5NykKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzIgQEAKKzIwMTAtMTItMjcgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJLaXQy
OiBBZGQgQVBJIGZvciBnZXR0aW5nIHNuYXBzaG90cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTE2NTYKKworICAgICAgICAqIFNoYXJlZC9BUEkvYy9X
S0Jhc2UuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tJbWFnZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoV0tJbWFnZUdldFR5cGVJRCk6CisgICAgICAgIChXS0ltYWdlQ3JlYXRlKToKKyAgICAg
ICAgKFdLSW1hZ2VHZXRTaXplKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tJbWFnZS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViSW1hZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpzaXpl
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViSW1hZ2UuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYkltYWdlOjpiYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6V2Vi
SW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6dHlwZSk6CisgICAgICAgIEFkZCBh
IGdlbmVyYWwgcHVycG9zZSBBUEkgaW1hZ2UgY2xhc3MuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJ
L2MvY2c6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdLSW1hZ2VDcmVhdGVDR0ltYWdlKToKKyAgICAgICAgKiBTaGFyZWQv
QVBJL2MvY2cvV0tJbWFnZUNHLmg6IEFkZGVkLgorICAgICAgICBBZGQgZnVuY3Rpb24gdG8gY29u
dmVydCBhIFdLSW1hZ2VSZWYgdG8gYSBDR0ltYWdlUmVmIGZvciBwbGF0Zm9ybXMgdGhhdCB1c2Ug
Q0cuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0Lmg6CisgICAgICAg
IChXZWJLaXQ6OnRvRmxvYXRSZWN0KToKKyAgICAgICAgKFdlYktpdDo6dG9JbnRTaXplKToKKyAg
ICAgICAgKFdlYktpdDo6dG9JbnRQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OnRvSW50UmVjdCk6
CisgICAgICAgIChXZWJLaXQ6OnRvSW1hZ2VPcHRpb25zKToKKyAgICAgICAgTWFrZSBjb252ZXJz
aW9uIGZ1bmN0aW9ucyB0aGF0IGFyZSBhbWJpZ3VvdXMgbW9yZSBleHBsaWNpdC4KKworICAgICAg
ICAqIFNoYXJlZC9BUElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQvQmFja2luZ1N0b3JlLmg6
CisgICAgICAgIChXZWJLaXQ6OkJhY2tpbmdTdG9yZTo6aXNCYWNrZWRCeVNoYXJlZE1lbW9yeSk6
CisgICAgICAgICogU2hhcmVkL0ltYWdlT3B0aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFy
ZWQvVXNlck1lc3NhZ2VDb2RlcnMuaDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lc3NhZ2VFbmNv
ZGVyOjpiYXNlRW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lc3NhZ2VEZWNvZGVyOjpi
YXNlRGVjb2RlKToKKyAgICAgICAgQWxsb3cgYSBXS0ltYWdlUmVmIHRvIGJlIHBhc3NlZCBpbiB1
c2VyIG1lc3NhZ2VzLiAgUmlnaHQgbm93LCBpdCBvbmx5CisgICAgICAgIHdvcmtzIGlmIHRoZSBp
bWFnZSBpcyBzaGFyYWJsZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
OgorICAgICAgICAoV0tQYWdlU2NhbGVXZWJWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
VUlDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVSUNsaWVudDo6d2luZG93RnJhbWUp
OgorICAgICAgICBVc2UgdGhlIG1vcmUgZXhwbGljaXQgY29udmVyc2lvbiBmdW5jdGlvbiBuYW1l
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBh
Z2UuY3BwOgorICAgICAgICAoV0tCdW5kbGVQYWdlQ3JlYXRlU25hcHNob3RJblZpZXdDb29yZGlu
YXRlcyk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VDcmVhdGVTbmFwc2hvdEluRG9jdW1lbnRDb29y
ZGluYXRlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlUGFnZU92ZXJsYXkuY3BwOgorICAgICAgICAoV0tCdW5kbGVQYWdlT3ZlcmxheVNldE5l
ZWRzRGlzcGxheSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzbmFwc2hvdEluVmlld0Nvb3JkaW5hdGVzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c25hcHNob3RJbkRvY3VtZW50Q29vcmRpbmF0ZXMpOgor
ICAgICAgICBBZGQgZnVuY3Rpb24gdG8gdGFrZSB0aGUgc25hcHNob3QuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYktpdDIucHJvOgorICAg
ICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3aW4v
V2ViS2l0Mi52Y3Byb2o6CisgICAgICAgIEFkZCBuZXcgZmlsZXMuCisKIDIwMTAtMTItMjcgIFNh
bSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMg
Q2FybHNzb24uCkluZGV4OiBXZWJLaXQyL1dlYktpdDIucHJvCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dDIvV2ViS2l0Mi5wcm8JKHJldmlzaW9uIDc0NjkzKQorKysgV2ViS2l0Mi9XZWJLaXQyLnBybwko
d29ya2luZyBjb3B5KQpAQCAtMjIyLDYgKzIyMiw3IEBAIEhFQURFUlMgKz0gXAogICAgIFNoYXJl
ZC9BUEkvYy9XS0NvbnRleHRNZW51SXRlbS5oIFwKICAgICBTaGFyZWQvQVBJL2MvV0tDb250ZXh0
TWVudUl0ZW1UeXBlcy5oIFwKICAgICBTaGFyZWQvQVBJL2MvV0tHZW9tZXRyeS5oIFwKKyAgICBT
aGFyZWQvQVBJL2MvV0tJbWFnZS5oIFwKICAgICBTaGFyZWQvQVBJL2MvV0tOdW1iZXIuaCBcCiAg
ICAgU2hhcmVkL0FQSS9jL1dLUGFnZUxvYWRUeXBlcy5oIFwKICAgICBTaGFyZWQvQVBJL2MvV0tT
ZWN1cml0eU9yaWdpbi5oIFwKQEAgLTIzOSw2ICsyNDAsNyBAQCBIRUFERVJTICs9IFwKICAgICBT
aGFyZWQvQ2hpbGRQcm9jZXNzLmggXAogICAgIFNoYXJlZC9Db3JlSVBDU3VwcG9ydC9EcmF3aW5n
QXJlYU1lc3NhZ2VLaW5kcy5oIFwKICAgICBTaGFyZWQvQ29yZUlQQ1N1cHBvcnQvRHJhd2luZ0Fy
ZWFQcm94eU1lc3NhZ2VLaW5kcy5oIFwKKyAgICBTaGFyZWQvSW1hZ2VPcHRpb25zLmggXAogICAg
IFNoYXJlZC9JbW11dGFibGVBcnJheS5oIFwKICAgICBTaGFyZWQvSW1tdXRhYmxlRGljdGlvbmFy
eS5oIFwKICAgICBTaGFyZWQvTXV0YWJsZUFycmF5LmggXApAQCAtMjU4LDYgKzI2MCw3IEBAIEhF
QURFUlMgKz0gXAogICAgIFNoYXJlZC9XZWJFdmVudC5oIFwKICAgICBTaGFyZWQvV2ViRXZlbnRD
b252ZXJzaW9uLmggXAogICAgIFNoYXJlZC9XZWJGaW5kT3B0aW9ucy5oIFwKKyAgICBTaGFyZWQv
V2ViSW1hZ2UuaCBcCiAgICAgU2hhcmVkL1dlYk5hdmlnYXRpb25EYXRhU3RvcmUuaCBcCiAgICAg
U2hhcmVkL1dlYk51bWJlci5oIFwKICAgICBTaGFyZWQvV2ViT3BlblBhbmVsUGFyYW1ldGVycy5o
IFwKQEAgLTQzOSw2ICs0NDIsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBTaGFyZWQvQVBJL2MvV0tB
cnJheS5jcHAgXAogICAgIFNoYXJlZC9BUEkvYy9XS0NlcnRpZmljYXRlSW5mby5jcHAgXAogICAg
IFNoYXJlZC9BUEkvYy9XS0NvbnRleHRNZW51SXRlbS5jcHAgXAorICAgIFNoYXJlZC9BUEkvYy9X
S0ltYWdlLmNwcCBcCiAgICAgU2hhcmVkL0FQSS9jL1dLTnVtYmVyLmNwcCBcCiAgICAgU2hhcmVk
L0FQSS9jL1dLU2VjdXJpdHlPcmlnaW4uY3BwIFwKICAgICBTaGFyZWQvQVBJL2MvV0tTZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwIFwKQEAgLTQ2NSw2ICs0NjksNyBAQCBTT1VSQ0VTICs9IFwKICAg
ICBTaGFyZWQvV2ViRXZlbnQuY3BwIFwKICAgICBTaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNw
cCBcCiAgICAgU2hhcmVkL1dlYktleWJvYXJkRXZlbnQuY3BwIFwKKyAgICBTaGFyZWQvV2ViSW1h
Z2UuY3BwIFwKICAgICBTaGFyZWQvV2ViTW91c2VFdmVudC5jcHAgXAogICAgIFNoYXJlZC9XZWJP
cGVuUGFuZWxQYXJhbWV0ZXJzLmNwcCBcCiAgICAgU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwIFwKSW5kZXg6IFdlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCShyZXZpc2lvbiA3NDY5MykKKysrIFdlYktp
dDIvU2hhcmVkL0FQSU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBAIHB1
YmxpYzoKICAgICAgICAgVHlwZURhdGEsCiAgICAgICAgIFR5cGVEaWN0aW9uYXJ5LAogICAgICAg
ICBUeXBlRXJyb3IsCisgICAgICAgIFR5cGVJbWFnZSwKICAgICAgICAgVHlwZVByb3RlY3Rpb25T
cGFjZSwKICAgICAgICAgVHlwZVNlY3VyaXR5T3JpZ2luLAogICAgICAgICBUeXBlU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLApJbmRleDogV2ViS2l0Mi9TaGFyZWQvQmFja2luZ1N0b3JlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvQmFja2luZ1N0b3JlLmgJKHJldmlzaW9uIDc0NjkzKQor
KysgV2ViS2l0Mi9TaGFyZWQvQmFja2luZ1N0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDEx
ICs2NiwxMiBAQCBwdWJsaWM6CiAgICAgLy8gUGFpbnQgdGhlIGJhY2tpbmcgc3RvcmUgaW50byB0
aGUgZ2l2ZW4gY29udGV4dC4KICAgICB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkc3RQb2ludCwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgc3JjUmVjdCk7CiAKKyAgICBib29sIGlzQmFja2VkQnlTaGFyZWRNZW1vcnkoKSBjb25z
dCB7IHJldHVybiBtX3NoYXJlZE1lbW9yeTsgfQorCiBwcml2YXRlOgogICAgIEJhY2tpbmdTdG9y
ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgdm9pZCopOwogICAgIEJhY2tpbmdTdG9yZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiwgUGFzc1JlZlB0cjxTaGFyZWRNZW1vcnk+KTsKIAotICAgIGJv
b2wgaXNCYWNrZWRCeVNoYXJlZE1lbW9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkTWVtb3J5
OyB9CiAgICAgc3RhdGljIHNpemVfdCBudW1CeXRlc0ZvclNpemUoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgc2l6ZSkgeyByZXR1cm4gc2l6ZS53aWR0aCgpICogc2l6ZS5oZWlnaHQoKSAqIDQ7IH0K
IAogICAgIHZvaWQqIGRhdGEoKSBjb25zdDsKSW5kZXg6IFdlYktpdDIvU2hhcmVkL0ltYWdlT3B0
aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL0ltYWdlT3B0aW9ucy5oCShyZXZp
c2lvbiAwKQorKysgV2ViS2l0Mi9TaGFyZWQvSW1hZ2VPcHRpb25zLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEltYWdlT3B0aW9uc19oCisjZGVm
aW5lIEltYWdlT3B0aW9uc19oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIEltYWdlT3B0
aW9ucyB7CisgICAgSW1hZ2VPcHRpb25zU2hhcmFibGUgPSAxIDw8IDAsCit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEltYWdlT3B0aW9uc19oCkluZGV4OiBXZWJLaXQy
L1NoYXJlZC9Vc2VyTWVzc2FnZUNvZGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVk
L1VzZXJNZXNzYWdlQ29kZXJzLmgJKHJldmlzaW9uIDc0NjkzKQorKysgV2ViS2l0Mi9TaGFyZWQv
VXNlck1lc3NhZ2VDb2RlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2lu
Y2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCiAjaW5jbHVkZSAiSW1tdXRhYmxlRGljdGlvbmFyeS5o
IgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYkltYWdl
LmgiCiAjaW5jbHVkZSAiV2ViTnVtYmVyLmgiCiAjaW5jbHVkZSAiV2ViU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCkBAIC0zOSwxMCArNDAsMTEgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAvLyAgIC0gTnVsbCAtPiBOdWxsCiAvLyAgIC0gQXJyYXkgLT4gQXJy
YXkKIC8vICAgLSBEaWN0aW9uYXJ5IC0+IERpY3Rpb25hcnkKLS8vICAgLSBTdHJpbmcgLT4gU3Ry
aW5nCiAvLyAgIC0gU2VyaWFsaXplZFNjcmlwdFZhbHVlIC0+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZQorLy8gICAtIFN0cmluZyAtPiBTdHJpbmcKIC8vICAgLSBVc2VyQ29udGVudFVSTFBhdHRlcm4g
LT4gVXNlckNvbnRlbnRVUkxQYXR0ZXJuCiAvLyAgIC0gV2ViRG91YmxlIC0+IFdlYkRvdWJsZQor
Ly8gICAtIFdlYkltYWdlIC0+IFdlYkltYWdlCiAvLyAgIC0gV2ViVUludDY0IC0+IFdlYlVJbnQ2
NAogLy8gICAtIFdlYlVSTCAtPiBXZWJVUkwKIApAQCAtMTE1LDYgKzExNywyMyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUodXJsUGF0dGVybi0+cGF0dGVyblN0cmluZygp
KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CisgICAgICAgIGNhc2UgQVBJ
T2JqZWN0OjpUeXBlSW1hZ2U6IHsKKyAgICAgICAgICAgIFdlYkltYWdlKiBpbWFnZSA9IHN0YXRp
Y19jYXN0PFdlYkltYWdlKj4obV9yb290KTsKKyAgICAgICAgICAgIGlmICghaW1hZ2UtPmJhY2tp
bmdTdG9yZSgpLT5pc0JhY2tlZEJ5U2hhcmVkTWVtb3J5KCkpIHsKKyAgICAgICAgICAgICAgICBl
bmNvZGVyLT5lbmNvZGUoZmFsc2UpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7Cisg
ICAgICAgICAgICBpZiAoIWltYWdlLT5iYWNraW5nU3RvcmUoKS0+Y3JlYXRlSGFuZGxlKGhhbmRs
ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBlbmNvZGVy
LT5lbmNvZGUodHJ1ZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29k
ZShpbWFnZS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShoYW5kbGUpOwor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xMzYsMTAgKzE1NSwxMSBAQCBwcm90ZWN0
ZWQ6CiAvLyAgIC0gTnVsbCAtPiBOdWxsCiAvLyAgIC0gQXJyYXkgLT4gQXJyYXkKIC8vICAgLSBE
aWN0aW9uYXJ5IC0+IERpY3Rpb25hcnkKLS8vICAgLSBTdHJpbmcgLT4gU3RyaW5nCiAvLyAgIC0g
U2VyaWFsaXplZFNjcmlwdFZhbHVlIC0+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZQorLy8gICAtIFN0
cmluZyAtPiBTdHJpbmcKIC8vICAgLSBVc2VyQ29udGVudFVSTFBhdHRlcm4gLT4gVXNlckNvbnRl
bnRVUkxQYXR0ZXJuCiAvLyAgIC0gV2ViRG91YmxlIC0+IFdlYkRvdWJsZQorLy8gICAtIFdlYklt
YWdlIC0+IFdlYkltYWdlCiAvLyAgIC0gV2ViVUludDY0IC0+IFdlYlVJbnQ2NAogLy8gICAtIFdl
YlVSTCAtPiBXZWJVUkwKIApAQCAtMjQ1LDYgKzI2NSwyNSBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBjb2Rlci5tX3Jvb3QgPSBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46OmNyZWF0ZShzdHJpbmcp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBBUElPYmplY3Q6
OlR5cGVJbWFnZTogeworICAgICAgICAgICAgYm9vbCBkaWRFbmNvZGUgPSBmYWxzZTsKKyAgICAg
ICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGRpZEVuY29kZSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBpZiAoIWRpZEVuY29kZSkKKyAgICAgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAgICAgV2ViQ29yZTo6SW50U2l6ZSBzaXplOworICAgICAg
ICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoc2l6ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgICAgICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CisgICAg
ICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShoYW5kbGUpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICAgICAgY29kZXIubV9yb290ID0gV2ViSW1hZ2U6OmNyZWF0
ZShCYWNraW5nU3RvcmU6OmNyZWF0ZShzaXplLCBoYW5kbGUpKTsKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQpJbmRleDogV2ViS2l0Mi9TaGFyZWQvV2ViSW1hZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvU2hhcmVkL1dlYkltYWdlLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIv
U2hhcmVkL1dlYkltYWdlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJXZWJJbWFnZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NSZWZQdHI8V2ViSW1hZ2U+IFdlYkltYWdlOjpj
cmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgSW1hZ2VPcHRpb25zIG9wdGlvbnMpCit7CisgICAg
aWYgKG9wdGlvbnMgJiBJbWFnZU9wdGlvbnNTaGFyYWJsZSkKKyAgICAgICAgcmV0dXJuIFdlYklt
YWdlOjpjcmVhdGUoQmFja2luZ1N0b3JlOjpjcmVhdGVTaGFyYWJsZShzaXplKSk7CisgICAgcmV0
dXJuIFdlYkltYWdlOjpjcmVhdGUoQmFja2luZ1N0b3JlOjpjcmVhdGUoc2l6ZSkpOworfQorCitQ
YXNzUmVmUHRyPFdlYkltYWdlPiBXZWJJbWFnZTo6Y3JlYXRlKFBhc3NSZWZQdHI8QmFja2luZ1N0
b3JlPiBiYWNraW5nU3RvcmUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJJbWFnZShi
YWNraW5nU3RvcmUpKTsKK30KKworY29uc3QgSW50U2l6ZSYgV2ViSW1hZ2U6OnNpemUoKSBjb25z
dAoreworICAgIHJldHVybiBtX2JhY2tpbmdTdG9yZS0+c2l6ZSgpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdDIvU2hhcmVkL1dlYkltYWdlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9TaGFyZWQvV2ViSW1hZ2UuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvU2hh
cmVkL1dlYkltYWdlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYkltYWdlX2gKKyNkZWZpbmUgV2ViSW1hZ2VfaAorCisjaW5jbHVkZSAiQVBJ
T2JqZWN0LmgiCisjaW5jbHVkZSAiQmFja2luZ1N0b3JlLmgiCisjaW5jbHVkZSAiSW1hZ2VPcHRp
b25zLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
Ky8vIFdlYkltYWdlIC0gQW4gaW1hZ2UgdHlwZSBzdWl0YWJsZSBmb3IgdmVuZGluZyB0byBhbiBB
UEkuCisKK2NsYXNzIFdlYkltYWdlIDogcHVibGljIEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAg
c3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVJbWFnZTsKKworICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYkltYWdlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEltYWdlT3B0
aW9ucyk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IGNyZWF0ZShQYXNzUmVmUHRy
PEJhY2tpbmdTdG9yZT4pOworCisgICAgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSgpIGNv
bnN0OworCisgICAgQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUoKSBjb25zdCB7IHJldHVybiBt
X2JhY2tpbmdTdG9yZS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFdlYkltYWdlKFBhc3NSZWZQ
dHI8QmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUpCisgICAgICAgIDogbV9iYWNraW5nU3RvcmUo
YmFja2luZ1N0b3JlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0K
KworICAgIFJlZlB0cjxCYWNraW5nU3RvcmU+IG1fYmFja2luZ1N0b3JlOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJJbWFnZV9oCkluZGV4OiBXZWJLaXQyL1No
YXJlZC9BUEkvYy9XS0Jhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9BUEkvYy9X
S0Jhc2UuaAkocmV2aXNpb24gNzQ2OTMpCisrKyBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTEgKzQ0LDEyIEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0
IE9wYXF1ZVdLRGljdGlvbmFyeSoKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZVdLRGljdGlvbmFyeSog
V0tNdXRhYmxlRGljdGlvbmFyeVJlZjsKIAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tC
b29sZWFuKiBXS0Jvb2xlYW5SZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0NlcnRp
ZmljYXRlSW5mbyogV0tDZXJ0aWZpY2F0ZUluZm9SZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBP
cGFxdWVXS0NvbnRleHRNZW51SXRlbSogV0tDb250ZXh0TWVudUl0ZW1SZWY7CiB0eXBlZGVmIGNv
bnN0IHN0cnVjdCBPcGFxdWVXS0RhdGEqIFdLRGF0YVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0
IE9wYXF1ZVdLRG91YmxlKiBXS0RvdWJsZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1
ZVdLRXJyb3IqIFdLRXJyb3JSZWY7Ci10eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0NlcnRp
ZmljYXRlSW5mbyogV0tDZXJ0aWZpY2F0ZUluZm9SZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBP
cGFxdWVXS0ltYWdlKiBXS0ltYWdlUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tT
ZWN1cml0eU9yaWdpbiogV0tTZWN1cml0eU9yaWdpblJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0
IE9wYXF1ZVdLU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJl
ZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLU3RyaW5nKiBXS1N0cmluZ1JlZjsKSW5k
ZXg6IFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dDIvU2hhcmVkL0FQSS9jL1dLSW1hZ2UuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9TaGFy
ZWQvQVBJL2MvV0tJbWFnZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiV0tJbWFnZS5oIgorCisjaW5jbHVkZSAiV0tTaGFyZWRBUElDYXN0
LmgiCisjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKwor
V0tUeXBlSUQgV0tJbWFnZUdldFR5cGVJRCgpCit7CisgICAgcmV0dXJuIHRvQVBJKFdlYkltYWdl
OjpBUElUeXBlKTsKK30KKworV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlKFdLU2l6ZSBzaXplLCBX
S0ltYWdlT3B0aW9ucyBvcHRpb25zKQoreworICAgIFJlZlB0cjxXZWJJbWFnZT4gd2ViSW1hZ2Ug
PSBXZWJJbWFnZTo6Y3JlYXRlKHRvSW50U2l6ZShzaXplKSwgdG9JbWFnZU9wdGlvbnMob3B0aW9u
cykpOworICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5yZWxlYXNlKCkubGVha1JlZigpKTsKK30K
KworV0tTaXplIFdLSW1hZ2VHZXRTaXplKFdLSW1hZ2VSZWYgaW1hZ2VSZWYpCit7CisgICAgcmV0
dXJuIHRvQVBJKHRvSW1wbChpbWFnZVJlZiktPnNpemUoKSk7Cit9CkluZGV4OiBXZWJLaXQyL1No
YXJlZC9BUEkvYy9XS0ltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvQVBJL2Mv
V0tJbWFnZS5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tJbWFnZS5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS0lt
YWdlX2gKKyNkZWZpbmUgV0tJbWFnZV9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgor
I2luY2x1ZGUgPFdlYktpdDIvV0tHZW9tZXRyeS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4
dGVybiAiQyIgeworI2VuZGlmCisKK2VudW0geworICAgIGtXS0ltYWdlT3B0aW9uc1NoYXJhYmxl
ID0gMSA8PCAwLAorfTsKK3R5cGVkZWYgdWludDMyX3QgV0tJbWFnZU9wdGlvbnM7CisKK1dLX0VY
UE9SVCBXS1R5cGVJRCBXS0ltYWdlR2V0VHlwZUlEKCk7CisKK1dLX0VYUE9SVCBXS0ltYWdlUmVm
IFdLSW1hZ2VDcmVhdGUoV0tTaXplIHNpemUsIFdLSW1hZ2VPcHRpb25zIG9wdGlvbnMpOworCitX
S19FWFBPUlQgV0tTaXplIFdLSW1hZ2VHZXRTaXplKFdLSW1hZ2VSZWYgaW1hZ2UpOworCisjaWZk
ZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogV0tJbWFnZV9oICovCkluZGV4
OiBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAkocmV2aXNpb24gNzQ2OTMpCisr
KyBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAkod29ya2luZyBjb3B5KQpA
QCAtMjYsMTIgKzI2LDE0IEBACiAjaWZuZGVmIFdLU2hhcmVkQVBJQ2FzdF9oCiAjZGVmaW5lIFdL
U2hhcmVkQVBJQ2FzdF9oCiAKKyNpbmNsdWRlICJJbWFnZU9wdGlvbnMuaCIKICNpbmNsdWRlICJT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIgogI2luY2x1ZGUgIldLQmFzZS5oIgogI2luY2x1
ZGUgIldLQ29udGV4dE1lbnVJdGVtVHlwZXMuaCIKICNpbmNsdWRlICJXS0V2ZW50LmgiCiAjaW5j
bHVkZSAiV0tGaW5kT3B0aW9ucy5oIgogI2luY2x1ZGUgIldLR2VvbWV0cnkuaCIKKyNpbmNsdWRl
ICJXS0ltYWdlLmgiCiAjaW5jbHVkZSAiV0tQYWdlTG9hZFR5cGVzLmgiCiAjaW5jbHVkZSAiV2Vi
RXJyb3IuaCIKICNpbmNsdWRlICJXZWJFdmVudC5oIgpAQCAtNDIsNyArNDQsNiBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnVJdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJl
Y3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL0ludFBvaW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVk
ZSA8d3RmL1R5cGVUcmFpdHMuaD4KIApAQCAtNTUsNiArNTYsNyBAQCBjbGFzcyBNdXRhYmxlRGlj
dGlvbmFyeTsKIGNsYXNzIFdlYkNlcnRpZmljYXRlSW5mbzsKIGNsYXNzIFdlYkNvbnRleHRNZW51
SXRlbTsKIGNsYXNzIFdlYkRhdGE7CitjbGFzcyBXZWJJbWFnZTsKIGNsYXNzIFdlYlNlY3VyaXR5
T3JpZ2luOwogY2xhc3MgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogY2xhc3MgV2ViVVJMUmVx
dWVzdDsKQEAgLTc2LDYgKzc4LDcgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLRGF0YVJlZiwgV2Vi
RGF0YSkKIFdLX0FERF9BUElfTUFQUElORyhXS0RpY3Rpb25hcnlSZWYsIEltbXV0YWJsZURpY3Rp
b25hcnkpCiBXS19BRERfQVBJX01BUFBJTkcoV0tEb3VibGVSZWYsIFdlYkRvdWJsZSkKIFdLX0FE
RF9BUElfTUFQUElORyhXS0Vycm9yUmVmLCBXZWJFcnJvcikKK1dLX0FERF9BUElfTUFQUElORyhX
S0ltYWdlUmVmLCBXZWJJbWFnZSkKIFdLX0FERF9BUElfTUFQUElORyhXS011dGFibGVBcnJheVJl
ZiwgTXV0YWJsZUFycmF5KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLTXV0YWJsZURpY3Rpb25hcnlS
ZWYsIE11dGFibGVEaWN0aW9uYXJ5KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLU2VjdXJpdHlPcmln
aW5SZWYsIFdlYlNlY3VyaXR5T3JpZ2luKQpAQCAtMTcxLDE3ICsxNzQsMjggQEAgaW5saW5lIFBy
b3h5aW5nUmVmUHRyPFdlYkVycm9yPiB0b0FQSShjbwogCiAvKiBHZW9tZXRyeSBjb252ZXJzaW9u
cyAqLwogCi1pbmxpbmUgV2ViQ29yZTo6RmxvYXRSZWN0IHRvSW1wbChjb25zdCBXS1JlY3QmIHdr
UmVjdCkKK2lubGluZSBXZWJDb3JlOjpGbG9hdFJlY3QgdG9GbG9hdFJlY3QoY29uc3QgV0tSZWN0
JiB3a1JlY3QpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OkZsb2F0UmVjdChzdGF0aWNfY2FzdDxm
bG9hdD4od2tSZWN0Lm9yaWdpbi54KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHdrUmVjdC5vcmlnaW4u
eSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxmbG9hdD4od2tS
ZWN0LnNpemUud2lkdGgpLCBzdGF0aWNfY2FzdDxmbG9hdD4od2tSZWN0LnNpemUuaGVpZ2h0KSk7
CiB9CiAKLWlubGluZSBXZWJDb3JlOjpJbnRQb2ludCB0b0ltcGwoY29uc3QgV0tQb2ludCYgd2tQ
b2ludCkKK2lubGluZSBXZWJDb3JlOjpJbnRTaXplIHRvSW50U2l6ZShjb25zdCBXS1NpemUmIHdr
U2l6ZSkKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6SW50U2l6ZShzdGF0aWNfY2FzdDxpbnQ+KHdr
U2l6ZS53aWR0aCksIHN0YXRpY19jYXN0PGludD4od2tTaXplLmhlaWdodCkpOworfQorCitpbmxp
bmUgV2ViQ29yZTo6SW50UG9pbnQgdG9JbnRQb2ludChjb25zdCBXS1BvaW50JiB3a1BvaW50KQog
ewogICAgIHJldHVybiBXZWJDb3JlOjpJbnRQb2ludChzdGF0aWNfY2FzdDxpbnQ+KHdrUG9pbnQu
eCksIHN0YXRpY19jYXN0PGludD4od2tQb2ludC55KSk7CiB9CiAKK2lubGluZSBXZWJDb3JlOjpJ
bnRSZWN0IHRvSW50UmVjdChjb25zdCBXS1JlY3QmIHdrUmVjdCkKK3sKKyAgICByZXR1cm4gV2Vi
Q29yZTo6SW50UmVjdChzdGF0aWNfY2FzdDxpbnQ+KHdrUmVjdC5vcmlnaW4ueCksIHN0YXRpY19j
YXN0PGludD4od2tSZWN0Lm9yaWdpbi55KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDxpbnQ+KHdrUmVjdC5zaXplLndpZHRoKSwgc3RhdGljX2Nhc3Q8aW50Pih3a1Jl
Y3Quc2l6ZS5oZWlnaHQpKTsKK30KKwogaW5saW5lIFdLUmVjdCB0b0FQSShjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgV0tSZWN0IHdrUmVjdDsKQEAgLTIwMiw2ICsyMTYs
MTQgQEAgaW5saW5lIFdLUmVjdCB0b0FQSShjb25zdCBXZWJDb3JlOjpJbnRSZQogICAgIHJldHVy
biB3a1JlY3Q7CiB9CiAKK2lubGluZSBXS1NpemUgdG9BUEkoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgc2l6ZSkKK3sKKyAgICBXS1NpemUgd2tTaXplOworICAgIHdrU2l6ZS53aWR0aCA9IHNpemUu
d2lkdGgoKTsKKyAgICB3a1NpemUuaGVpZ2h0ID0gc2l6ZS5oZWlnaHQoKTsKKyAgICByZXR1cm4g
d2tTaXplOworfQorCiBpbmxpbmUgV0tQb2ludCB0b0FQSShjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgcG9pbnQpCiB7CiAgICAgV0tQb2ludCB3a1BvaW50OwpAQCAtNjk4LDYgKzcyMCwxNiBAQCBp
bmxpbmUgV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSB0b0FQCiAgICAgcmV0dXJuIHdrVHlw
ZTsKIH0KIAoraW5saW5lIEltYWdlT3B0aW9ucyB0b0ltYWdlT3B0aW9ucyhXS0ltYWdlT3B0aW9u
cyB3a0ltYWdlT3B0aW9ucykKK3sKKyAgICB1bnNpZ25lZCBpbWFnZU9wdGlvbnMgPSAwOworCisg
ICAgaWYgKHdrSW1hZ2VPcHRpb25zICYga1dLSW1hZ2VPcHRpb25zU2hhcmFibGUpCisgICAgICAg
IGltYWdlT3B0aW9ucyB8PSBJbWFnZU9wdGlvbnNTaGFyYWJsZTsKKworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxJbWFnZU9wdGlvbnM+KGltYWdlT3B0aW9ucyk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCiAjZW5kaWYgLy8gV0tTaGFyZWRBUElDYXN0X2gKSW5kZXg6IFdlYktpdDIvU2hh
cmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvY2cvV0tJbWFnZUNHLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvU2hhcmVkL0FQ
SS9jL2NnL1dLSW1hZ2VDRy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiV0tJbWFnZUNHLmgiCisKKyNpbmNsdWRlICJXS1NoYXJlZEFQSUNh
c3QuaCIKKyNpbmNsdWRlICJXZWJJbWFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3ND
b250ZXh0Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKworQ0dJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlQ0dJbWFnZShXS0ltYWdlUmVmIGltYWdl
UmVmKQoreworICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IHNvdXJjZUNvbnRleHQgPSB0b0lt
cGwoaW1hZ2VSZWYpLT5iYWNraW5nU3RvcmUoKS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7Cisg
ICAgcmV0dXJuIENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKHNvdXJjZUNvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpKTsKK30KSW5kZXg6IFdlYktpdDIvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VD
Ry5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5oCShy
ZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLSW1hZ2VDR19o
CisjZGVmaW5lIFdLSW1hZ2VDR19oCisKKyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dJbWFnZS5o
PgorI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0
ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIENHSW1hZ2VSZWYgV0tJbWFnZUNyZWF0ZUNH
SW1hZ2UoV0tJbWFnZVJlZiBpbWFnZSk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlm
CisKKyNlbmRpZiAvKiBXS0ltYWdlQ0dfaCAqLwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
VUlDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlVJQ2xpZW50
LmNwcAkocmV2aXNpb24gNzQ2OTMpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNCw3ICsyMTQsNyBAQCBGbG9hdFJlY3QgV2ViVUlDbGll
bnQ6OndpbmRvd0ZyYW1lKFdlYlBhCiAgICAgaWYgKCFtX2NsaWVudC5nZXRXaW5kb3dGcmFtZSkK
ICAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOwogCi0gICAgcmV0dXJuIHRvSW1wbChtX2NsaWVu
dC5nZXRXaW5kb3dGcmFtZSh0b0FQSShwYWdlKSwgbV9jbGllbnQuY2xpZW50SW5mbykpOworICAg
IHJldHVybiB0b0Zsb2F0UmVjdChtX2NsaWVudC5nZXRXaW5kb3dGcmFtZSh0b0FQSShwYWdlKSwg
bV9jbGllbnQuY2xpZW50SW5mbykpOwogfQogCiBib29sIFdlYlVJQ2xpZW50OjpjYW5SdW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWwoKQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
CShyZXZpc2lvbiA3NDY5MykKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI1Miw3ICsyNTIsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VBbmRU
ZXh0Wm9vbUZhY3RvcnMoV0tQCiAKIHZvaWQgV0tQYWdlU2NhbGVXZWJWaWV3KFdLUGFnZVJlZiBw
YWdlUmVmLCBkb3VibGUgc2NhbGUsIFdLUG9pbnQgb3JpZ2luKQogewotICAgIHRvSW1wbChwYWdl
UmVmKS0+c2NhbGVXZWJWaWV3KHNjYWxlLCB0b0ltcGwob3JpZ2luKSk7CisgICAgdG9JbXBsKHBh
Z2VSZWYpLT5zY2FsZVdlYlZpZXcoc2NhbGUsIHRvSW50UG9pbnQob3JpZ2luKSk7CiB9CiAKIGRv
dWJsZSBXS1BhZ2VHZXRWaWV3U2NhbGVGYWN0b3IoV0tQYWdlUmVmIHBhZ2VSZWYpCkluZGV4OiBX
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNzQ2OTMp
CisrKyBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtNTI0LDYgKzUyNCwxMyBAQAogCQlCQ0NCNzVDNjEyMDNBMUNFMDAyMjJEMUIgLyog
V2ViQ29udGV4dE1lc3NhZ2VLaW5kcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkNDQjc1QzUxMjAzQTFDRTAwMjIyRDFCIC8qIFdlYkNvbnRleHRNZXNz
YWdlS2luZHMuaCAqLzsgfTsKIAkJQkNDRjY3MkQxMkM3RURGNzAwOEY5QzM1IC8qIE9yaWdpbkFu
ZERhdGFiYXNlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNDRjY3MkMxMkM3RURGNzAwOEY5QzM1IC8qIE9yaWdpbkFuZERhdGFiYXNlcy5oICovOyB9
OwogCQlCQ0NGNjczMzEyQzdGMTVDMDA4RjlDMzUgLyogT3JpZ2luQW5kRGF0YWJhc2VzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQ0Y2NzMyMTJD
N0YxNUMwMDhGOUMzNSAvKiBPcmlnaW5BbmREYXRhYmFzZXMuY3BwICovOyB9OworCQlCQ0NGNkFC
QzEyQzkxRUY5MDA4RjlDMzUgLyogV2ViSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNDRjZBQkExMkM5MUVGOTAwOEY5QzM1IC8qIFdlYklt
YWdlLmNwcCAqLzsgfTsKKwkJQkNDRjZBQkQxMkM5MUVGOTAwOEY5QzM1IC8qIFdlYkltYWdlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0NGNkFCQjEy
QzkxRUY5MDA4RjlDMzUgLyogV2ViSW1hZ2UuaCAqLzsgfTsKKwkJQkNDRjZBQzIxMkM5MUYzNDAw
OEY5QzM1IC8qIFdLSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkNDRjZBQzAxMkM5MUYzNDAwOEY5QzM1IC8qIFdLSW1hZ2UuY3BwICovOyB9
OworCQlCQ0NGNkFDMzEyQzkxRjM0MDA4RjlDMzUgLyogV0tJbWFnZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNDRjZBQzExMkM5MUYzNDAwOEY5QzM1
IC8qIFdLSW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07
IH07CisJCUJDQ0Y2QUM5MTJDOTFGNTkwMDhGOUMzNSAvKiBXS0ltYWdlQ0cuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNDRjZBQzcxMkM5MUY1OTAw
OEY5QzM1IC8qIFdLSW1hZ2VDRy5jcHAgKi87IH07CisJCUJDQ0Y2QUNBMTJDOTFGNTkwMDhGOUMz
NSAvKiBXS0ltYWdlQ0cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDQ0Y2QUM4MTJDOTFGNTkwMDhGOUMzNSAvKiBXS0ltYWdlQ0cuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCUJDQ0Y2QjI1MTJDOTNFN0Ew
MDhGOUMzNSAvKiBJbWFnZU9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDQ0Y2QjIzMTJDOTNFN0EwMDhGOUMzNSAvKiBJbWFnZU9wdGlvbnMu
aCAqLzsgfTsKIAkJQkNEMDA0MkQxMTBDMUUyNzAwM0I4QTY3IC8qIENvcmVTZXJ2aWNlcy5mcmFt
ZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
Q0QwMDQyQzExMEMxRTI3MDAzQjhBNjcgLyogQ29yZVNlcnZpY2VzLmZyYW1ld29yayAqLzsgfTsK
IAkJQkNEMDEzOUIxMTBGQTQyMDAwM0I4QTY3IC8qIFdLRnJhbWUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDAxMzk3MTEwRkE0MjAwMDNCOEE2NyAv
KiBXS0ZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9
OwogCQlCQ0QwMTM5QzExMEZBNDIwMDAzQjhBNjcgLyogV0tGcmFtZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0QwMTM5ODExMEZBNDIwMDAzQjhB
NjcgLyogV0tGcmFtZS5jcHAgKi87IH07CkBAIC0xMTk3LDYgKzEyMDQsMTMgQEAKIAkJQkNDQjc1
QzUxMjAzQTFDRTAwMjIyRDFCIC8qIFdlYkNvbnRleHRNZXNzYWdlS2luZHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29udGV4dE1lc3NhZ2VLaW5kcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0NGNjcyQzEyQzdFREY3MDA4RjlDMzUgLyogT3JpZ2lu
QW5kRGF0YWJhc2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9yaWdpbkFu
ZERhdGFiYXNlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0NGNjczMjEyQzdG
MTVDMDA4RjlDMzUgLyogT3JpZ2luQW5kRGF0YWJhc2VzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE9yaWdpbkFuZERhdGFiYXNlcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUJDQ0Y2QUJBMTJDOTFFRjkwMDhGOUMzNSAvKiBXZWJJbWFnZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJbWFnZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQ0Y2QUJCMTJDOTFFRjkwMDhGOUMzNSAvKiBXZWJJ
bWFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbWFnZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0NGNkFDMDEyQzkxRjM0MDA4RjlDMzUgLyogV0tJ
bWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0ltYWdlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNDRjZBQzExMkM5MUYzNDAwOEY5QzM1
IC8qIFdLSW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tJbWFnZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0NGNkFDNzEyQzkxRjU5MDA4RjlDMzUg
LyogV0tJbWFnZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdL
SW1hZ2VDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQ0Y2QUM4MTJDOTFG
NTkwMDhGOUMzNSAvKiBXS0ltYWdlQ0cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0tJbWFnZUNHLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQ0Y2QjIzMTJD
OTNFN0EwMDhGOUMzNSAvKiBJbWFnZU9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW1hZ2VPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
RDAwNDJDMTEwQzFFMjcwMDNCOEE2NyAvKiBDb3JlU2VydmljZXMuZnJhbWV3b3JrICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdv
cms7IG5hbWUgPSBDb3JlU2VydmljZXMuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1
dGU+IjsgfTsKIAkJQkNEMDEzOTcxMTBGQTQyMDAwM0I4QTY3IC8qIFdLRnJhbWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQ0QwMTM5ODExMEZBNDIwMDAzQjhBNjcgLyogV0tGcmFtZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0ZyYW1lLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE1ODQsMTEgKzE1OTgsMTEgQEAKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQkNEREIzMTQxMjRFQkNFRjAwNDhEMTNDIC8qIEFQSSAq
LywKLQkJCQlCQzExMUI1RjExMkY2MzVFMDAzMzdCQUIgLyogQ29yZUlQQ1N1cHBvcnQgKi8sCi0J
CQkJMUFBRTA1OEMxMjc5RENENDAwODUyNDE4IC8qIFBsdWdpbnMgKi8sCiAJCQkJMUFBRjBDNDcx
MkIxNjMyODAwOEU0OUUyIC8qIGNmICovLAogCQkJCUMwMUEyNUZGMTI2NjJGMjEwMEM5RUQ1NSAv
KiBjZyAqLywKKwkJCQlCQzExMUI1RjExMkY2MzVFMDAzMzdCQUIgLyogQ29yZUlQQ1N1cHBvcnQg
Ki8sCiAJCQkJQkMxMTFCNUExMTJGNjI4MjAwMzM3QkFCIC8qIG1hYyAqLywKKwkJCQkxQUFFMDU4
QzEyNzlEQ0Q0MDA4NTI0MTggLyogUGx1Z2lucyAqLywKIAkJCQkxQTNERDIwNTEyNUU1QTJGMDA0
NTE1RTYgLyogQVBJQ2xpZW50LmggKi8sCiAJCQkJQkNGMDRDOEMxMUZGOUI3RDAwRjg2QTU4IC8q
IEFQSU9iamVjdC5oICovLAogCQkJCTFBMDQzRDc5MTI0RkVGQzEwMEZGQkZCNSAvKiBCYWNraW5n
U3RvcmUuY3BwICovLApAQCAtMTU5OSw2ICsxNjEzLDcgQEAKIAkJCQkxQTZGOUY4RTExRTEzRUZD
MDBEQjEzNzEgLyogQ29tbWFuZExpbmUuaCAqLywKIAkJCQkwRkI2NTkyMjEyMDhCNERCMDA0NDgx
NkMgLyogRHJhd2luZ0FyZWFJbmZvLmggKi8sCiAJCQkJNzYyQjc0ODExMjBCQkEwMTAwODE5MzM5
IC8qIEZvbnRTbW9vdGhpbmdMZXZlbC5oICovLAorCQkJCUJDQ0Y2QjIzMTJDOTNFN0EwMDhGOUMz
NSAvKiBJbWFnZU9wdGlvbnMuaCAqLywKIAkJCQlCQzY0Njk2RDExREJFNjAzMDA2NDU1QjAgLyog
SW1tdXRhYmxlQXJyYXkuY3BwICovLAogCQkJCUJDNjQ2OTZFMTFEQkU2MDMwMDY0NTVCMCAvKiBJ
bW11dGFibGVBcnJheS5oICovLAogCQkJCUJDQkNCMENDMTIxNUUzM0EwMERFNTlDQSAvKiBJbW11
dGFibGVEaWN0aW9uYXJ5LmNwcCAqLywKQEAgLTE2MDksNiArMTYyNCw4IEBACiAJCQkJQkNCMEFF
RTcxMjJGNTNFMzAwQjEzNDFFIC8qIE11dGFibGVEaWN0aW9uYXJ5LmggKi8sCiAJCQkJQzAyQkZG
MTUxMjUxNEZEODAwOUNDQkVBIC8qIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCAqLywKIAkJCQlC
Q0M1NzE2MTExNUFEQjQyMDAxQ0NBRjkgLyogTm90SW1wbGVtZW50ZWQuaCAqLywKKwkJCQlCQ0NG
NjczMjEyQzdGMTVDMDA4RjlDMzUgLyogT3JpZ2luQW5kRGF0YWJhc2VzLmNwcCAqLywKKwkJCQlC
Q0NGNjcyQzEyQzdFREY3MDA4RjlDMzUgLyogT3JpZ2luQW5kRGF0YWJhc2VzLmggKi8sCiAJCQkJ
QkNDNDNBQjgxMjdCOTVEQzAwMzE3RjE2IC8qIFBsYXRmb3JtUG9wdXBNZW51RGF0YS5jcHAgKi8s
CiAJCQkJQkNDNDNBQjkxMjdCOTVEQzAwMzE3RjE2IC8qIFBsYXRmb3JtUG9wdXBNZW51RGF0YS5o
ICovLAogCQkJCUJDMkQwMjE2MTJBQzQxQ0IwMEU3MzJBMyAvKiBTYW1lRG9jdW1lbnROYXZpZ2F0
aW9uVHlwZS5oICovLApAQCAtMTYxOCwxNCArMTYzNSwxMiBAQAogCQkJCUJDQjBCMERGMTIzMDVB
QjEwMEIxMzQxRSAvKiBVc2VyTWVzc2FnZUNvZGVycy5oICovLAogCQkJCTFBMEYyOUM5MTIwQjM3
MTYwMDUzRDFCOSAvKiBWaXNpdGVkTGlua1RhYmxlLmNwcCAqLywKIAkJCQkxQTBGMjlDQTEyMEIz
NzE2MDA1M0QxQjkgLyogVmlzaXRlZExpbmtUYWJsZS5oICovLAotCQkJCUJDMUREN0IxMTE0REMz
OTYwMDVBREFGMyAvKiBXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCAqLywKIAkJCQlCQ0Y1MDcyNjEy
NDMyOUFBMDA1OTU1QUUgLyogV2ViQ2VydGlmaWNhdGVJbmZvLmggKi8sCiAJCQkJNTEyOTM1RDUx
Mjg4RDE5NDAwQTRCNjk1IC8qIFdlYkNvbnRleHRNZW51SXRlbS5jcHAgKi8sCiAJCQkJNTEyOTM1
RDYxMjg4RDE5NDAwQTRCNjk1IC8qIFdlYkNvbnRleHRNZW51SXRlbS5oICovLAogCQkJCTUxMEZC
Qjk4MTI4OEM5NUUwMEFGRkRGNCAvKiBXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmNwcCAqLywKIAkJ
CQk1MTBGQkI5OTEyODhDOTVFMDBBRkZERjQgLyogV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oICov
LAotCQkJCUJDQ0Y2NzMyMTJDN0YxNUMwMDhGOUMzNSAvKiBPcmlnaW5BbmREYXRhYmFzZXMuY3Bw
ICovLAotCQkJCUJDQ0Y2NzJDMTJDN0VERjcwMDhGOUMzNSAvKiBPcmlnaW5BbmREYXRhYmFzZXMu
aCAqLywKKwkJCQlCQzFERDdCMTExNERDMzk2MDA1QURBRjMgLyogV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmggKi8sCiAJCQkJNTE1NzhCODIxMjA5RUNFRjAwQTM3QzRBIC8qIFdlYkRhdGEuaCAqLywK
IAkJCQlCQzU3NTYxMjEyNkUwMTM4MDA2RjBGMTIgLyogV2ViRXJyb3IuY3BwICovLAogCQkJCTUx
NkE0QTVCMTIwQTJDQ0QwMEMwNUI3RiAvKiBXZWJFcnJvci5oICovLApAQCAtMTYzNCwxMiArMTY0
OSwxMiBAQAogCQkJCUJDMDMyREIwMTBGNDM4MEYwMDU4QzE1QSAvKiBXZWJFdmVudENvbnZlcnNp
b24uY3BwICovLAogCQkJCUJDMDMyREIxMTBGNDM4MEYwMDU4QzE1QSAvKiBXZWJFdmVudENvbnZl
cnNpb24uaCAqLywKIAkJCQkxQTkwQzFFRDEyNjRGRDUwMDAzRTQ0RDQgLyogV2ViRmluZE9wdGlv
bnMuaCAqLywKKwkJCQlCQ0NGNkFCQTEyQzkxRUY5MDA4RjlDMzUgLyogV2ViSW1hZ2UuY3BwICov
LAorCQkJCUJDQ0Y2QUJCMTJDOTFFRjkwMDhGOUMzNSAvKiBXZWJJbWFnZS5oICovLAogCQkJCUMw
MzM3REQyMTI3QTJBMEUwMDhGRjRGNCAvKiBXZWJLZXlib2FyZEV2ZW50LmNwcCAqLywKIAkJCQlD
MDMzN0RBRjEyN0EyOEQwMDA4RkY0RjQgLyogV2ViTW91c2VFdmVudC5jcHAgKi8sCiAJCQkJQkNG
NjlGOTgxMTc2Q0VENjAwNDcxQTUyIC8qIFdlYk5hdmlnYXRpb25EYXRhU3RvcmUuaCAqLywKIAkJ
CQlCQzMzREQ2NzEyMzg0NjQ2MDAzNjBGM0YgLyogV2ViTnVtYmVyLmggKi8sCi0JCQkJQkM1NzQ0
RUQxMjYzOEZCMzAwNkYwRjEyIC8qIFdlYlBvcHVwSXRlbS5jcHAgKi8sCi0JCQkJQkM1NzQ0RUUx
MjYzOEZCMzAwNkYwRjEyIC8qIFdlYlBvcHVwSXRlbS5oICovLAogCQkJCUJDODU3RkI0MTJCODMw
RTYwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcCAqLywKIAkJCQlCQzg1N0ZC
MzEyQjgzMEU2MDBFREVCMkUgLyogV2ViT3BlblBhbmVsUGFyYW1ldGVycy5oICovLAogCQkJCUMw
NkM2MDkzMTI0QzE0NDMwMDAxNjgyRiAvKiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCAq
LywKQEAgLTE2NDcsMTAgKzE2NjIsMTIgQEAKIAkJCQlCQzdCNjI1MTEyQTQzQzk2MDBEMTc0QTQg
LyogV2ViUGFnZUdyb3VwRGF0YS5jcHAgKi8sCiAJCQkJQkM3QjYyNTAxMkE0M0M5NjAwRDE3NEE0
IC8qIFdlYlBhZ2VHcm91cERhdGEuaCAqLywKIAkJCQlDMDMzN0REQzEyN0E1MjFDMDA4RkY0RjQg
LyogV2ViUGxhdGZvcm1Ub3VjaFBvaW50LmNwcCAqLywKLQkJCQlCQzMwNjgyMzEyNUE2Qjk0MDBF
NzEyNzggLyogV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgKi8sCi0JCQkJQkMzMDY4
MjIxMjVBNkI5NDAwRTcxMjc4IC8qIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCAqLywK
KwkJCQlCQzU3NDRFRDEyNjM4RkIzMDA2RjBGMTIgLyogV2ViUG9wdXBJdGVtLmNwcCAqLywKKwkJ
CQlCQzU3NDRFRTEyNjM4RkIzMDA2RjBGMTIgLyogV2ViUG9wdXBJdGVtLmggKi8sCiAJCQkJQkNE
NTk4QUIxMTJCN0ZERjAwRUM4QzIzIC8qIFdlYlByZWZlcmVuY2VzU3RvcmUuY3BwICovLAogCQkJ
CUJDRDU5OEFBMTEyQjdGREYwMEVDOEMyMyAvKiBXZWJQcmVmZXJlbmNlc1N0b3JlLmggKi8sCisJ
CQkJQkMzMDY4MjMxMjVBNkI5NDAwRTcxMjc4IC8qIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuY3BwICovLAorCQkJCUJDMzA2ODIyMTI1QTZCOTQwMEU3MTI3OCAvKiBXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmggKi8sCiAJCQkJRjYzNDQ0NTUxMkE4ODVDODAwMDYxMkQ4IC8qIFdl
YlNlY3VyaXR5T3JpZ2luLmggKi8sCiAJCQkJQTcyRDVEN0YxMjM2Q0JBODAwQTg4QjE1IC8qIFdl
YlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oICovLAogCQkJCUJDRjA0QzhFMTFGRjlGNkUwMEY4NkE1
OCAvKiBXZWJTdHJpbmcuaCAqLywKQEAgLTIzNDQsNiArMjM2MSwxNSBAQAogCQkJcGF0aCA9IG1h
YzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUJDQ0Y2QUM0MTJDOTFGM0Iw
MDhGOUMzNSAvKiBjZyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAo
CisJCQkJQkNDRjZBQzcxMkM5MUY1OTAwOEY5QzM1IC8qIFdLSW1hZ2VDRy5jcHAgKi8sCisJCQkJ
QkNDRjZBQzgxMkM5MUY1OTAwOEY5QzM1IC8qIFdLSW1hZ2VDRy5oICovLAorCQkJKTsKKwkJCXBh
dGggPSBjZzsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUJDRERCMzE0MTI0
RUJDRUYwMDQ4RDEzQyAvKiBBUEkgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKApAQCAtMjM1Niw2ICsyMzgyLDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCiAJCQkJQkM0MDc1RDUxMjRGRUZGQTAwNjhGMjBBIC8qIGNmICovLAorCQkJCUJD
Q0Y2QUM0MTJDOTFGM0IwMDhGOUMzNSAvKiBjZyAqLywKIAkJCQlCQzQwNzVENjEyNEZGMDAwMDA2
OEYyMEEgLyogbWFjICovLAogCQkJCUJDNDA3NUQ3MTI0RkYwMjcwMDY4RjIwQSAvKiBXS0FycmF5
LmNwcCAqLywKIAkJCQlCQzQwNzVEODEyNEZGMDI3MDA2OEYyMEEgLyogV0tBcnJheS5oICovLApA
QCAtMjM3NCw2ICsyNDAxLDggQEAKIAkJCQlCQzQwNzgzQzEyNTBGQUREMDA2OEYyMEEgLyogV0tF
dmVudC5oICovLAogCQkJCTM3RjYyM0I3MTJBNTdCNjIwMEUzRkRGNiAvKiBXS0ZpbmRPcHRpb25z
LmggKi8sCiAJCQkJQkNDOEIzNzMxMjVGQjY5MDAwREU0NkE0IC8qIFdLR2VvbWV0cnkuaCAqLywK
KwkJCQlCQ0NGNkFDMDEyQzkxRjM0MDA4RjlDMzUgLyogV0tJbWFnZS5jcHAgKi8sCisJCQkJQkND
RjZBQzExMkM5MUYzNDAwOEY5QzM1IC8qIFdLSW1hZ2UuaCAqLywKIAkJCQlCQzQwNzVFMTEyNEZG
MDI3MDA2OEYyMEEgLyogV0tNdXRhYmxlQXJyYXkuY3BwICovLAogCQkJCUJDNDA3NUUyMTI0RkYw
MjcwMDY4RjIwQSAvKiBXS011dGFibGVBcnJheS5oICovLAogCQkJCUJDNDA3NUUzMTI0RkYwMjcw
MDY4RjIwQSAvKiBXS011dGFibGVEaWN0aW9uYXJ5LmNwcCAqLywKQEAgLTI3ODcsNyArMjgxNiwx
MSBAQAogCQkJCTFBQTQxN0NCMTJDMDBDQ0EwMDJCRTY3QiAvKiBUZXh0Q2hlY2tlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUFBNDFBQjUxMkMwMkVDNDAwMkJFNjdCIC8qIFNlbGVjdGlvblN0YXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0NGNjcyRDEyQzdFREY3MDA4RjlDMzUgLyogT3JpZ2lu
QW5kRGF0YWJhc2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQ0NGNkFCRDEyQzkxRUY5MDA4RjlD
MzUgLyogV2ViSW1hZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDQ0Y2QUMzMTJDOTFGMzQwMDhG
OUMzNSAvKiBXS0ltYWdlLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQ0NGNkFDQTEyQzkxRjU5MDA4
RjlDMzUgLyogV0tJbWFnZUNHLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0FDMTExRjEyQzkyQzFG
MDBCMDhFRUUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHlDbGllbnQuaCBpbiBIZWFkZXJzICov
LAorCQkJCUJDQ0Y2QjI1MTJDOTNFN0EwMDhGOUMzNSAvKiBJbWFnZU9wdGlvbnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpAQCAtMzIxMyw2ICszMjQ2LDkgQEAKIAkJCQlCQzg1OEEyMTEyQzAzNTdCMDBFREVC
MkUgLyogV2ViUmVzb3VyY2VMb2FkQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQTQx
N0VGMTJDMDBEODcwMDJCRTY3QiAvKiBUZXh0Q2hlY2tlck1hYy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUJDQ0Y2NzMzMTJDN0YxNUMwMDhGOUMzNSAvKiBPcmlnaW5BbmREYXRhYmFzZXMuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQkNDRjZBQkMxMkM5MUVGOTAwOEY5QzM1IC8qIFdlYkltYWdlLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUJDQ0Y2QUMyMTJDOTFGMzQwMDhGOUMzNSAvKiBXS0ltYWdl
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDQ0Y2QUM5MTJDOTFGNTkwMDhGOUMzNSAvKiBXS0lt
YWdlQ0cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBQzExMjAxMkM5MkMxRjAwQjA4RUVFIC8q
IFdlYkRhdGFiYXNlTWFuYWdlclByb3h5Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpJbmRleDogV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZS5jcHAJKHJldmlzaW9uIDc0NjkzKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDExICsy
NywxMiBAQAogI2luY2x1ZGUgIldLQnVuZGxlUGFnZVByaXZhdGUuaCIKIAogI2luY2x1ZGUgIklu
amVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisj
aW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKICNpbmNs
dWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViVVJMLmgiCiAjaW5jbHVkZSAiV2ViVVJMUmVx
dWVzdC5oIgotI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2Fz
dC5oIgogCiAjaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CiAKQEAgLTE2NiwzICsxNjcsMTUgQEAg
Ym9vbCBXS0J1bmRsZVBhZ2VGaW5kU3RyaW5nKFdLQnVuZGxlUGFnZQogewogICAgIHJldHVybiB0
b0ltcGwocGFnZVJlZiktPmZpbmRTdHJpbmdGcm9tSW5qZWN0ZWRCdW5kbGUodG9JbXBsKHRhcmdl
dCktPnN0cmluZygpLCB0b0ZpbmRPcHRpb25zKGZpbmRPcHRpb25zKSk7CiB9CisKK1dLSW1hZ2VS
ZWYgV0tCdW5kbGVQYWdlQ3JlYXRlU25hcHNob3RJblZpZXdDb29yZGluYXRlcyhXS0J1bmRsZVBh
Z2VSZWYgcGFnZVJlZiwgV0tSZWN0IHJlY3QsIFdLSW1hZ2VPcHRpb25zIG9wdGlvbnMpCit7Cisg
ICAgUmVmUHRyPFdlYkltYWdlPiB3ZWJJbWFnZSA9IHRvSW1wbChwYWdlUmVmKS0+c25hcHNob3RJ
blZpZXdDb29yZGluYXRlcyh0b0ludFJlY3QocmVjdCksIHRvSW1hZ2VPcHRpb25zKG9wdGlvbnMp
KTsKKyAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2UucmVsZWFzZSgpLmxlYWtSZWYoKSk7Cit9CisK
K1dLSW1hZ2VSZWYgV0tCdW5kbGVQYWdlQ3JlYXRlU25hcHNob3RJbkRvY3VtZW50Q29vcmRpbmF0
ZXMoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLUmVjdCByZWN0LCBXS0ltYWdlT3B0aW9ucyBv
cHRpb25zKQoreworICAgIFJlZlB0cjxXZWJJbWFnZT4gd2ViSW1hZ2UgPSB0b0ltcGwocGFnZVJl
ZiktPnNuYXBzaG90SW5Eb2N1bWVudENvb3JkaW5hdGVzKHRvSW50UmVjdChyZWN0KSwgdG9JbWFn
ZU9wdGlvbnMob3B0aW9ucykpOworICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5yZWxlYXNlKCku
bGVha1JlZigpKTsKK30KSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgJKHJldmlzaW9uIDc0NjkzKQorKysgV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4K
ICNpbmNsdWRlIDxXZWJLaXQyL1dLRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLRmluZE9w
dGlvbnMuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJLaXQy
L1dLUGFnZUxvYWRUeXBlcy5oPgogCiAjaWZuZGVmIF9fY3BsdXNwbHVzCkBAIC0yMTQsNiArMjE1
LDkgQEAgV0tfRVhQT1JUIGJvb2wgV0tCdW5kbGVQYWdlQ2FuSGFuZGxlUmVxdQogCiBXS19FWFBP
UlQgYm9vbCBXS0J1bmRsZVBhZ2VGaW5kU3RyaW5nKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0
cmluZ1JlZiB0YXJnZXQsIFdLRmluZE9wdGlvbnMgZmluZE9wdGlvbnMpOwogCitXS19FWFBPUlQg
V0tJbWFnZVJlZiBXS0J1bmRsZVBhZ2VDcmVhdGVTbmFwc2hvdEluVmlld0Nvb3JkaW5hdGVzKFdL
QnVuZGxlUGFnZVJlZiBwYWdlLCBXS1JlY3QgcmVjdCwgV0tJbWFnZU9wdGlvbnMgb3B0aW9ucyk7
CitXS19FWFBPUlQgV0tJbWFnZVJlZiBXS0J1bmRsZVBhZ2VDcmVhdGVTbmFwc2hvdEluRG9jdW1l
bnRDb29yZGluYXRlcyhXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tSZWN0IHJlY3QsIFdLSW1hZ2VP
cHRpb25zIG9wdGlvbnMpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpJbmRleDog
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJs
YXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNwcAkocmV2aXNpb24gNzQ2OTMpCisrKyBXZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzNCw1ICsxMzQsNSBAQCBXS0J1bmRsZVBhZ2VPdmVybGF5UmVm
IFdLQnVuZGxlUGFnZU92ZXJsCiAKIHZvaWQgV0tCdW5kbGVQYWdlT3ZlcmxheVNldE5lZWRzRGlz
cGxheShXS0J1bmRsZVBhZ2VPdmVybGF5UmVmIGJ1bmRsZVBhZ2VPdmVybGF5UmVmLCBXS1JlY3Qg
cmVjdCkKIHsKLSAgICB0b0ltcGwoYnVuZGxlUGFnZU92ZXJsYXlSZWYpLT5zZXROZWVkc0Rpc3Bs
YXkoZW5jbG9zaW5nSW50UmVjdCh0b0ltcGwocmVjdCkpKTsKKyAgICB0b0ltcGwoYnVuZGxlUGFn
ZU92ZXJsYXlSZWYpLT5zZXROZWVkc0Rpc3BsYXkoZW5jbG9zaW5nSW50UmVjdCh0b0Zsb2F0UmVj
dChyZWN0KSkpOwogfQpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJ
KHJldmlzaW9uIDc0NjkzKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDE0ICs0MSwxNSBAQAogI2luY2x1ZGUgIldlYkNvbnRl
eHRNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSAiV2ViT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXIuaCIKICNpbmNsdWRlICJXZWJEcmFnQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViRWRp
dG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKICNpbmNsdWRlICJXZWJFdmVudENv
bnZlcnNpb24uaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgorI2luY2x1ZGUgIldlYkltYWdlLmgi
CiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yLmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yQ2xpZW50
LmgiCisjaW5jbHVkZSAiV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCIKICNpbmNsdWRlICJX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwUHJveHku
aCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgpAQCAtNTg3LDYgKzU4OCw0NCBA
QCB2b2lkIFdlYlBhZ2U6OnVuaW5zdGFsbFBhZ2VPdmVybGF5KFBhZ2VPCiAgICAgbV9kcmF3aW5n
QXJlYS0+c2V0TmVlZHNEaXNwbGF5KEludFJlY3QoSW50UG9pbnQoMCwgMCksIG1fdmlld1NpemUp
KTsKIH0KIAorUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3RJblZpZXdDb29y
ZGluYXRlcyhjb25zdCBJbnRSZWN0JiByZWN0LCBJbWFnZU9wdGlvbnMgb3B0aW9ucykKK3sKKyAg
ICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygp
OworICAgIGlmICghZnJhbWVWaWV3KQorICAgICAgICByZXR1cm4gMDsKKworICAgIGZyYW1lVmll
dy0+dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOworCisgICAgUmVmUHRy
PFdlYkltYWdlPiBzbmFwc2hvdCA9IFdlYkltYWdlOjpjcmVhdGUocmVjdC5zaXplKCksIG9wdGlv
bnMpOworICAgIE93blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4
dCA9IHNuYXBzaG90LT5iYWNraW5nU3RvcmUoKS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisK
KyAgICBncmFwaGljc0NvbnRleHQtPnNhdmUoKTsKKyAgICBncmFwaGljc0NvbnRleHQtPnRyYW5z
bGF0ZSgtcmVjdC54KCksIC1yZWN0LnkoKSk7CisgICAgZnJhbWVWaWV3LT5wYWludChncmFwaGlj
c0NvbnRleHQuZ2V0KCksIHJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwor
CisgICAgcmV0dXJuIHNuYXBzaG90LnJlbGVhc2UoKTsKK30KKworUGFzc1JlZlB0cjxXZWJJbWFn
ZT4gV2ViUGFnZTo6c25hcHNob3RJbkRvY3VtZW50Q29vcmRpbmF0ZXMoY29uc3QgSW50UmVjdCYg
cmVjdCwgSW1hZ2VPcHRpb25zIG9wdGlvbnMpCit7CisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcg
PSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPnZpZXcoKTsKKyAgICBpZiAoIWZyYW1lVmlldykK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBmcmFtZVZpZXctPnVwZGF0ZUxheW91dEFuZFN0eWxl
SWZOZWVkZWRSZWN1cnNpdmUoKTsKKworICAgIFJlZlB0cjxXZWJJbWFnZT4gc25hcHNob3QgPSBX
ZWJJbWFnZTo6Y3JlYXRlKHJlY3Quc2l6ZSgpLCBvcHRpb25zKTsKKyAgICBPd25QdHI8V2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0PiBncmFwaGljc0NvbnRleHQgPSBzbmFwc2hvdC0+YmFja2luZ1N0
b3JlKCktPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworCisgICAgZ3JhcGhpY3NDb250ZXh0LT5z
YXZlKCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LT50cmFuc2xhdGUoLXJlY3QueCgpLCAtcmVjdC55
KCkpOworICAgIGZyYW1lVmlldy0+cGFpbnRDb250ZW50cyhncmFwaGljc0NvbnRleHQuZ2V0KCks
IHJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOworCisgICAgcmV0dXJuIHNu
YXBzaG90LnJlbGVhc2UoKTsKK30KKwogdm9pZCBXZWJQYWdlOjpwYWdlRGlkU2Nyb2xsKCkKIHsK
ICAgICAvLyBIaWRlIHRoZSBmaW5kIGluZGljYXRvci4KSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDc0NjkzKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWEuaCIKICNpbmNsdWRlICJGaW5k
Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIkltYWdlT3B0aW9ucy5oIgogI2luY2x1ZGUgIkluamVj
dGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNs
aWVudC5oIgpAQCAtNzUsNiArNzYsNyBAQCBjbGFzcyBXZWJDb250ZXh0TWVudTsKIGNsYXNzIFdl
YkNvbnRleHRNZW51SXRlbURhdGE7CiBjbGFzcyBXZWJFdmVudDsKIGNsYXNzIFdlYkZyYW1lOwor
Y2xhc3MgV2ViSW1hZ2U7CiBjbGFzcyBXZWJJbnNwZWN0b3I7CiBjbGFzcyBXZWJLZXlib2FyZEV2
ZW50OwogY2xhc3MgV2ViTW91c2VFdmVudDsKQEAgLTIwNiw2ICsyMDgsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBpbnN0YWxsUGFnZU92ZXJsYXkoUGFzc1JlZlB0cjxQYWdlT3ZlcmxheT4pOwogICAg
IHZvaWQgdW5pbnN0YWxsUGFnZU92ZXJsYXkoUGFnZU92ZXJsYXkqKTsKIAorICAgIFBhc3NSZWZQ
dHI8V2ViSW1hZ2U+IHNuYXBzaG90SW5WaWV3Q29vcmRpbmF0ZXMoY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYsIEltYWdlT3B0aW9ucyk7CisgICAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gc25hcHNob3RJ
bkRvY3VtZW50Q29vcmRpbmF0ZXMoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIEltYWdlT3B0aW9u
cyk7CisKICAgICBzdGF0aWMgY29uc3QgV2ViRXZlbnQqIGN1cnJlbnRFdmVudCgpOwogCiAgICAg
RmluZENvbnRyb2xsZXImIGZpbmRDb250cm9sbGVyKCkgeyByZXR1cm4gbV9maW5kQ29udHJvbGxl
cjsgfQpJbmRleDogV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJKHJldmlzaW9uIDc0NjkzKQorKysgV2ViS2l0Mi93aW4v
V2ViS2l0Mi52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTU2Nyw2ICs1NjcsMTQgQEAKIAkJCQk+
CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXFdlYklt
YWdlLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5cU2hhcmVkXFdlYkltYWdlLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxXZWJLZXlib2FyZEV2ZW50LmNwcCIKIAkJCQk+CiAJCQk8
L0ZpbGU+CkBAIC03NTgsNiArNzY2LDE0IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZp
bGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRcQVBJXGNcV0tJbWFnZS5jcHAiCisJCQkJ
CT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRc
QVBJXGNcV0tJbWFnZS5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJl
bGF0aXZlUGF0aD0iLi5cU2hhcmVkXEFQSVxjXFdLTXV0YWJsZUFycmF5LmNwcCIKIAkJCQkJPgog
CQkJCTwvRmlsZT4KQEAgLTkyOSw2ICs5NDUsMTggQEAKIAkJCQkJCT4KIAkJCQkJPC9GaWxlPgog
CQkJCTwvRmlsdGVyPgorCQkJCTxGaWx0ZXIKKwkJCQkJTmFtZT0iY2ciCisJCQkJCT4KKwkJCQkJ
PEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXEFQSVxjXGNnXFdLSW1hZ2VDRy5j
cHAiCisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0
aD0iLi5cU2hhcmVkXEFQSVxjXGNnXFdLSW1hZ2VDRy5oIgorCQkJCQkJPgorCQkJCQk8L0ZpbGU+
CisJCQkJPC9GaWx0ZXI+CiAJCQk8L0ZpbHRlcj4KIAkJCTxGaWx0ZXIKIAkJCQlOYW1lPSJDb3Jl
SVBDU3VwcG9ydCIK
</data>
<flag name="review"
          id="68660"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>