<?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>21444</bug_id>
          
          <creation_ts>2008-10-07 13:31:11 -0700</creation_ts>
          <short_desc>SVGResourceClipper cleanUp</short_desc>
          <delta_ts>2008-11-14 13:42:44 -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>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</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="Dirk Schulze">krit</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>ojan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>94427</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-10-07 13:31:11 -0700</bug_when>
    <thetext>We can share the code of the different platforms, since it is nearly the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94429</commentid>
    <comment_count>1</comment_count>
      <attachid>24157</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-10-07 13:33:32 -0700</bug_when>
    <thetext>Created attachment 24157
SVG clipping

I made the code platform independent. I tested the patch with Cairo and Qt. Wasn&apos;t able to test it for Cg yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94433</commentid>
    <comment_count>2</comment_count>
      <attachid>24157</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-10-07 13:40:17 -0700</bug_when>
    <thetext>Comment on attachment 24157
SVG clipping

This looks fine from a CG perspective.  I&apos;ll land it in my tree, run the tests and commit.  Thanks for taking this on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95259</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2008-10-14 01:26:02 -0700</bug_when>
    <thetext>Eric, what is the status of this?  Are you going to land it or should someone else?  Assigning to Eric for resolution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98819</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-11-14 13:42:35 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	D	WebCore/svg/graphics/cairo/SVGResourceClipperCairo.cpp
	D	WebCore/svg/graphics/cg/SVGResourceClipperCg.cpp
	D	WebCore/svg/graphics/qt/SVGResourceClipperQt.cpp
	M	WebCore/ChangeLog
	M	WebCore/GNUmakefile.am
	M	WebCore/WebCore.pro
	M	WebCore/WebCore.vcproj/WebCore.vcproj
	M	WebCore/WebCore.xcodeproj/project.pbxproj
	M	WebCore/platform/graphics/GraphicsContext.h
	M	WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp
	M	WebCore/platform/graphics/cg/GraphicsContextCG.cpp
	M	WebCore/platform/graphics/qt/GraphicsContextQt.cpp
	M	WebCore/svg/graphics/SVGResourceClipper.cpp
Committed r38405

This will affect our next Chromium merge (in a good way). :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24157</attachid>
            <date>2008-10-07 13:33:32 -0700</date>
            <delta_ts>2008-10-07 13:40:17 -0700</delta_ts>
            <desc>SVG clipping</desc>
            <filename>SVG-clipping.patch</filename>
            <type>text/plain</type>
            <size>23819</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNzM4NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMDgtMTAtMDcgIERpcmsgU2NodWx6ZSAgPHZiczg1QGdteC5kZT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWRlIFNW
R1Jlc291cmNlQ2xpcHBlciBwbGF0Zm9ybSBpbmRlcGVuZGVudC4KKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBQYXRoKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBQYXRoKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmFkZFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpjbGlwUGF0aCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlQ2xpcHBl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xpcCk6
CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2NhaXJvL1NWR1Jlc291cmNlQ2xpcHBlckNhaXJvLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvY2cvU1ZHUmVzb3VyY2VDbGlwcGVy
Q2cuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9xdC9TVkdSZXNvdXJjZUNs
aXBwZXJRdC5jcHA6IFJlbW92ZWQuCisKIDIwMDgtMTAtMDcgIEFscCBUb2tlciAgPGFscEBudWFu
dGkuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcmsgUm93ZS4KSW5kZXg6IFdlYkNvcmUv
R05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2
aXNpb24gMzczMTQpCisrKyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBA
IC0zMzU0LDcgKzMzNTQsNiBAQCB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2NhaXJvL1NWR1BhaW50U2VydmVyR3JhZGllbnRDYWlyby5jcHAgXAogCVdlYkNv
cmUvc3ZnL2dyYXBoaWNzL2NhaXJvL1NWR1BhaW50U2VydmVyUGF0dGVybkNhaXJvLmNwcCBcCiAJ
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2Fpcm8vU1ZHUGFpbnRTZXJ2ZXJTb2xpZENhaXJvLmNwcCBc
Ci0JV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2Fpcm8vU1ZHUmVzb3VyY2VDbGlwcGVyQ2Fpcm8uY3Bw
IFwKIAlXZWJDb3JlL3N2Zy9ncmFwaGljcy9jYWlyby9TVkdSZXNvdXJjZUZpbHRlckNhaXJvLmNw
cCBcCiAJV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2Fpcm8vU1ZHUmVzb3VyY2VNYXNrZXJDYWlyby5j
cHAKIApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dl
YkNvcmUucHJvCShyZXZpc2lvbiAzNzMxNCkKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtp
bmcgY29weSkKQEAgLTE2NjIsNyArMTY2Miw2IEBAIFNPVVJDRVMgKz0gXAogICAgICAgICBzdmcv
Z3JhcGhpY3MvcXQvU1ZHUGFpbnRTZXJ2ZXJRdC5jcHAgXAogICAgICAgICBzdmcvZ3JhcGhpY3Mv
cXQvU1ZHUGFpbnRTZXJ2ZXJSYWRpYWxHcmFkaWVudFF0LmNwcCBcCiAgICAgICAgIHN2Zy9ncmFw
aGljcy9xdC9TVkdQYWludFNlcnZlclNvbGlkUXQuY3BwIFwKLSAgICAgICAgc3ZnL2dyYXBoaWNz
L3F0L1NWR1Jlc291cmNlQ2xpcHBlclF0LmNwcCBcCiAgICAgICAgIHN2Zy9ncmFwaGljcy9xdC9T
VkdSZXNvdXJjZUZpbHRlclF0LmNwcCBcCiAgICAgICAgIHN2Zy9ncmFwaGljcy9xdC9TVkdSZXNv
dXJjZU1hc2tlclF0LmNwcAogCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oJKHJldmlzaW9uIDM3MzE0KQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTUzMjgsMjYgKzE1MzI4LDYgQEAKIAkJCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+DQogCQkJCQk8L0ZpbGU+DQogCQkJCQk8RmlsZQ0KLQkJCQkJCVJlbGF0
aXZlUGF0aD0iLi5cc3ZnXGdyYXBoaWNzXGNnXFNWR1Jlc291cmNlQ2xpcHBlckNnLmNwcCINCi0J
CQkJCQk+DQotCQkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQkJCU5hbWU9IkRlYnVnX0Nh
aXJvfFdpbjMyIg0KLQkJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCQkJPg0K
LQkJCQkJCQk8VG9vbA0KLQkJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQkJ
Lz4NCi0JCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQkJCTxGaWxlQ29uZmlndXJhdGlv
bg0KLQkJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KLQkJCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSINCi0JCQkJCQkJPg0KLQkJCQkJCQk8VG9vbA0KLQkJCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQkJLz4NCi0JCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
Pg0KLQkJCQkJPC9GaWxlPg0KLQkJCQkJPEZpbGUNCiAJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2
Z1xncmFwaGljc1xjZ1xTVkdSZXNvdXJjZUZpbHRlckNnLmNwcCINCiAJCQkJCQk+DQogCQkJCQkJ
PEZpbGVDb25maWd1cmF0aW9uDQpAQCAtMTU3MjgsNDIgKzE1NzA4LDYgQEAKIAkJCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+DQogCQkJCQk8L0ZpbGU+DQogCQkJCQk8RmlsZQ0KLQkJCQkJCVJlbGF0
aXZlUGF0aD0iLi5cc3ZnXGdyYXBoaWNzXGNhaXJvXFNWR1Jlc291cmNlQ2xpcHBlckNhaXJvLmNw
cCINCi0JCQkJCQk+DQotCQkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQkJCU5hbWU9IkRl
YnVnfFdpbjMyIg0KLQkJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCQkJPg0K
LQkJCQkJCQk8VG9vbA0KLQkJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQkJ
Lz4NCi0JCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQkJCTxGaWxlQ29uZmlndXJhdGlv
bg0KLQkJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSINCi0JCQkJCQkJPg0KLQkJCQkJCQk8VG9vbA0KLQkJCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCINCi0JCQkJCQkJLz4NCi0JCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJ
CQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJCQlOYW1lPSJEZWJ1Z19JbnRlcm5hbHxXaW4z
MiINCi0JCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQkJCT4NCi0JCQkJCQkJ
PFRvb2wNCi0JCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJCS8+DQotCQkJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJ
CQkJTmFtZT0iUmVsZWFzZV9QR098V2luMzIiDQotCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIg0KLQkJCQkJCQk+DQotCQkJCQkJCTxUb29sDQotCQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIg0KLQkJCQkJCQkvPg0KLQkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCQk8
L0ZpbGU+DQotCQkJCQk8RmlsZQ0KIAkJCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXGdyYXBoaWNz
XGNhaXJvXFNWR1Jlc291cmNlRmlsdGVyQ2Fpcm8uY3BwIg0KIAkJCQkJCT4NCiAJCQkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24NCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMzczMTQpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzA5MCw3ICszMDkwLDYgQEAKIAkJQjI1
NTk5MzAwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR1BhaW50U2VydmVyR3JhZGllbnRDZy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OTg5NDBEMDBE
OEI4MDBCQjgyNUMgLyogU1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudENnLmNwcCAqLzsgfTsKIAkJQjI1
NTk5MzEwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR1BhaW50U2VydmVyUGF0dGVybkNnLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5ODk1MEQwMEQ4
QjgwMEJCODI1QyAvKiBTVkdQYWludFNlcnZlclBhdHRlcm5DZy5jcHAgKi87IH07CiAJCUIyNTU5
OTMyMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdQYWludFNlcnZlclNvbGlkQ2cuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4OTYwRDAwRDhCODAw
QkI4MjVDIC8qIFNWR1BhaW50U2VydmVyU29saWRDZy5jcHAgKi87IH07Ci0JCUIyNTU5OTMzMEQw
MEQ4QkEwMEJCODI1QyAvKiBTVkdSZXNvdXJjZUNsaXBwZXJDZy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OTg5NzBEMDBEOEI4MDBCQjgyNUMg
LyogU1ZHUmVzb3VyY2VDbGlwcGVyQ2cuY3BwICovOyB9OwogCQlCMjU1OTkzNTBEMDBEOEJBMDBC
QjgyNUMgLyogU1ZHUmVzb3VyY2VGaWx0ZXJDZy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5ODk5MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdSZXNv
dXJjZUZpbHRlckNnLm1tICovOyB9OwogCQlCMjU1OTkzNzBEMDBEOEJBMDBCQjgyNUMgLyogU1ZH
UmVzb3VyY2VNYXNrZXJDZy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEIyNTU5ODlCMEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdSZXNvdXJjZU1hc2tlckNn
Lm1tICovOyB9OwogCQlCMjU1OTk0MDBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVIZWxwZXJzQ2cu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5OEE2
MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRUhlbHBlcnNDZy5oICovOyB9OwpAQCAtNzYyMSw3ICs3
NjIwLDYgQEAKIAkJQjI1NTk4OTQwRDAwRDhCODAwQkI4MjVDIC8qIFNWR1BhaW50U2VydmVyR3Jh
ZGllbnRDZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHUGFp
bnRTZXJ2ZXJHcmFkaWVudENnLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI1
NTk4OTUwRDAwRDhCODAwQkI4MjVDIC8qIFNWR1BhaW50U2VydmVyUGF0dGVybkNnLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdQYWludFNlcnZlclBhdHRlcm5D
Zy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNTU5ODk2MEQwMEQ4QjgwMEJC
ODI1QyAvKiBTVkdQYWludFNlcnZlclNvbGlkQ2cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNWR1BhaW50U2VydmVyU29saWRDZy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUIyNTU5ODk3MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdSZXNvdXJjZUNs
aXBwZXJDZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHUmVz
b3VyY2VDbGlwcGVyQ2cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjU1OTg5
OTBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VGaWx0ZXJDZy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTVkdSZXNvdXJjZUZpbHRlckNnLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjU1OTg5QjBEMDBEOEI4MDBCQjgyNUMgLyogU1ZH
UmVzb3VyY2VNYXNrZXJDZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBTVkdSZXNvdXJjZU1hc2tlckNnLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCMjU1OThBNjBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVIZWxwZXJzQ2cuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0ZFSGVscGVyc0NnLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xMjM0OCw3ICsxMjM0Niw2IEBACiAJCQkJQjI1NTk4OTQwRDAwRDhC
ODAwQkI4MjVDIC8qIFNWR1BhaW50U2VydmVyR3JhZGllbnRDZy5jcHAgKi8sCiAJCQkJQjI1NTk4
OTUwRDAwRDhCODAwQkI4MjVDIC8qIFNWR1BhaW50U2VydmVyUGF0dGVybkNnLmNwcCAqLywKIAkJ
CQlCMjU1OTg5NjBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHUGFpbnRTZXJ2ZXJTb2xpZENnLmNwcCAq
LywKLQkJCQlCMjU1OTg5NzBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VDbGlwcGVyQ2cu
Y3BwICovLAogCQkJCUIyNTU5ODk5MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdSZXNvdXJjZUZpbHRl
ckNnLm1tICovLAogCQkJCUIyNTU5ODlCMEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdSZXNvdXJjZU1h
c2tlckNnLm1tICovLAogCQkJKTsKQEAgLTE3MzYxLDcgKzE3MzU4LDYgQEAKIAkJCQlCMkVCREM5
QzBBRjc3RTM0MDBBRTRBNjggLyogU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCMjU1OTlCMjBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHUmVzb3VyY2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQjI1NTk5QjQwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR1Jlc291cmNlQ2xp
cHBlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjU1OTkzMzBEMDBEOEJBMDBCQjgyNUMgLyog
U1ZHUmVzb3VyY2VDbGlwcGVyQ2cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI1NTk5QjYwRDAw
RDhCQTAwQkI4MjVDIC8qIFNWR1Jlc291cmNlRmlsdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUIyNTU5OTM1MEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdSZXNvdXJjZUZpbHRlckNnLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQjI1NTk5OTgwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR1Jlc291cmNlRmls
dGVyUGxhdGZvcm1EYXRhTWFjLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHJldmlzaW9uIDM3MzE0KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpA
QCAtMTk4LDYgKzE5OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBjbGlw
T3V0KGNvbnN0IEludFJlY3QmKTsKICAgICAgICAgdm9pZCBjbGlwT3V0RWxsaXBzZUluUmVjdChj
b25zdCBJbnRSZWN0Jik7CiAgICAgICAgIHZvaWQgY2xpcE91dFJvdW5kZWRSZWN0KGNvbnN0IElu
dFJlY3QmLCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0LCBjb25zdCBJbnRTaXplJiB0b3BSaWdodCwg
Y29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHQpOwor
ICAgICAgICB2b2lkIGNsaXBQYXRoKFdpbmRSdWxlKTsKICAgICAgICAgdm9pZCBjbGlwVG9JbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZUJ1ZmZlciopOwogCiAgICAgICAg
IGludCB0ZXh0RHJhd2luZ01vZGUoKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCShyZXZpc2lvbiAz
NzMxNCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
Q2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjQsNiArNTI0LDE2IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpjbGlwKGNvbnN0IEZsb2F0UmUKICAgICBtX2RhdGEtPmNsaXAocmVjdCk7CiB9
CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwUGF0aChXaW5kUnVsZSBjbGlwUnVsZSkKK3sK
KyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBjYWly
b190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fpcm9fc2V0X2ZpbGxfcnVsZShjciwgY2xpcFJ1
bGUgPT0gUlVMRV9FVkVOT0REID8gQ0FJUk9fRklMTF9SVUxFX0VWRU5fT0REIDogQ0FJUk9fRklM
TF9SVUxFX1dJTkRJTkcpOworICAgIGNhaXJvX2NsaXAoY3IpOworfQorCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYgKHBh
aW50aW5nRGlzYWJsZWQoKSkKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCShyZXZpc2lvbiAzNzMxNCkKKysrIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01NjUsNiArNTY1LDIxIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0RWxsaXBz
ZUluUmUKICAgICBDR0NvbnRleHRFT0NsaXAocGxhdGZvcm1Db250ZXh0KCkpOwogfQogCit2b2lk
IEdyYXBoaWNzQ29udGV4dDo6Y2xpcFBhdGgoV2luZFJ1bGUgY2xpcFJ1bGUpCit7CisgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ0dDb250ZXh0UmVm
IGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKKworICAgIGlmICghQ0dDb250ZXh0SXNQYXRo
RW1wdHkoY29udGV4dCkpIHsKKyAgICAgICAgaWYgKGNsaXBSdWxlID09IFJVTEVfRVZFTk9ERCkK
KyAgICAgICAgICAgIENHQ29udGV4dEVPQ2xpcChjb250ZXh0KTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgQ0dDb250ZXh0Q2xpcChjb250ZXh0KTsKKyAgICB9Cit9CisKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjphZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChjb25zdCBJbnRSZWN0JiByZWN0LCBp
bnQgdGhpY2tuZXNzKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAko
cmV2aXNpb24gMzczMTQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNz
Q29udGV4dFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTk0LDcgKzU5NCw5IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpiZWdpblBhdGgoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YWRkUGF0
aChjb25zdCBQYXRoJiBwYXRoKQogewotICAgIG1fZGF0YS0+Y3VycmVudFBhdGggPSAqKHBhdGgu
cGxhdGZvcm1QYXRoKCkpOworICAgIFFQYWludGVyUGF0aCBuZXdQYXRoID0gbV9kYXRhLT5jdXJy
ZW50UGF0aDsKKyAgICBuZXdQYXRoLmFkZFBhdGgoKihwYXRoLnBsYXRmb3JtUGF0aCgpKSk7Cisg
ICAgbV9kYXRhLT5jdXJyZW50UGF0aCA9IG5ld1BhdGg7CiB9CiAKIGJvb2wgR3JhcGhpY3NDb250
ZXh0OjppblRyYW5zcGFyZW5jeUxheWVyKCkgY29uc3QKQEAgLTYxOCw2ICs2MjAsMTcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmNsaXAoY29uc3QgRmxvYXRSZQogICAgIGVsc2UgcC0+c2V0Q2xp
cFJlY3QocmVjdCwgUXQ6OkludGVyc2VjdENsaXApOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4
dDo6Y2xpcFBhdGgoV2luZFJ1bGUgY2xpcFJ1bGUpCit7CisgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUVBhaW50ZXIgKnAgPSBtX2RhdGEtPnAoKTsK
KyAgICBRUGFpbnRlclBhdGggbmV3UGF0aCA9IG1fZGF0YS0+Y3VycmVudFBhdGg7CisgICAgbmV3
UGF0aC5zZXRGaWxsUnVsZShjbGlwUnVsZSA9PSBSVUxFX0VWRU5PREQgPyBRdDo6T2RkRXZlbkZp
bGwgOiBRdDo6V2luZGluZ0ZpbGwpOworICAgIHAtPnNldENsaXBQYXRoKG5ld1BhdGgpOworfQor
CiAvKioKICAqIEZvY3VzIHJpbmcgaGFuZGxpbmcgaXMgbm90IGhhbmRsZWQgaGVyZS4gUXQgc3R5
bGUgaW4gCiAgKiBSZW5kZXJUaGVtZSBoYW5kbGVzIGRyYXdpbmcgZm9jdXMgb24gd2lkZ2V0cyB3
aGljaCAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlQ2xpcHBlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VDbGlwcGVyLmNw
cAkocmV2aXNpb24gMzczMTQpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZUNs
aXBwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCwxNCBAQAogI2lmIEVOQUJMRShT
VkcpCiAjaW5jbHVkZSAiU1ZHUmVzb3VyY2VDbGlwcGVyLmgiCiAKKyNpbmNsdWRlICJBZmZpbmVU
cmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJTVkdS
ZW5kZXJUcmVlQXNUZXh0LmgiCiAKKyNpZiBQTEFURk9STShDRykKKyNpbmNsdWRlIDxBcHBsaWNh
dGlvblNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFNWR1Jlc291cmNlQ2xpcHBlcjo6U1ZHUmVzb3VyY2VDbGlwcGVyKCkKQEAg
LTQ2LDYgKzUyLDM5IEBAIHZvaWQgU1ZHUmVzb3VyY2VDbGlwcGVyOjpyZXNldENsaXBEYXRhKCkK
ICAgICBtX2NsaXBEYXRhLmNsZWFyKCk7CiB9CiAKK3ZvaWQgU1ZHUmVzb3VyY2VDbGlwcGVyOjph
cHBseUNsaXAoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGJvdW5k
aW5nQm94KSBjb25zdAoreworICAgIGlmIChtX2NsaXBEYXRhLmNsaXBEYXRhKCkuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBib29sIGhldGVyb2dlbm91c0NsaXBSdWxlcyA9IGZh
bHNlOworICAgIFdpbmRSdWxlIGNsaXBSdWxlID0gbV9jbGlwRGF0YS5jbGlwRGF0YSgpWzBdLndp
bmRSdWxlOworCisgICAgY29udGV4dC0+YmVnaW5QYXRoKCk7CisKKyAgICBmb3IgKHVuc2lnbmVk
IHggPSAwOyB4IDwgbV9jbGlwRGF0YS5jbGlwRGF0YSgpLnNpemUoKTsgeCsrKSB7CisgICAgICAg
IENsaXBEYXRhIGNsaXBEYXRhID0gbV9jbGlwRGF0YS5jbGlwRGF0YSgpW3hdOworICAgICAgICBp
ZiAoY2xpcERhdGEud2luZFJ1bGUgIT0gY2xpcFJ1bGUpCisgICAgICAgICAgICBoZXRlcm9nZW5v
dXNDbGlwUnVsZXMgPSB0cnVlOworICAgICAgICAKKyAgICAgICAgUGF0aCBjbGlwUGF0aCA9IGNs
aXBEYXRhLnBhdGg7CisKKyAgICAgICAgaWYgKGNsaXBEYXRhLmJib3hVbml0cykgeworICAgICAg
ICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKKyAgICAgICAgICAgIHRyYW5zZm9ybS50
cmFuc2xhdGUoYm91bmRpbmdCb3gueCgpLCBib3VuZGluZ0JveC55KCkpOworICAgICAgICAgICAg
dHJhbnNmb3JtLnNjYWxlKGJvdW5kaW5nQm94LndpZHRoKCksIGJvdW5kaW5nQm94LmhlaWdodCgp
KTsKKyAgICAgICAgICAgIGNsaXBQYXRoLnRyYW5zZm9ybSh0cmFuc2Zvcm0pOworICAgICAgICB9
CisgICAgICAgIGNvbnRleHQtPmFkZFBhdGgoY2xpcFBhdGgpOworICAgIH0KKworICAgIC8vIEZJ
WE1FIQorICAgIC8vIFdlIGRvbid0IGN1cnJlbnRseSBhbGxvdyBmb3IgaGV0ZXJvZ2Vub3VzIGNs
aXAgcnVsZXMuCisgICAgLy8gd2Ugd291bGQgaGF2ZSB0byBkZXRlY3Qgc3VjaCwgZHJhdyB0byBh
IG1hc2ssIGFuZCB0aGVuIGNsaXAKKyAgICAvLyB0byB0aGF0IG1hc2sKKyAgICBjb250ZXh0LT5j
bGlwUGF0aChjbGlwUnVsZSk7Cit9CisKIHZvaWQgU1ZHUmVzb3VyY2VDbGlwcGVyOjphZGRDbGlw
RGF0YShjb25zdCBQYXRoJiBwYXRoLCBXaW5kUnVsZSBydWxlLCBib29sIGJib3hVbml0cykKIHsK
ICAgICBtX2NsaXBEYXRhLmFkZFBhdGgocGF0aCwgcnVsZSwgYmJveFVuaXRzKTsKSW5kZXg6IFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL2NhaXJvL1NWR1Jlc291cmNlQ2xpcHBlckNhaXJvLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9jYWlyby9TVkdSZXNvdXJjZUNsaXBwZXJD
YWlyby5jcHAJKHJldmlzaW9uIDM3MzE0KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2Fpcm8v
U1ZHUmVzb3VyY2VDbGlwcGVyQ2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY4ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4K
LSAqIENvcHlyaWdodCAoQykgMjAwOCBEaXJrIFNjaHVsemUgPHZiczg1QGdteC5kZT4KLSAqCi0g
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFNWRykKLSNpbmNsdWRlICJTVkdSZXNvdXJjZUNs
aXBwZXIuaCIKLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKLSNpbmNsdWRlICJDYWlyb1Bh
dGguaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLQotI2luY2x1ZGUgPGNhaXJvLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBTVkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5
Q2xpcChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdC
b3gpIGNvbnN0Ci17Ci0gICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KTsKLSAgICBpZiAobV9jbGlwRGF0YS5jbGlwRGF0YSgpLnNpemUoKSA8IDEpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGNhaXJvX3Jlc2V0X2NsaXAoY3IpOwotICAgIGNvbnRleHQtPmJlZ2luUGF0
aCgpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpbnQgeCA9IDA7IHggPCBtX2NsaXBEYXRhLmNsaXBE
YXRhKCkuc2l6ZSgpOyB4KyspIHsKLSAgICAgICAgQ2xpcERhdGEgZGF0YSA9IG1fY2xpcERhdGEu
Y2xpcERhdGEoKVt4XTsKLQotICAgICAgICBQYXRoIHBhdGggPSBkYXRhLnBhdGg7Ci0gICAgICAg
IGlmIChwYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBwYXRo
LmNsb3NlU3VicGF0aCgpOwotCi0gICAgICAgIGlmIChkYXRhLmJib3hVbml0cykgewotICAgICAg
ICAgICAgLy8gTWFrZSB1c2Ugb2YgdGhlIGNsaXBwaW5nIHVuaXRzCi0gICAgICAgICAgICBBZmZp
bmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwotICAgICAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShi
b3VuZGluZ0JveC54KCksIGJvdW5kaW5nQm94LnkoKSk7Ci0gICAgICAgICAgICB0cmFuc2Zvcm0u
c2NhbGUoYm91bmRpbmdCb3gud2lkdGgoKSwgYm91bmRpbmdCb3guaGVpZ2h0KCkpOwotICAgICAg
ICAgICAgcGF0aC50cmFuc2Zvcm0odHJhbnNmb3JtKTsKLSAgICAgICAgfQotICAgICAgICBjYWly
b19wYXRoX3QqIGNsaXBQYXRoID0gY2Fpcm9fY29weV9wYXRoKHBhdGgucGxhdGZvcm1QYXRoKCkt
Pm1fY3IpOwotICAgICAgICBjYWlyb19hcHBlbmRfcGF0aChjciwgY2xpcFBhdGgpOwotCi0gICAg
ICAgIGNhaXJvX3NldF9maWxsX3J1bGUoY3IsIGRhdGEud2luZFJ1bGUgPT0gUlVMRV9FVkVOT0RE
ID8gQ0FJUk9fRklMTF9SVUxFX0VWRU5fT0REIDogQ0FJUk9fRklMTF9SVUxFX1dJTkRJTkcpOwot
ICAgIH0KLQotICAgIGNhaXJvX2NsaXAoY3IpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZgpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2cvU1ZHUmVzb3VyY2VDbGlw
cGVyQ2cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2NnL1NWR1Jlc291
cmNlQ2xpcHBlckNnLmNwcAkocmV2aXNpb24gMzczMTQpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9jZy9TVkdSZXNvdXJjZUNsaXBwZXJDZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsODIgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqICAgICAgICAgICAgICAgMjAwNSBBbGV4YW5kZXIgS2VsbGV0
dCA8bHlwYW5vdkBrZGUub3JnPgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lm
IEVOQUJMRShTVkcpCi0jaW5jbHVkZSAiU1ZHUmVzb3VyY2VDbGlwcGVyLmgiCi0KLSNpbmNsdWRl
ICJBZmZpbmVUcmFuc2Zvcm0uaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLQotI2lu
Y2x1ZGUgPEFwcGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseUNsaXAoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94KSBjb25z
dAotewotICAgIGlmIChtX2NsaXBEYXRhLmNsaXBEYXRhKCkuc2l6ZSgpIDwgMSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgYm9vbCBoZXRlcm9nZW5vdXNDbGlwUnVsZXMgPSBmYWxzZTsKLSAgICBX
aW5kUnVsZSBjbGlwUnVsZSA9IG1fY2xpcERhdGEuY2xpcERhdGEoKVswXS53aW5kUnVsZTsKLQot
ICAgIGNvbnRleHQtPmJlZ2luUGF0aCgpOwotCi0gICAgQWZmaW5lVHJhbnNmb3JtIGJib3hUcmFu
c2Zvcm0gPSBtYWtlTWFwQmV0d2VlblJlY3RzKEZsb2F0UmVjdCgwLjBmLCAwLjBmLCAxLjBmLCAx
LjBmKSwgYm91bmRpbmdCb3gpOwotCi0gICAgZm9yICh1bnNpZ25lZCB4ID0gMDsgeCA8IG1fY2xp
cERhdGEuY2xpcERhdGEoKS5zaXplKCk7IHgrKykgewotICAgICAgICBDbGlwRGF0YSBkYXRhID0g
bV9jbGlwRGF0YS5jbGlwRGF0YSgpW3hdOwotICAgICAgICBpZiAoZGF0YS53aW5kUnVsZSAhPSBj
bGlwUnVsZSkKLSAgICAgICAgICAgIGhldGVyb2dlbm91c0NsaXBSdWxlcyA9IHRydWU7Ci0gICAg
ICAgIAotICAgICAgICBQYXRoIGNsaXBQYXRoID0gZGF0YS5wYXRoOwotCi0gICAgICAgIGlmIChk
YXRhLmJib3hVbml0cykKLSAgICAgICAgICAgIGNsaXBQYXRoLnRyYW5zZm9ybShiYm94VHJhbnNm
b3JtKTsKLQotICAgICAgICBjb250ZXh0LT5hZGRQYXRoKGNsaXBQYXRoKTsKLSAgICB9Ci0KLSAg
ICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7Ci0g
ICAgaWYgKG1fY2xpcERhdGEuY2xpcERhdGEoKS5zaXplKCkpIHsKLSAgICAgICAgLy8gRklYTUUh
Ci0gICAgICAgIC8vIFdlIGRvbid0IGN1cnJlbnRseSBhbGxvdyBmb3IgaGV0ZXJvZ2Vub3VzIGNs
aXAgcnVsZXMuCi0gICAgICAgIC8vIHdlIHdvdWxkIGhhdmUgdG8gZGV0ZWN0IHN1Y2gsIGRyYXcg
dG8gYSBtYXNrLCBhbmQgdGhlbiBjbGlwCi0gICAgICAgIC8vIHRvIHRoYXQgbWFzayAgICAgICAg
ICAgICAgICAKLSAgICAgICAgaWYgKCFDR0NvbnRleHRJc1BhdGhFbXB0eShjZ0NvbnRleHQpKSB7
Ci0gICAgICAgICAgICBpZiAoY2xpcFJ1bGUgPT0gUlVMRV9FVkVOT0REKQotICAgICAgICAgICAg
ICAgIENHQ29udGV4dEVPQ2xpcChjZ0NvbnRleHQpOwotICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIENHQ29udGV4dENsaXAoY2dDb250ZXh0KTsKLSAgICAgICAgfQotICAgIH0KLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL3F0L1NWR1Jlc291cmNlQ2xpcHBlclF0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9xdC9TVkdSZXNvdXJjZUNsaXBwZXJRdC5jcHAJ
KHJldmlzaW9uIDM3MzE0KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvcXQvU1ZHUmVzb3VyY2VD
bGlwcGVyUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyNyArMCwwIEBACi0vKgotICAgIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hA
a2RlLm9yZz4KLSAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1
aXNAa2RlLm9yZz4KLSAgICAgICAgICAgICAgICAgIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4K
LQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAotCi0gICAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot
ICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAg
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFpbnQgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFNWRykKLSNpbmNsdWRlICJTVkdSZXNvdXJjZUNsaXBw
ZXIuaCIKLQotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotCi0jaW5jbHVkZSA8UVBhaW50
ZXI+Ci0jaW5jbHVkZSA8UVBhaW50ZXJQYXRoPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZv
aWQgU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseUNsaXAoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94KSBjb25zdAotewotICAgIGlmIChtX2NsaXBE
YXRhLmNsaXBEYXRhKCkuc2l6ZSgpIDwgMSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY29udGV4
dC0+YmVnaW5QYXRoKCk7Ci0KLSAgICBRUGFpbnRlclBhdGggbmV3UGF0aDsKLQotICAgIGJvb2wg
aGV0ZXJvZ2Vub3VzQ2xpcFJ1bGVzID0gZmFsc2U7Ci0gICAgV2luZFJ1bGUgY2xpcFJ1bGUgPSBt
X2NsaXBEYXRhLmNsaXBEYXRhKClbMF0ud2luZFJ1bGU7Ci0KLSAgICB1bnNpZ25lZCBpbnQgY2xp
cERhdGFDb3VudCA9IG1fY2xpcERhdGEuY2xpcERhdGEoKS5zaXplKCk7Ci0gICAgZm9yICh1bnNp
Z25lZCBpbnQgeCA9IDA7IHggPCBjbGlwRGF0YUNvdW50OyB4KyspIHsKLSAgICAgICAgQ2xpcERh
dGEgY2xpcERhdGEgPSBtX2NsaXBEYXRhLmNsaXBEYXRhKClbeF07Ci0gICAgICAgIGlmIChjbGlw
RGF0YS53aW5kUnVsZSAhPSBjbGlwUnVsZSkKLSAgICAgICAgICAgIGhldGVyb2dlbm91c0NsaXBS
dWxlcyA9IHRydWU7Ci0KLSAgICAgICAgUVBhaW50ZXJQYXRoIHBhdGggPSAqKGNsaXBEYXRhLnBh
dGgucGxhdGZvcm1QYXRoKCkpOwotICAgICAgICBpZiAocGF0aC5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoIW5ld1BhdGguaXNFbXB0eSgpKQotICAgICAg
ICAgICAgbmV3UGF0aC5jbG9zZVN1YnBhdGgoKTsKLQotICAgICAgICAvLyBSZXNwZWN0IGNsaXBw
aW5nIHVuaXRzLi4uCi0gICAgICAgIFFNYXRyaXggdHJhbnNmb3JtOwotCi0gICAgICAgIGlmIChj
bGlwRGF0YS5iYm94VW5pdHMpIHsKLSAgICAgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoYm91
bmRpbmdCb3gueCgpLCBib3VuZGluZ0JveC55KCkpOwotICAgICAgICAgICAgdHJhbnNmb3JtLnNj
YWxlKGJvdW5kaW5nQm94LndpZHRoKCksIGJvdW5kaW5nQm94LmhlaWdodCgpKTsKLSAgICAgICAg
fQotCi0gICAgICAgIC8vIFRPRE86IHN1cHBvcnQgaGV0ZXJvZ2Vub3VzIGNsaXAgcnVsZXMhCi0g
ICAgICAgIC8vY2xpcFJ1bGUgPSAoY2xpcERhdGEud2luZFJ1bGUoKSA9PSBSVUxFX0VWRU5PREQg
PyBRdDo6T2RkRXZlbkZpbGwgOiBRdDo6V2luZGluZ0ZpbGwpOwotCi0gICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgcGF0aC5lbGVtZW50Q291bnQoKTsgKytpKSB7Ci0gICAgICAgICAgICBjb25z
dCBRUGFpbnRlclBhdGg6OkVsZW1lbnQgJmN1ciA9IHBhdGguZWxlbWVudEF0KGkpOwotCi0gICAg
ICAgICAgICBzd2l0Y2ggKGN1ci50eXBlKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBRUGFpbnRl
clBhdGg6Ok1vdmVUb0VsZW1lbnQ6Ci0gICAgICAgICAgICAgICAgICAgIG5ld1BhdGgubW92ZVRv
KFFQb2ludEYoY3VyLngsIGN1ci55KSAqIHRyYW5zZm9ybSk7Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgUVBhaW50ZXJQYXRoOjpMaW5lVG9FbGVtZW50
OgotICAgICAgICAgICAgICAgICAgICBuZXdQYXRoLmxpbmVUbyhRUG9pbnRGKGN1ci54LCBjdXIu
eSkgKiB0cmFuc2Zvcm0pOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICBjYXNlIFFQYWludGVyUGF0aDo6Q3VydmVUb0VsZW1lbnQ6Ci0gICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICBjb25zdCBRUGFpbnRlclBhdGg6OkVsZW1lbnQgJmMxID0g
cGF0aC5lbGVtZW50QXQoaSArIDEpOwotICAgICAgICAgICAgICAgICAgICBjb25zdCBRUGFpbnRl
clBhdGg6OkVsZW1lbnQgJmMyID0gcGF0aC5lbGVtZW50QXQoaSArIDIpOwotCi0gICAgICAgICAg
ICAgICAgICAgIFFfQVNTRVJUKGMxLnR5cGUgPT0gUVBhaW50ZXJQYXRoOjpDdXJ2ZVRvRGF0YUVs
ZW1lbnQpOwotICAgICAgICAgICAgICAgICAgICBRX0FTU0VSVChjMi50eXBlID09IFFQYWludGVy
UGF0aDo6Q3VydmVUb0RhdGFFbGVtZW50KTsKLQotICAgICAgICAgICAgICAgICAgICBuZXdQYXRo
LmN1YmljVG8oUVBvaW50RihjdXIueCwgY3VyLnkpICogdHJhbnNmb3JtLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUVBvaW50RihjMS54LCBjMS55KSAqIHRyYW5zZm9ybSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFQb2ludEYoYzIueCwgYzIueSkg
KiB0cmFuc2Zvcm0pOwotCi0gICAgICAgICAgICAgICAgICAgIGkgKz0gMjsKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGNhc2Ug
UVBhaW50ZXJQYXRoOjpDdXJ2ZVRvRGF0YUVsZW1lbnQ6Ci0gICAgICAgICAgICAgICAgICAgIFFf
QVNTRVJUKGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAobV9jbGlwRGF0YS5jbGlwRGF0YSgpLnNpemUo
KSkgewotICAgICAgICAvLyBGSVhNRSEKLSAgICAgICAgLy8gV2UgZG9uJ3QgY3VycmVudGx5IGFs
bG93IGZvciBoZXRlcm9nZW5vdXMgY2xpcCBydWxlcy4KLSAgICAgICAgLy8gd2Ugd291bGQgaGF2
ZSB0byBkZXRlY3Qgc3VjaCwgZHJhdyB0byBhIG1hc2ssIGFuZCB0aGVuIGNsaXAKLSAgICAgICAg
Ly8gdG8gdGhhdCBtYXNrCi0gICAgICAgIC8vIGlmICghQ0dDb250ZXh0SXNQYXRoRW1wdHkoY2dD
b250ZXh0KSkgewotICAgICAgICAgICAgaWYgKGNsaXBSdWxlID09IFJVTEVfRVZFTk9ERCkKLSAg
ICAgICAgICAgICAgICBuZXdQYXRoLnNldEZpbGxSdWxlKFF0OjpPZGRFdmVuRmlsbCk7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbmV3UGF0aC5zZXRGaWxsUnVsZShRdDo6V2lu
ZGluZ0ZpbGwpOwotICAgICAgICAvLyB9Ci0gICAgfQotCi0gICAgUVBhaW50ZXIqIHBhaW50ZXIo
Y29udGV4dCA/IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpIDogMCk7Ci0gICAgUV9BU1NFUlQo
cGFpbnRlcik7Ci0KLSAgICBwYWludGVyLT5zZXRDbGlwUGF0aChuZXdQYXRoKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKLQotLy8gdmltOnRzPTQ6bm9ldAo=
</data>
<flag name="review"
          id="10971"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>