<?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>48990</bug_id>
          
          <creation_ts>2010-11-04 05:12:41 -0700</creation_ts>
          <short_desc>Refactor SVGStringListPropertyTearOff/SVGListPropertyTearOff to use a common base class</short_desc>
          <delta_ts>2010-11-04 06:08:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</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>
          
          <blocked>47905</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>mdelaney7</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>304596</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-11-04 05:12:41 -0700</bug_when>
    <thetext>This prepares the addition of SVGPointList.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304597</commentid>
    <comment_count>1</comment_count>
      <attachid>72927</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-11-04 05:21:06 -0700</bug_when>
    <thetext>Created attachment 72927
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304616</commentid>
    <comment_count>2</comment_count>
      <attachid>72927</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-11-04 06:02:34 -0700</bug_when>
    <thetext>Comment on attachment 72927
Patch

LGTM, apart from the double ChangeLog entries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304618</commentid>
    <comment_count>3</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-11-04 06:08:21 -0700</bug_when>
    <thetext>Landed in r71329.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72927</attachid>
            <date>2010-11-04 05:21:06 -0700</date>
            <delta_ts>2010-11-04 06:02:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Refactor.diff</filename>
            <type>text/plain</type>
            <size>63895</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTMyMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsOTUgQEAKKzIwMTAtMTEtMDQgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJt
YW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmVmYWN0b3IgU1ZHU3RyaW5nTGlzdFByb3BlcnR5VGVhck9mZi9TVkdMaXN0UHJvcGVy
dHlUZWFyT2ZmIHRvIHVzZSBhIGNvbW1vbiBiYXNlIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODk5MAorCisgICAgICAgIEludHJvZHVjZSBT
VkdMaXN0UHJvcGVydHkgYXMgY29tbW9uIGJhc2UgY2xhc3MgYmV0d2VlbiBzdGF0aWMgbGlzdHMg
KFNWR1N0cmluZ0xpc3RQcm9wZXJ0eVRlYXJPZmYpIGFuZCBkeW5hbWljIGxpc3RzIChTVkdMaXN0
UHJvcGVydHlUZWFyT2ZmKS4KKyAgICAgICAgVGhpcyBpcyBhIHByZXBhcmF0aW9uIGZvciB0aGUg
YWRkaXRpb24gb2YgdGhlIG5leHQgc3RhdGljIGxpc3QgdHlwZTogU1ZHUG9pbnRMaXN0LgorCisg
ICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZCBuZXcgZmlsZXMgdG8gYnVpbGQuCisgICAgICAg
ICogV2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnBybzogRGl0dG8uCisg
ICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IERpdHRvLgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtOiBzL1NWR1N0cmluZ0xpc3RQcm9wZXJ0eVRl
YXJPZmYvU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi8uCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG06IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOiBEaXR0by4KKyAgICAgICAgKiBzdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaDogSW5jbHVkZSBTVkdTdGF0aWNMaXN0
UHJvcGVydHlUZWFyT2ZmLmggaGVyZSwgdG8gYXZvaWQgc3BlY2lhbCBkZXBlbmRlbmNpZXMgaW4g
Q29kZUdlbmVyYXRvcioucG0KKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdMaXN0UHJvcGVy
dHkuaDogQWRkZWQuCisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHTGlzdFByb3BlcnR5VGVh
ck9mZi5oOiBVc2UgU1ZHTGlzdCBBUEkgaW1wbGVtZW50YXRpb24gZnJvbSBTVkdMaXN0UHJvcGVy
dHkgYmFzZSBjbGFzcy4KKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdTdGF0aWNMaXN0UHJv
cGVydHlUZWFyT2ZmLmg6IEFkZGVkLiBVc2UgU1ZHTGlzdCBBUEkgaW1wbGVtZW50YXRpb24gZnJv
bSBTVkdMaXN0UHJvcGVydHkgYmFzZSBjbGFzcy4KKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9T
VkdTdHJpbmdMaXN0UHJvcGVydHlUZWFyT2ZmLmg6IFJlbW92ZWQuCisKKzIwMTAtMTEtMDQgIE5p
a29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3IgU1ZHU3RyaW5nTGlzdFBy
b3BlcnR5VGVhck9mZi9TVkdMaXN0UHJvcGVydHlUZWFyT2ZmIHRvIHVzZSBhIGNvbW1vbiBiYXNl
IGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
ODk5MAorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvci5wbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBt
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAg
ICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oOgorICAg
ICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eS5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eTo6Y2FuQWx0ZXJMaXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0xpc3RQcm9wZXJ0eTo6Y2xlYXJWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TGlzdFByb3BlcnR5OjpjbGVhclZhbHVlc0FuZFdyYXBwZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0xpc3RQcm9wZXJ0eTo6bnVtYmVyT2ZJdGVtc1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdMaXN0UHJvcGVydHk6Om51bWJlck9mSXRlbXNWYWx1ZXNBbmRXcmFwcGVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdMaXN0UHJvcGVydHk6OmluaXRpYWxpemVWYWx1ZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHTGlzdFByb3BlcnR5Ojppbml0aWFsaXplVmFsdWVzQW5kV3JhcHBlcnMp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdFByb3BlcnR5OjpjYW5HZXRJdGVtKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eTo6Z2V0SXRlbVZhbHVlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdMaXN0UHJvcGVydHk6OmdldEl0ZW1WYWx1ZXNBbmRXcmFwcGVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdMaXN0UHJvcGVydHk6Omluc2VydEl0ZW1CZWZvcmVWYWx1ZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdFByb3BlcnR5OjppbnNlcnRJdGVtQmVmb3JlVmFsdWVz
QW5kV3JhcHBlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdFByb3BlcnR5OjpjYW5SZXBs
YWNlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0UHJvcGVydHk6OnJlcGxhY2VJdGVt
VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eTo6cmVwbGFjZUl0ZW1W
YWx1ZXNBbmRXcmFwcGVycyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0UHJvcGVydHk6OmNh
blJlbW92ZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdFByb3BlcnR5OjpyZW1vdmVJ
dGVtVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eTo6cmVtb3ZlSXRl
bVZhbHVlc0FuZFdyYXBwZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eTo6
YXBwZW5kSXRlbVZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0UHJvcGVydHk6OmFw
cGVuZEl0ZW1WYWx1ZXNBbmRXcmFwcGVycyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0UHJv
cGVydHk6OlNWR0xpc3RQcm9wZXJ0eSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHTGlz
dFByb3BlcnR5VGVhck9mZi5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdFByb3BlcnR5VGVh
ck9mZjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY6
OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY6Om51bWJl
ck9mSXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdFByb3BlcnR5VGVhck9mZjo6aW5p
dGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0UHJvcGVydHlUZWFyT2ZmOjpnZXRJ
dGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY6Omluc2VydEl0
ZW1CZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdFByb3BlcnR5VGVhck9mZjo6cmVw
bGFjZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdFByb3BlcnR5VGVhck9mZjo6cmVt
b3ZlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0UHJvcGVydHlUZWFyT2ZmOjphcHBl
bmRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY6OlNWR0xp
c3RQcm9wZXJ0eVRlYXJPZmYpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdFByb3BlcnR5VGVh
ck9mZjo6Y29tbWl0Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3RQcm9wZXJ0eVRl
YXJPZmY6OnByb2Nlc3NJbmNvbWluZ0xpc3RJdGVtVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHTGlzdFByb3BlcnR5VGVhck9mZjo6cHJvY2Vzc0luY29taW5nTGlzdEl0ZW1XcmFwcGVyKToK
KyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmY6
OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmY6
Om51bWJlck9mSXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3RhdGljTGlzdFByb3BlcnR5
VGVhck9mZjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdGF0aWNMaXN0UHJv
cGVydHlUZWFyT2ZmOjpnZXRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0YXRpY0xpc3RQ
cm9wZXJ0eVRlYXJPZmY6Omluc2VydEl0ZW1CZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
U3RhdGljTGlzdFByb3BlcnR5VGVhck9mZjo6cmVwbGFjZUl0ZW0pOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZjo6cmVtb3ZlSXRlbSk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmOjphcHBlbmRJdGVtKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmY6OlNWR1N0YXRpY0xpc3RQ
cm9wZXJ0eVRlYXJPZmYpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3RhdGljTGlzdFByb3BlcnR5
VGVhck9mZjo6Y29tbWl0Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0YXRpY0xpc3RQ
cm9wZXJ0eVRlYXJPZmY6OnByb2Nlc3NJbmNvbWluZ0xpc3RJdGVtVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZjo6cHJvY2Vzc0luY29taW5nTGlz
dEl0ZW1XcmFwcGVyKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdTdHJpbmdMaXN0UHJv
cGVydHlUZWFyT2ZmLmg6IFJlbW92ZWQuCisKIDIwMTAtMTEtMDQgIFByYXRpayBTb2xhbmtpICA8
cHNvbGFua2lAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJ
bmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCShyZXZpc2lvbiA3MTIyNykKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdv
cmtpbmcgY29weSkKQEAgLTMwMzQsMTEgKzMwMzQsMTIgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwK
IAlXZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXIu
aCBcCiAJV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZi5o
IFwKIAlXZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFy
T2ZmLmggXAorCVdlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGlzdFByb3BlcnR5LmggXAogCVdl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oIFwKIAlXZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5LmggXAogCVdlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHUHJvcGVydHlUZWFyT2ZmLmggXAogCVdlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVy
dHlUcmFpdHMuaCBcCi0JV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdTdHJpbmdMaXN0UHJvcGVy
dHlUZWFyT2ZmLmggXAorCVdlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHU3RhdGljTGlzdFByb3Bl
cnR5VGVhck9mZi5oIFwKIAlXZWJDb3JlL3N2Zy9SYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMuaCBc
CiAJV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwIFwKIAlXZWJDb3JlL3N2Zy9TVkdBRWxlbWVu
dC5oIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
V2ViQ29yZS5neXBpCShyZXZpc2lvbiA3MTIyNykKKysrIFdlYkNvcmUvV2ViQ29yZS5neXBpCSh3
b3JraW5nIGNvcHkpCkBAIC0zOTUzLDExICszOTUzLDEyIEBACiAgICAgICAgICAgICAnc3ZnL3By
b3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oJywKICAgICAgICAgICAg
ICdzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZi5oJywKICAgICAgICAg
ICAgICdzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZi5oJywK
KyAgICAgICAgICAgICdzdmcvcHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHkuaCcsCiAgICAgICAg
ICAgICAnc3ZnL3Byb3BlcnRpZXMvU1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oJywKICAgICAgICAg
ICAgICdzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eS5oJywKICAgICAgICAgICAgICdzdmcvcHJv
cGVydGllcy9TVkdQcm9wZXJ0eVRlYXJPZmYuaCcsCiAgICAgICAgICAgICAnc3ZnL3Byb3BlcnRp
ZXMvU1ZHUHJvcGVydHlUcmFpdHMuaCcsCi0gICAgICAgICAgICAnc3ZnL3Byb3BlcnRpZXMvU1ZH
U3RyaW5nTGlzdFByb3BlcnR5VGVhck9mZi5oJywKKyAgICAgICAgICAgICdzdmcvcHJvcGVydGll
cy9TVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmLmgnLAogICAgICAgICAgICAgJ3N2Zy9Db2xv
ckRpc3RhbmNlLmNwcCcsCiAgICAgICAgICAgICAnc3ZnL0NvbG9yRGlzdGFuY2UuaCcsCiAgICAg
ICAgICAgICAnc3ZnL0RlcHJlY2F0ZWRTVkdBbmltYXRlZFByb3BlcnR5LmgnLApJbmRleDogV2Vi
Q29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJvCShyZXZp
c2lvbiA3MTIyNykKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTIz
NjMsMTEgKzIzNjMsMTIgQEAgSEVBREVSUyArPSBcCiAgICAgc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplci5oIFwKICAgICBzdmcvcHJvcGVydGllcy9TVkdBbmlt
YXRlZFByb3BlcnR5VGVhck9mZi5oIFwKICAgICBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFN0
YXRpY1Byb3BlcnR5VGVhck9mZi5oIFwKKyAgICBzdmcvcHJvcGVydGllcy9TVkdMaXN0UHJvcGVy
dHkuaCBcCiAgICAgc3ZnL3Byb3BlcnRpZXMvU1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oIFwKICAg
ICBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eS5oIFwKICAgICBzdmcvcHJvcGVydGllcy9TVkdQ
cm9wZXJ0eVRlYXJPZmYuaCBcCiAgICAgc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMu
aCBcCi0gICAgc3ZnL3Byb3BlcnRpZXMvU1ZHU3RyaW5nTGlzdFByb3BlcnR5VGVhck9mZi5oIFwK
KyAgICBzdmcvcHJvcGVydGllcy9TVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmLmggXAogICAg
IHN2Zy9TVkdBRWxlbWVudC5oIFwKICAgICBzdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmggXAogICAg
IHN2Zy9TVkdBbmdsZS5oIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agkocmV2aXNpb24gNzEyMjcpCisrKyBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC02MjcyMyw2ICs2MjcyMywxMCBAQAogCQkJCQk+DQogCQkJ
CTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXHByb3BlcnRp
ZXNcU1ZHTGlzdFByb3BlcnR5LmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUN
CiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXHByb3BlcnRpZXNcU1ZHTGlzdFByb3BlcnR5VGVh
ck9mZi5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQpAQCAtNjI3MzksNyArNjI3NDMsNyBAQAog
CQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5c
c3ZnXHByb3BlcnRpZXNcU1ZHU3RyaW5nTGlzdFByb3BlcnR5VGVhck9mZi5oIg0KKwkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxzdmdccHJvcGVydGllc1xTVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2Zm
LmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQk8L0ZpbHRlcj4NCkluZGV4OiBXZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNzEyMjcpCisrKyBX
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtNzAsNiArNzAsNyBAQAogCQkwODBFNDkyODEyNTVGM0JEMDBFRkNBMjcgLyogU1ZHVGV4dExh
eW91dEVuZ2luZVNwYWNpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA4MEU0OTI0MTI1NUYzQkQwMEVGQ0EyNyAvKiBTVkdUZXh0TGF5b3V0RW5naW5l
U3BhY2luZy5oICovOyB9OwogCQkwODBGQUUxQTBFRUVCREE4MDBBQUNERTkgLyogV01MVGVtcGxh
dGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4MEZBRTE4MEVFRUJEQTgwMEFBQ0RFOSAvKiBXTUxUZW1wbGF0ZUVsZW1lbnQuY3BwICov
OyB9OwogCQkwODBGQUUxQjBFRUVCREE4MDBBQUNERTkgLyogV01MVGVtcGxhdGVFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODBGQUUxOTBF
RUVCREE4MDBBQUNERTkgLyogV01MVGVtcGxhdGVFbGVtZW50LmggKi87IH07CisJCTA4MTA3NjQ0
MTI4Mjg1NTYwMDdDNjNCQSAvKiBTVkdMaXN0UHJvcGVydHkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MTA3NjQzMTI4Mjg1NTYwMDdDNjNCQSAvKiBT
VkdMaXN0UHJvcGVydHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwODEwOTNEQjEyNTVGMEU3MDBFRDlEMjkgLyogU1ZHVGV4dExheW91dEF0dHJp
YnV0ZXNCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA4MTA5M0Q5MTI1NUYwRTcwMEVEOUQyOSAvKiBTVkdUZXh0TGF5b3V0QXR0cmlidXRl
c0J1aWxkZXIuY3BwICovOyB9OwogCQkwODEwOTNEQzEyNTVGMEU3MDBFRDlEMjkgLyogU1ZHVGV4
dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwODEwOTNEQTEyNTVGMEU3MDBFRDlEMjkgLyogU1ZHVGV4dExheW91
dEF0dHJpYnV0ZXNCdWlsZGVyLmggKi87IH07CiAJCTA4MTY2OEQzMTI1NjAzQkYwMDZGMjVERSAv
KiBTVkdUZXh0Q2h1bmtCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA4MTY2OEQxMTI1NjAzQkYwMDZGMjVERSAvKiBTVkdUZXh0Q2h1bmtC
dWlsZGVyLmNwcCAqLzsgfTsKQEAgLTE3Miw2ICsxNzMsNyBAQAogCQkwODgwN0I3RjBFRDcwOUFC
MDAzRjY5NzUgLyogV01MUmVmcmVzaEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4ODA3QjczMEVENzA5QUIwMDNGNjk3NSAvKiBXTUxSZWZy
ZXNoRWxlbWVudC5oICovOyB9OwogCQkwODgwN0I4MDBFRDcwOUFCMDAzRjY5NzUgLyogV01MU2V0
dmFyRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwODgwN0I3NDBFRDcwOUFCMDAzRjY5NzUgLyogV01MU2V0dmFyRWxlbWVudC5jcHAgKi87
IH07CiAJCTA4ODA3QjgxMEVENzA5QUIwMDNGNjk3NSAvKiBXTUxTZXR2YXJFbGVtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODgwN0I3NTBFRDcw
OUFCMDAzRjY5NzUgLyogV01MU2V0dmFyRWxlbWVudC5oICovOyB9OworCQkwODgwRjcwRTEyODJC
NDZEMDA5NDg1MDUgLyogU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg4MEY3MEQxMjgyQjQ2RDAwOTQ4
NTA1IC8qIFNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODgyMEJERTBFRjVEMzgxMDA5MDk5QTgg
LyogV01MVGFibGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA4ODIwQkRDMEVGNUQzODEwMDkwOTlBOCAvKiBXTUxUYWJsZUVsZW1lbnQu
Y3BwICovOyB9OwogCQkwODgyMEJERjBFRjVEMzgxMDA5MDk5QTggLyogV01MVGFibGVFbGVtZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODgyMEJE
RDBFRjVEMzgxMDA5MDk5QTggLyogV01MVGFibGVFbGVtZW50LmggKi87IH07CiAJCTA4ODQ1MTE1
MEYyNjdCNjMwMDdGMTM5RSAvKiBXTUxJbnB1dEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg4NDUxMTMwRjI2N0I2MjAwN0YxMzlFIC8q
IFdNTElucHV0RWxlbWVudC5jcHAgKi87IH07CkBAIC0yNDQsNyArMjQ2LDYgQEAKIAkJMDhFMTky
NTMwRURFMEMzQTAwODdCNzgwIC8qIFdNTEVycm9ySGFuZGxpbmcuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhFMTkyNTEwRURFMEMzOTAwODdCNzgw
IC8qIFdNTEVycm9ySGFuZGxpbmcuY3BwICovOyB9OwogCQkwOEUxOTI1NDBFREUwQzNBMDA4N0I3
ODAgLyogV01MRXJyb3JIYW5kbGluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDhFMTkyNTIwRURFMEMzQTAwODdCNzgwIC8qIFdNTEVycm9ySGFuZGxp
bmcuaCAqLzsgfTsKIAkJMDhFNEZFNDYwRTJCRDQxNDAwRjRDQUUwIC8qIEpTU1ZHTGVuZ3RoQ3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4
RTRGRTQ1MEUyQkQ0MTQwMEY0Q0FFMCAvKiBKU1NWR0xlbmd0aEN1c3RvbS5jcHAgKi87IH07Ci0J
CTA4RTU4RkY1MTI4MDFDRjcwMDQ1OTAzRCAvKiBTVkdTdHJpbmdMaXN0UHJvcGVydHlUZWFyT2Zm
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEU1OEZG
NDEyODAxQ0Y3MDA0NTkwM0QgLyogU1ZHU3RyaW5nTGlzdFByb3BlcnR5VGVhck9mZi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4RTZBMkU4MEVF
RTAzNTIwMEFDMTIwNiAvKiBXTUxQb3N0ZmllbGRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RTZBMkU2MEVFRTAzNTIwMEFDMTIwNiAv
KiBXTUxQb3N0ZmllbGRFbGVtZW50LmNwcCAqLzsgfTsKIAkJMDhFNkEyRTkwRUVFMDM1MjAwQUMx
MjA2IC8qIFdNTFBvc3RmaWVsZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA4RTZBMkU3MEVFRTAzNTIwMEFDMTIwNiAvKiBXTUxQb3N0Zmll
bGRFbGVtZW50LmggKi87IH07CiAJCTA4RTZFMEYxMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVs
ZFNldEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDhFNkUwRUYwRUZGNDJCQTAwMDI5RkJGIC8qIFdNTEZpZWxkU2V0RWxlbWVudC5jcHAg
Ki87IH07CkBAIC02MDk3LDYgKzYwOTgsNyBAQAogCQkwODBFNDkyNDEyNTVGM0JEMDBFRkNBMjcg
LyogU1ZHVGV4dExheW91dEVuZ2luZVNwYWNpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU1ZHVGV4dExheW91dEVuZ2luZVNwYWNpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDgwRkFFMTgwRUVFQkRBODAwQUFDREU5IC8qIFdNTFRlbXBsYXRlRWxlbWVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXTUxUZW1wbGF0ZUVs
ZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODBGQUUxOTBFRUVCREE4
MDBBQUNERTkgLyogV01MVGVtcGxhdGVFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdNTFRlbXBsYXRlRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwODEwNzY0MzEyODI4NTU2MDA3QzYzQkEgLyogU1ZHTGlzdFByb3BlcnR5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0xpc3RQcm9wZXJ0eS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwODEwOTNEOTEyNTVGMEU3MDBFRDlEMjkgLyogU1ZHVGV4dExh
eW91dEF0dHJpYnV0ZXNCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA4MTA5M0RBMTI1NUYwRTcwMEVEOUQyOSAvKiBTVkdUZXh0TGF5b3V0
QXR0cmlidXRlc0J1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZH
VGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA4MTY2OEQxMTI1NjAzQkYwMDZGMjVERSAvKiBTVkdUZXh0Q2h1bmtCdWlsZGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1RleHRDaHVua0J1aWxkZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjE5Nyw2ICs2MTk5LDcgQEAKIAkJ
MDg4MDdCNzMwRUQ3MDlBQjAwM0Y2OTc1IC8qIFdNTFJlZnJlc2hFbGVtZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdNTFJlZnJlc2hFbGVtZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA4ODA3Qjc0MEVENzA5QUIwMDNGNjk3NSAvKiBXTUxTZXR2YXJF
bGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdNTFNldHZh
ckVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODgwN0I3NTBFRDcw
OUFCMDAzRjY5NzUgLyogV01MU2V0dmFyRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXTUxTZXR2YXJFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTA4ODBGNzBEMTI4MkI0NkQwMDk0ODUwNSAvKiBTVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFy
T2ZmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1N0YXRpY0xpc3RQcm9w
ZXJ0eVRlYXJPZmYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg4MjBCREMwRUY1
RDM4MTAwOTA5OUE4IC8qIFdNTFRhYmxlRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXTUxUYWJsZUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwODgyMEJERDBFRjVEMzgxMDA5MDk5QTggLyogV01MVGFibGVFbGVtZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdNTFRhYmxlRWxlbWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODg0NTExMzBGMjY3QjYyMDA3RjEzOUUgLyogV01M
SW5wdXRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdN
TElucHV0RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MjU2LDcg
KzYyNTksNiBAQAogCQkwOEUxOTI1MTBFREUwQzM5MDA4N0I3ODAgLyogV01MRXJyb3JIYW5kbGlu
Zy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXTUxFcnJvckhhbmRs
aW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhFMTkyNTIwRURFMEMzQTAw
ODdCNzgwIC8qIFdNTEVycm9ySGFuZGxpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV01MRXJyb3JIYW5kbGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
OEU0RkU0NTBFMkJENDE0MDBGNENBRTAgLyogSlNTVkdMZW5ndGhDdXN0b20uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdMZW5ndGhDdXN0b20uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwOEU1OEZGNDEyODAxQ0Y3MDA0NTkwM0QgLyogU1ZH
U3RyaW5nTGlzdFByb3BlcnR5VGVhck9mZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTVkdTdHJpbmdMaXN0UHJvcGVydHlUZWFyT2ZmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA4RTZBMkU2MEVFRTAzNTIwMEFDMTIwNiAvKiBXTUxQb3N0ZmllbGRFbGVtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdNTFBvc3RmaWVsZEVs
ZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEU2QTJFNzBFRUUwMzUy
MDBBQzEyMDYgLyogV01MUG9zdGZpZWxkRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXTUxQb3N0ZmllbGRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA4RTZFMEVGMEVGRjQyQkEwMDAyOUZCRiAvKiBXTUxGaWVsZFNldEVsZW1lbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV01MRmllbGRTZXRFbGVtZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExNzU0LDExICsxMTc1NiwxMiBA
QAogCQkJCTA4MUNERkJFMTI2RUNGRTgwMEQyMTVDQSAvKiBTVkdBbmltYXRlZFByb3BlcnR5U3lu
Y2hyb25pemVyLmggKi8sCiAJCQkJMDg4QTBERkYxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0FuaW1h
dGVkUHJvcGVydHlUZWFyT2ZmLmggKi8sCiAJCQkJMDg1MjVFNjIxMjc4QzAwMTAwQTg0Nzc4IC8q
IFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmLmggKi8sCisJCQkJMDgxMDc2NDMxMjgy
ODU1NjAwN0M2M0JBIC8qIFNWR0xpc3RQcm9wZXJ0eS5oICovLAogCQkJCTA4OEEwRTAwMTI2RUYx
REIwMDk3OEY3QSAvKiBTVkdMaXN0UHJvcGVydHlUZWFyT2ZmLmggKi8sCiAJCQkJMDg4QTBFMDEx
MjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5LmggKi8sCiAJCQkJMDg4QTBFMDIxMjZFRjFE
QjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5VGVhck9mZi5oICovLAogCQkJCTA4OEEwRTAzMTI2RUYx
REIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eVRyYWl0cy5oICovLAotCQkJCTA4RTU4RkY0MTI4MDFD
RjcwMDQ1OTAzRCAvKiBTVkdTdHJpbmdMaXN0UHJvcGVydHlUZWFyT2ZmLmggKi8sCisJCQkJMDg4
MEY3MEQxMjgyQjQ2RDAwOTQ4NTA1IC8qIFNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCAq
LywKIAkJCSk7CiAJCQlwYXRoID0gcHJvcGVydGllczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CkBAIC0yMDkxNCw2ICsyMDkxNyw3IEBACiAJCQkJQjIyMjdBMzkwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdB
M0MwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xpbmVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCMjIyN0EzRTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMDgxMDc2NDQxMjgyODU1NjAwN0M2M0JBIC8qIFNWR0xpc3RQcm9wZXJ0eS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDg4QTBFMDkxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0xpc3RQcm9wZXJ0eVRl
YXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTNGMEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdMaXN0VHJhaXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E0MTBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHTG9jYXRhYmxlLmggaW4gSGVhZGVycyAqLywKQEAgLTIwOTc4LDkgKzIwOTgyLDkg
QEAKIAkJCQlCMjIyN0FBNjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU2V0RWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDhEQUI5QzMxMTAzRDlDMTAwM0U3QUJBIC8qIFNWR1NoYWRvd1RyZWVF
bGVtZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBRkQwMTAwREFGMzM1NTAwRjVGNTVDIC8q
IFNWR1NNSUxFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkwODgwRjcwRTEyODJCNDZEMDA5
NDg1MDUgLyogU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjIyMjdBQTkwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N0b3BFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMjIyN0FBQzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3RyaW5nTGlzdC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJMDhFNThGRjUxMjgwMUNGNzAwNDU5MDNEIC8qIFNWR1N0cmluZ0xp
c3RQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUFGMEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdTdHlsYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBQjIwRDAw
QkYyMjAwNzFCNzgyIC8qIFNWR1N0eWxlZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
MjI3QUI0MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
LnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
LnBtCShyZXZpc2lvbiA3MTIyNykKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yLnBtCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIG15ICVzdmdOYXRpdmVU
eXBlID0gKAogICAgICJTVkdOdW1iZXJMaXN0IiA9PiAiU1ZHTGlzdFByb3BlcnR5VGVhck9mZjxT
VkdOdW1iZXJMaXN0PiIsCiAgICAgIlNWR1ByZXNlcnZlQXNwZWN0UmF0aW8iID0+ICJTVkdQcm9w
ZXJ0eVRlYXJPZmY8U1ZHUHJlc2VydmVBc3BlY3RSYXRpbz4iLAogICAgICJTVkdSZWN0IiA9PiAi
U1ZHUHJvcGVydHlUZWFyT2ZmPEZsb2F0UmVjdD4iLAotICAgICJTVkdTdHJpbmdMaXN0IiA9PiAi
U1ZHU3RyaW5nTGlzdFByb3BlcnR5VGVhck9mZiIKKyAgICAiU1ZHU3RyaW5nTGlzdCIgPT4gIlNW
R1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHU3RyaW5nTGlzdD4iCiApOwogCiAjIENhY2hl
IG9mIElETCBmaWxlIHBhdGhuYW1lcy4KQEAgLTM5OCw3ICszOTgsMTAgQEAgc3ViIEdldFNWR1dy
YXBwZWRUeXBlTmVlZGluZ1RlYXJPZmYKICAgICAgICAgJHN2Z05hdGl2ZVR5cGUgPX4gcy9TVkdQ
cm9wZXJ0eVRlYXJPZmY8Ly87CiAgICAgfSBlbHNpZiAoJHN2Z05hdGl2ZVR5cGUgPX4gL1NWR0xp
c3RQcm9wZXJ0eVRlYXJPZmYvKSB7CiAgICAgICAgICRzdmdOYXRpdmVUeXBlID1+IHMvU1ZHTGlz
dFByb3BlcnR5VGVhck9mZjwvLzsKKyAgICB9IGVsc2lmICgkc3ZnTmF0aXZlVHlwZSA9fiAvU1ZH
U3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi8pIHsKKyAgICAgICAgJHN2Z05hdGl2ZVR5cGUgPX4g
cy9TVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmPC8vOwogICAgIH0KKwogICAgICRzdmdOYXRp
dmVUeXBlID1+IHMvPi8vOwogICAgIHJldHVybiAkc3ZnTmF0aXZlVHlwZTsKIH0KSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gNzEy
MjcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNTAyLDEzICsyNTAyLDEwIEBAIHN1YiBHZXRTVkdQcm9wZXJ0eVR5cGVz
CiAgICAgICAgICRzdmdQcm9wZXJ0eVR5cGUgPSAkc3ZnV3JhcHBlZE5hdGl2ZVR5cGU7CiAgICAg
ICAgICRoZWFkZXJJbmNsdWRlc3siJHN2Z1dyYXBwZWROYXRpdmVUeXBlLmgifSA9IDE7CiAgICAg
ICAgICRoZWFkZXJJbmNsdWRlc3siU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYuaCJ9ID0gMTsK
LSAgICB9IGVsc2lmICgkc3ZnTmF0aXZlVHlwZSA9fiAvU1ZHTGlzdFByb3BlcnR5VGVhck9mZi8p
IHsKKyAgICB9IGVsc2lmICgkc3ZnTmF0aXZlVHlwZSA9fiAvU1ZHTGlzdFByb3BlcnR5VGVhck9m
Zi8gb3IgJHN2Z05hdGl2ZVR5cGUgPX4gL1NWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYvKSB7
CiAgICAgICAgICRzdmdMaXN0UHJvcGVydHlUeXBlID0gJHN2Z1dyYXBwZWROYXRpdmVUeXBlOwog
ICAgICAgICAkaGVhZGVySW5jbHVkZXN7IiRzdmdXcmFwcGVkTmF0aXZlVHlwZS5oIn0gPSAxOwog
ICAgICAgICAkaGVhZGVySW5jbHVkZXN7IlNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5o
In0gPSAxOwotICAgIH0gZWxzaWYgKCRzdmdOYXRpdmVUeXBlID1+IC9TVkdTdHJpbmdMaXN0UHJv
cGVydHlUZWFyT2ZmLykgewotICAgICAgICAkc3ZnTGlzdFByb3BlcnR5VHlwZSA9ICJTVkdTdHJp
bmdMaXN0IjsKLSAgICAgICAgJGhlYWRlckluY2x1ZGVzeyIkc3ZnV3JhcHBlZE5hdGl2ZVR5cGUu
aCJ9ID0gMTsKICAgICB9CiAKICAgICByZXR1cm4gKCRzdmdQcm9wZXJ0eVR5cGUsICRzdmdMaXN0
UHJvcGVydHlUeXBlLCAkc3ZnTmF0aXZlVHlwZSk7CkBAIC0yNjgzLDExICsyNjgwLDExIEBAIHN1
YiBOYXRpdmVUb0pTVmFsdWUKICAgICAgICAgJHZhbHVlID0gInN0YXRpY19jYXN0PCIgLiBHZXRO
YXRpdmVUeXBlKCR0eXBlKSAuICI+KCR2YWx1ZSkiOwogICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJh
dG9yLT5Jc1NWR1R5cGVOZWVkaW5nVGVhck9mZigkdHlwZSkgYW5kIG5vdCAkaW1wbENsYXNzTmFt
ZSA9fiAvTGlzdCQvKSB7CiAgICAgICAgIG15ICR0ZWFyT2ZmVHlwZSA9ICRjb2RlR2VuZXJhdG9y
LT5HZXRTVkdUeXBlTmVlZGluZ1RlYXJPZmYoJHR5cGUpOwotICAgICAgICBpZiAoJHRlYXJPZmZU
eXBlIGVxICJTVkdTdHJpbmdMaXN0UHJvcGVydHlUZWFyT2ZmIikgeworICAgICAgICBpZiAoJHRl
YXJPZmZUeXBlID1+IC9TVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmLykgewogICAgICAgICAg
ICAgbXkgJGV4dHJhSW1wID0gIkdldE93bmVyRWxlbWVudEZvclR5cGU8JGltcGxDbGFzc05hbWUs
IElzRGVyaXZlZEZyb21TVkdFbGVtZW50PCRpbXBsQ2xhc3NOYW1lPjo6dmFsdWU+Ojpvd25lckVs
ZW1lbnQoaW1wKSwgIjsKLSAgICAgICAgICAgICR2YWx1ZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRT
VkdUeXBlTmVlZGluZ1RlYXJPZmYoJHR5cGUpIC4gIjo6Y3JlYXRlKCRleHRyYUltcCR2YWx1ZSki
OworICAgICAgICAgICAgJHZhbHVlID0gIiR7dGVhck9mZlR5cGV9OjpjcmVhdGUoJGV4dHJhSW1w
JHZhbHVlKSI7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAkdmFsdWUgPSAkY29kZUdl
bmVyYXRvci0+R2V0U1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCR0eXBlKSAuICI6OmNyZWF0ZSgkdmFs
dWUpIjsKKyAgICAgICAgICAgICR2YWx1ZSA9ICIke3RlYXJPZmZUeXBlfTo6Y3JlYXRlKCR2YWx1
ZSkiOwogICAgICAgICB9CiAgICAgfQogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvck9iakMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCShyZXZpc2lvbiA3MTIyNykKKysrIFdlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQkod29ya2luZyBjb3B5KQpAQCAtNjg3
LDExICs2ODcsOSBAQCBzdWIgR2V0U1ZHUHJvcGVydHlUeXBlcwogICAgICAgICAgICAgJHN2Z1By
b3BlcnR5VHlwZSA9ICJXZWJDb3JlOjokc3ZnV3JhcHBlZE5hdGl2ZVR5cGUiOwogICAgICAgICAg
ICAgJHN2Z1Byb3BlcnR5VHlwZSA9fiBzLzwvXDxXZWJDb3JlOjovOwogICAgICAgICB9Ci0gICAg
fSBlbHNpZiAoJHN2Z05hdGl2ZVR5cGUgPX4gL1NWR0xpc3RQcm9wZXJ0eVRlYXJPZmYvKSB7Cisg
ICAgfSBlbHNpZiAoJHN2Z05hdGl2ZVR5cGUgPX4gL1NWR0xpc3RQcm9wZXJ0eVRlYXJPZmYvIG9y
ICRzdmdOYXRpdmVUeXBlID1+IC9TVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmLykgewogICAg
ICAgICAkc3ZnTGlzdFByb3BlcnR5VHlwZSA9ICJXZWJDb3JlOjokc3ZnV3JhcHBlZE5hdGl2ZVR5
cGUiOwogICAgICAgICAkc3ZnTGlzdFByb3BlcnR5VHlwZSA9fiBzLzwvXDxXZWJDb3JlOjovOwot
ICAgIH0gZWxzaWYgKCRzdmdOYXRpdmVUeXBlID1+IC9TVkdTdHJpbmdMaXN0UHJvcGVydHlUZWFy
T2ZmLykgewotICAgICAgICAkc3ZnTGlzdFByb3BlcnR5VHlwZSA9ICJXZWJDb3JlOjpTVkdTdHJp
bmdMaXN0IjsKICAgICB9CiAKICAgICByZXR1cm4gKCRzdmdQcm9wZXJ0eVR5cGUsICRzdmdMaXN0
UHJvcGVydHlUeXBlLCAkc3ZnTmF0aXZlVHlwZSk7CkBAIC0xMDI2LDEzICsxMDI0LDcgQEAgc3Vi
IEdlbmVyYXRlSGVhZGVyCiAKICAgICAgICAgcHVzaChAaW50ZXJuYWxIZWFkZXJDb250ZW50LCAi
XG4jaW1wb3J0IDxXZWJDb3JlLyRjbGFzc05hbWUuaD5cblxuIik7CiAgICAgICAgIHB1c2goQGlu
dGVybmFsSGVhZGVyQ29udGVudCwgIiNpbXBvcnQgPFdlYkNvcmUvU1ZHQW5pbWF0ZWRQcm9wZXJ0
eVRlYXJPZmYuaD5cblxuIikgaWYgJHN2Z1Byb3BlcnR5VHlwZTsKLSAgICAgICAgaWYgKCRzdmdM
aXN0UHJvcGVydHlUeXBlKSB7Ci0gICAgICAgICAgICBpZiAoJHN2Z0xpc3RQcm9wZXJ0eVR5cGUg
ZXEgIldlYkNvcmU6OlNWR1N0cmluZ0xpc3QiKSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW50
ZXJuYWxIZWFkZXJDb250ZW50LCAiI2ltcG9ydCA8V2ViQ29yZS9TVkdTdHJpbmdMaXN0UHJvcGVy
dHlUZWFyT2ZmLmg+XG5cbiIpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBwdXNoKEBpbnRlcm5hbEhlYWRlckNvbnRlbnQsICIjaW1wb3J0IDxXZWJDb3JlL1NWR0FuaW1h
dGVkTGlzdFByb3BlcnR5VGVhck9mZi5oPlxuXG4iKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQorICAgICAgICBwdXNoKEBpbnRlcm5hbEhlYWRlckNvbnRlbnQsICIjaW1wb3J0IDxXZWJDb3Jl
L1NWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oPlxuXG4iKSBpZiAkc3ZnTGlzdFByb3Bl
cnR5VHlwZTsKICAgICAgICAgcHVzaChAaW50ZXJuYWxIZWFkZXJDb250ZW50LCAkaW50ZXJmYWNl
QXZhaWxhYmlsaXR5VmVyc2lvbkNoZWNrKSBpZiBsZW5ndGggJGludGVyZmFjZUF2YWlsYWJpbGl0
eVZlcnNpb247CiAKICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJOb2RlIikgewpAQCAt
MTMyNyw3ICsxMzE5LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAg
IH0gZWxzaWYgKENvbnZlcnNpb25OZWVkZWQoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlKSkg
ewogICAgICAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNTVkdUeXBlTmVlZGluZ1Rl
YXJPZmYoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlKSBhbmQgbm90ICRpbXBsQ2xhc3NOYW1l
ID1+IC9MaXN0JC8pIHsKICAgICAgICAgICAgICAgICAgICAgbXkgJGlkbFR5cGVXaXRoTmFtZXNw
YWNlID0gR2V0U1ZHVHlwZVdpdGhOYW1lc3BhY2UoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBl
KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCRpZGxUeXBlV2l0aE5hbWVzcGFjZSBlcSAiV2Vi
Q29yZTo6U1ZHU3RyaW5nTGlzdFByb3BlcnR5VGVhck9mZiIpIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCRpZGxUeXBlV2l0aE5hbWVzcGFjZSA9fiAvU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVh
ck9mZi8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRleHRyYUltcCA9ICJXZWJDb3Jl
OjpHZXRPd25lckVsZW1lbnRGb3JUeXBlPCRpbXBsQ2xhc3NOYW1lV2l0aE5hbWVzcGFjZSwgV2Vi
Q29yZTo6SXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ8JGltcGxDbGFzc05hbWVXaXRoTmFtZXNwYWNl
Pjo6dmFsdWU+Ojpvd25lckVsZW1lbnQoSU1QTCksICI7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAkZ2V0dGVyQ29udGVudEhlYWQgPSAia2l0KFdURjo6Z2V0UHRyKCR7aWRsVHlwZVdpdGhOYW1l
c3BhY2V9OjpjcmVhdGUoJGV4dHJhSW1wJGdldHRlckNvbnRlbnRIZWFkIjsKICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbQkocmV2aXNpb24gNzEyMzIpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtCSh3b3JraW5nIGNvcHkpCkBAIC0yMjMsMTIgKzIyMyw5IEBA
IHN1YiBHZXRTVkdQcm9wZXJ0eVR5cGVzCiAgICAgaWYgKCRzdmdOYXRpdmVUeXBlID1+IC9TVkdQ
cm9wZXJ0eVRlYXJPZmYvKSB7CiAgICAgICAgICRzdmdQcm9wZXJ0eVR5cGUgPSAkc3ZnV3JhcHBl
ZE5hdGl2ZVR5cGU7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IlNWR0FuaW1hdGVkUHJvcGVydHlU
ZWFyT2ZmLmgifSA9IDE7Ci0gICAgfSBlbHNpZiAoJHN2Z05hdGl2ZVR5cGUgPX4gL1NWR0xpc3RQ
cm9wZXJ0eVRlYXJPZmYvKSB7CisgICAgfSBlbHNpZiAoJHN2Z05hdGl2ZVR5cGUgPX4gL1NWR0xp
c3RQcm9wZXJ0eVRlYXJPZmYvIG9yICRzdmdOYXRpdmVUeXBlID1+IC9TVkdTdGF0aWNMaXN0UHJv
cGVydHlUZWFyT2ZmLykgewogICAgICAgICAkc3ZnTGlzdFByb3BlcnR5VHlwZSA9ICRzdmdXcmFw
cGVkTmF0aXZlVHlwZTsKICAgICAgICAgJGltcGxJbmNsdWRlc3siU1ZHQW5pbWF0ZWRMaXN0UHJv
cGVydHlUZWFyT2ZmLmgifSA9IDE7Ci0gICAgfSBlbHNpZiAoJHN2Z05hdGl2ZVR5cGUgPX4gL1NW
R1N0cmluZ0xpc3RQcm9wZXJ0eVRlYXJPZmYvKSB7Ci0gICAgICAgICRzdmdMaXN0UHJvcGVydHlU
eXBlID0gIlNWR1N0cmluZ0xpc3QiOwotICAgICAgICAkaW1wbEluY2x1ZGVzeyIkc3ZnV3JhcHBl
ZE5hdGl2ZVR5cGUuaCJ9ID0gMTsKICAgICB9CiAKICAgICByZXR1cm4gKCRzdmdQcm9wZXJ0eVR5
cGUsICRzdmdMaXN0UHJvcGVydHlUeXBlLCAkc3ZnTmF0aXZlVHlwZSk7CkBAIC0yNzUsOCArMjcy
LDggQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxudGVt
cGxhdGU8dHlwZW5hbWUgUE9EVHlwZT4gY2xhc3MgVjhTVkdQT0RUeXBlV3JhcHBlcjtcbiIpIGlm
ICRwb2RUeXBlOwogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbnRlbXBsYXRlPHR5cGVuYW1l
IFByb3BlcnR5VHlwZT4gY2xhc3MgU1ZHUHJvcGVydHlUZWFyT2ZmO1xuIikgaWYgJHN2Z1Byb3Bl
cnR5VHlwZTsKICAgICBpZiAoJHN2Z0xpc3RQcm9wZXJ0eVR5cGUpIHsKLSAgICAgICAgaWYgKCRz
dmdMaXN0UHJvcGVydHlUeXBlIGVxICJTVkdTdHJpbmdMaXN0IikgewotICAgICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIlxuY2xhc3MgU1ZHU3RyaW5nTGlzdFByb3BlcnR5VGVhck9mZjtc
biIpOworICAgICAgICBpZiAoJHN2Z0xpc3RQcm9wZXJ0eVR5cGUgPX4gL1NWR1N0YXRpY0xpc3RQ
cm9wZXJ0eVRlYXJPZmYvKSB7CisgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG50
ZW1wbGF0ZTx0eXBlbmFtZSBQcm9wZXJ0eVR5cGU+IGNsYXNzIFNWR1N0YXRpY0xpc3RQcm9wZXJ0
eVRlYXJPZmY7XG4iKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICJcbnRlbXBsYXRlPHR5cGVuYW1lIFByb3BlcnR5VHlwZT4gY2xhc3MgU1ZHTGlz
dFByb3BlcnR5VGVhck9mZjtcbiIpOwogICAgICAgICB9CkBAIC03NTIsNyArNzQ5LDcgQEAgRU5E
CiAgICAgICAgIH0KICAgICB9IGVsc2lmICgkc3ZnTmF0aXZlVHlwZSkgewogICAgICAgICBteSAk
c3ZnV3JhcHBlZE5hdGl2ZVR5cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0U1ZHV3JhcHBlZFR5cGVO
ZWVkaW5nVGVhck9mZigkaW1wbENsYXNzTmFtZSk7Ci0gICAgICAgIGlmICgkc3ZnV3JhcHBlZE5h
dGl2ZVR5cGUgPX4gL0xpc3QkLyBvciAkaW1wbENsYXNzTmFtZSBlcSAiU1ZHU3RyaW5nTGlzdCIp
IHsKKyAgICAgICAgaWYgKCRzdmdXcmFwcGVkTmF0aXZlVHlwZSA9fiAvTGlzdCQvKSB7CiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CiAgICAgJHN2Z05hdGl2ZVR5
cGUqIGltcCA9IFY4JHtpbXBsQ2xhc3NOYW1lfTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiBF
TkQKQEAgLTkzMSw4ICs5MjgsNyBAQCBFTkQKICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+
SXNTVkdUeXBlTmVlZGluZ1RlYXJPZmYoJGF0dHJUeXBlKSBhbmQgbm90ICRpbXBsQ2xhc3NOYW1l
ID1+IC9MaXN0JC8pIHsKICAgICAgICAgJGltcGxJbmNsdWRlc3siVjgkYXR0clR5cGUuaCJ9ID0g
MTsKICAgICAgICAgbXkgJHRlYXJPZmZUeXBlID0gJGNvZGVHZW5lcmF0b3ItPkdldFNWR1R5cGVO
ZWVkaW5nVGVhck9mZigkYXR0clR5cGUpOwotICAgICAgICBpZiAoJHRlYXJPZmZUeXBlIGVxICJT
VkdTdHJpbmdMaXN0UHJvcGVydHlUZWFyT2ZmIikgewotICAgICAgICAgICAgJGltcGxJbmNsdWRl
c3siU1ZHU3RyaW5nTGlzdFByb3BlcnR5VGVhck9mZi5oIn0gPSAxOworICAgICAgICBpZiAoJHRl
YXJPZmZUeXBlID1+IC9TVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmLykgewogICAgICAgICAg
ICAgbXkgJGV4dHJhSW1wID0gIkdldE93bmVyRWxlbWVudEZvclR5cGU8JGltcGxDbGFzc05hbWUs
IElzRGVyaXZlZEZyb21TVkdFbGVtZW50PCRpbXBsQ2xhc3NOYW1lPjo6dmFsdWU+Ojpvd25lckVs
ZW1lbnQoaW1wKSwgIjsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAg
cmV0dXJuIHRvVjgoV1RGOjpnZXRQdHIoJHt0ZWFyT2ZmVHlwZX06OmNyZWF0ZSgkZXh0cmFJbXAk
cmVzdWx0KSkpO1xuIik7CiAgICAgICAgIH0gZWxzZSB7CkluZGV4OiBXZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmgJKHJl
dmlzaW9uIDcxMjM2KQorKysgV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZExpc3RQ
cm9wZXJ0eVRlYXJPZmYuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogI2lmIEVO
QUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oIgogI2luY2x1ZGUgIlNW
R0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKKyNpbmNsdWRlICJTVkdTdGF0aWNMaXN0UHJvcGVydHlU
ZWFyT2ZmLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdMaXN0UHJvcGVydHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eS5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdMaXN0UHJvcGVydHkuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MTMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgU1ZHTGlzdFByb3BlcnR5X2gKKyNkZWZpbmUgU1ZH
TGlzdFByb3BlcnR5X2gKKworI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZS5oIgorI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHkuaCIKKyNpbmNsdWRlICJTVkdQcm9w
ZXJ0eVRlYXJPZmYuaCIKKyNpbmNsdWRlICJTVkdQcm9wZXJ0eVRyYWl0cy5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFByb3BlcnR5VHlwZT4KK2NsYXNzIFNW
R0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjsKKwordGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVy
dHlUeXBlPgorY2xhc3MgU1ZHTGlzdFByb3BlcnR5IDogcHVibGljIFNWR1Byb3BlcnR5IHsKK3B1
YmxpYzoKKyAgICB0eXBlZGVmIFNWR0xpc3RQcm9wZXJ0eTxQcm9wZXJ0eVR5cGU+IFNlbGY7CisK
KyAgICB0eXBlZGVmIHR5cGVuYW1lIFNWR1Byb3BlcnR5VHJhaXRzPFByb3BlcnR5VHlwZT46Okxp
c3RJdGVtVHlwZSBMaXN0SXRlbVR5cGU7CisgICAgdHlwZWRlZiBTVkdQcm9wZXJ0eVRlYXJPZmY8
TGlzdEl0ZW1UeXBlPiBMaXN0SXRlbVRlYXJPZmY7CisgICAgdHlwZWRlZiBQYXNzUmVmUHRyPExp
c3RJdGVtVGVhck9mZj4gUGFzc0xpc3RJdGVtVGVhck9mZjsKKyAgICB0eXBlZGVmIFNWR0FuaW1h
dGVkTGlzdFByb3BlcnR5VGVhck9mZjxQcm9wZXJ0eVR5cGU+IEFuaW1hdGVkTGlzdFByb3BlcnR5
VGVhck9mZjsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVh
ck9mZjxQcm9wZXJ0eVR5cGU+OjpMaXN0V3JhcHBlckNhY2hlIExpc3RXcmFwcGVyQ2FjaGU7CisK
KyAgICBib29sIGNhbkFsdGVyTGlzdChFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKKyAgICB7Cisg
ICAgICAgIGlmIChtX3JvbGUgPT0gQW5pbVZhbFJvbGUpIHsKKyAgICAgICAgICAgIGVjID0gTk9f
TU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gU1ZHTGlzdDo6
Y2xlYXIoKQorICAgIHZvaWQgY2xlYXJWYWx1ZXMoUHJvcGVydHlUeXBlJiB2YWx1ZXMsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQorICAgIHsKKyAgICAgICAgaWYgKCFjYW5BbHRlckxpc3QoZWMpKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhbHVlcy5jbGVhcigpOworICAgICAgICBjb21t
aXRDaGFuZ2UoKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyVmFsdWVzQW5kV3JhcHBlcnMoQW5p
bWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmKiBhbmltYXRlZExpc3QsIEV4Y2VwdGlvbkNvZGUmIGVj
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGFuaW1hdGVkTGlzdCk7CisgICAgICAgIGlmICghY2Fu
QWx0ZXJMaXN0KGVjKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBhbmltYXRlZExp
c3QtPmRldGFjaExpc3RXcmFwcGVycygwKTsKKyAgICAgICAgYW5pbWF0ZWRMaXN0LT52YWx1ZXMo
KS5jbGVhcigpOworICAgICAgICBjb21taXRDaGFuZ2UoKTsKKyAgICB9CisKKyAgICAvLyBTVkdM
aXN0OjpudW1iZXJPZkl0ZW1zKCkKKyAgICB1bnNpZ25lZCBudW1iZXJPZkl0ZW1zVmFsdWVzKFBy
b3BlcnR5VHlwZSYgdmFsdWVzKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlcy5z
aXplKCk7CisgICAgfQorCisgICAgdW5zaWduZWQgbnVtYmVyT2ZJdGVtc1ZhbHVlc0FuZFdyYXBw
ZXJzKEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZiogYW5pbWF0ZWRMaXN0KSBjb25zdAorICAg
IHsKKyAgICAgICAgQVNTRVJUKGFuaW1hdGVkTGlzdCk7CisgICAgICAgIHJldHVybiBhbmltYXRl
ZExpc3QtPnZhbHVlcygpLnNpemUoKTsKKyAgICB9CisKKyAgICAvLyBTVkdMaXN0Ojppbml0aWFs
aXplKCkKKyAgICBMaXN0SXRlbVR5cGUgaW5pdGlhbGl6ZVZhbHVlcyhQcm9wZXJ0eVR5cGUmIHZh
bHVlcywgY29uc3QgTGlzdEl0ZW1UeXBlJiBuZXdJdGVtLCBFeGNlcHRpb25Db2RlJiBlYykKKyAg
ICB7CisgICAgICAgIGlmICghY2FuQWx0ZXJMaXN0KGVjKSkKKyAgICAgICAgICAgIHJldHVybiBM
aXN0SXRlbVR5cGUoKTsKKworICAgICAgICAvLyBTcGVjOiBJZiB0aGUgaW5zZXJ0ZWQgaXRlbSBp
cyBhbHJlYWR5IGluIGEgbGlzdCwgaXQgaXMgcmVtb3ZlZCBmcm9tIGl0cyBwcmV2aW91cyBsaXN0
IGJlZm9yZSBpdCBpcyBpbnNlcnRlZCBpbnRvIHRoaXMgbGlzdC4KKyAgICAgICAgcHJvY2Vzc0lu
Y29taW5nTGlzdEl0ZW1WYWx1ZShuZXdJdGVtLCAwKTsKKworICAgICAgICAvLyBTcGVjOiBDbGVh
cnMgYWxsIGV4aXN0aW5nIGN1cnJlbnQgaXRlbXMgZnJvbSB0aGUgbGlzdCBhbmQgcmUtaW5pdGlh
bGl6ZXMgdGhlIGxpc3QgdG8gaG9sZCB0aGUgc2luZ2xlIGl0ZW0gc3BlY2lmaWVkIGJ5IHRoZSBw
YXJhbWV0ZXIuCisgICAgICAgIHZhbHVlcy5jbGVhcigpOworICAgICAgICB2YWx1ZXMuYXBwZW5k
KG5ld0l0ZW0pOworCisgICAgICAgIGNvbW1pdENoYW5nZSgpOworICAgICAgICByZXR1cm4gbmV3
SXRlbTsKKyAgICB9CisKKyAgICBQYXNzTGlzdEl0ZW1UZWFyT2ZmIGluaXRpYWxpemVWYWx1ZXNB
bmRXcmFwcGVycyhBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYqIGFuaW1hdGVkTGlzdCwgUGFz
c0xpc3RJdGVtVGVhck9mZiBwYXNzTmV3SXRlbSwgRXhjZXB0aW9uQ29kZSYgZWMpCisgICAgewor
ICAgICAgICBBU1NFUlQoYW5pbWF0ZWRMaXN0KTsKKyAgICAgICAgaWYgKCFjYW5BbHRlckxpc3Qo
ZWMpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgLy8gTm90IHNwZWNpZmllZCwg
YnV0IEZGL09wZXJhIGRvIGl0IHRoaXMgd2F5LCBhbmQgaXQncyBqdXN0IHNhbmUuCisgICAgICAg
IGlmICghcGFzc05ld0l0ZW0pIHsKKyAgICAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7
CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIFByb3BlcnR5VHlw
ZSYgdmFsdWVzID0gYW5pbWF0ZWRMaXN0LT52YWx1ZXMoKTsKKyAgICAgICAgTGlzdFdyYXBwZXJD
YWNoZSYgd3JhcHBlcnMgPSBhbmltYXRlZExpc3QtPndyYXBwZXJzKCk7CisKKyAgICAgICAgUmVm
UHRyPExpc3RJdGVtVGVhck9mZj4gbmV3SXRlbSA9IHBhc3NOZXdJdGVtOworICAgICAgICBBU1NF
UlQodmFsdWVzLnNpemUoKSA9PSB3cmFwcGVycy5zaXplKCkpOworCisgICAgICAgIC8vIFNwZWM6
IElmIHRoZSBpbnNlcnRlZCBpdGVtIGlzIGFscmVhZHkgaW4gYSBsaXN0LCBpdCBpcyByZW1vdmVk
IGZyb20gaXRzIHByZXZpb3VzIGxpc3QgYmVmb3JlIGl0IGlzIGluc2VydGVkIGludG8gdGhpcyBs
aXN0LgorICAgICAgICBwcm9jZXNzSW5jb21pbmdMaXN0SXRlbVdyYXBwZXIobmV3SXRlbSwgMCk7
CisKKyAgICAgICAgLy8gU3BlYzogQ2xlYXJzIGFsbCBleGlzdGluZyBjdXJyZW50IGl0ZW1zIGZy
b20gdGhlIGxpc3QgYW5kIHJlLWluaXRpYWxpemVzIHRoZSBsaXN0IHRvIGhvbGQgdGhlIHNpbmds
ZSBpdGVtIHNwZWNpZmllZCBieSB0aGUgcGFyYW1ldGVyLgorICAgICAgICBhbmltYXRlZExpc3Qt
PmRldGFjaExpc3RXcmFwcGVycygwKTsKKyAgICAgICAgdmFsdWVzLmNsZWFyKCk7CisKKyAgICAg
ICAgdmFsdWVzLmFwcGVuZChuZXdJdGVtLT5wcm9wZXJ0eVJlZmVyZW5jZSgpKTsKKyAgICAgICAg
d3JhcHBlcnMuYXBwZW5kKG5ld0l0ZW0pOworCisgICAgICAgIGNvbW1pdENoYW5nZSgpOworICAg
ICAgICByZXR1cm4gbmV3SXRlbS5yZWxlYXNlKCk7CisgICAgfQorCisgICAgLy8gU1ZHTGlzdDo6
Z2V0SXRlbSgpCisgICAgYm9vbCBjYW5HZXRJdGVtKFByb3BlcnR5VHlwZSYgdmFsdWVzLCB1bnNp
Z25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCisgICAgeworICAgICAgICBpZiAoaW5kZXgg
Pj0gdmFsdWVzLnNpemUoKSkgeworICAgICAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIExpc3RJdGVtVHlwZSBnZXRJdGVtVmFsdWVzKFByb3BlcnR5VHlwZSYg
dmFsdWVzLCB1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCisgICAgeworICAgICAg
ICBpZiAoIWNhbkdldEl0ZW0odmFsdWVzLCBpbmRleCwgZWMpKSAKKyAgICAgICAgICAgIHJldHVy
biBMaXN0SXRlbVR5cGUoKTsKKworICAgICAgICAvLyBTcGVjOiBSZXR1cm5zIHRoZSBzcGVjaWZp
ZWQgaXRlbSBmcm9tIHRoZSBsaXN0LiBUaGUgcmV0dXJuZWQgaXRlbSBpcyB0aGUgaXRlbSBpdHNl
bGYgYW5kIG5vdCBhIGNvcHkuCisgICAgICAgIHJldHVybiB2YWx1ZXMuYXQoaW5kZXgpOworICAg
IH0KKworICAgIFBhc3NMaXN0SXRlbVRlYXJPZmYgZ2V0SXRlbVZhbHVlc0FuZFdyYXBwZXJzKEFu
aW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZiogYW5pbWF0ZWRMaXN0LCB1bnNpZ25lZCBpbmRleCwg
RXhjZXB0aW9uQ29kZSYgZWMpCisgICAgeworICAgICAgICBBU1NFUlQoYW5pbWF0ZWRMaXN0KTsK
KyAgICAgICAgUHJvcGVydHlUeXBlJiB2YWx1ZXMgPSBhbmltYXRlZExpc3QtPnZhbHVlcygpOwor
ICAgICAgICBpZiAoIWNhbkdldEl0ZW0odmFsdWVzLCBpbmRleCwgZWMpKQorICAgICAgICAgICAg
cmV0dXJuIDA7CisKKyAgICAgICAgTGlzdFdyYXBwZXJDYWNoZSYgd3JhcHBlcnMgPSBhbmltYXRl
ZExpc3QtPndyYXBwZXJzKCk7CisKKyAgICAgICAgLy8gU3BlYzogUmV0dXJucyB0aGUgc3BlY2lm
aWVkIGl0ZW0gZnJvbSB0aGUgbGlzdC4gVGhlIHJldHVybmVkIGl0ZW0gaXMgdGhlIGl0ZW0gaXRz
ZWxmIGFuZCBub3QgYSBjb3B5LgorICAgICAgICAvLyBBbnkgY2hhbmdlcyBtYWRlIHRvIHRoZSBp
dGVtIGFyZSBpbW1lZGlhdGVseSByZWZsZWN0ZWQgaW4gdGhlIGxpc3QuCisgICAgICAgIEFTU0VS
VCh2YWx1ZXMuc2l6ZSgpID09IHdyYXBwZXJzLnNpemUoKSk7CisgICAgICAgIFJlZlB0cjxMaXN0
SXRlbVRlYXJPZmY+IHdyYXBwZXIgPSB3cmFwcGVycy5hdChpbmRleCk7CisgICAgICAgIGlmICgh
d3JhcHBlcikgeworICAgICAgICAgICAgLy8gQ3JlYXRlIG5ldyB3cmFwcGVyLCB3aGljaCBpcyBh
bGxvd2VkIHRvIGRpcmVjdGx5IG1vZGlmeSB0aGUgaXRlbSBpbiB0aGUgbGlzdCwgdy9vIGNvcHlp
bmcgYW5kIGNhY2hlIHRoZSB3cmFwcGVyIGluIG91ciBtYXAuCisgICAgICAgICAgICAvLyBJdCBp
cyBhbHNvIGFzc29jaWF0ZWQgd2l0aCBvdXIgYW5pbWF0ZWQgcHJvcGVydHksIHNvIGl0IGNhbiBu
b3RpZnkgdGhlIFNWRyBFbGVtZW50IHdoaWNoIGhvbGRzIHRoZSBTVkdBbmltYXRlZCpMaXN0Cisg
ICAgICAgICAgICAvLyB0aGF0IGl0IGhhcyBiZWVuIG1vZGlmaWVkIChhbmQgdGh1cyBjYW4gY2Fs
bCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lKSkuCisgICAgICAg
ICAgICB3cmFwcGVyID0gTGlzdEl0ZW1UZWFyT2ZmOjpjcmVhdGUoYW5pbWF0ZWRMaXN0LCBVbmRl
ZmluZWRSb2xlLCB2YWx1ZXMuYXQoaW5kZXgpKTsKKyAgICAgICAgICAgIHdyYXBwZXJzLmF0KGlu
ZGV4KSA9IHdyYXBwZXI7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gd3JhcHBlci5yZWxl
YXNlKCk7CisgICAgfQorCisgICAgLy8gU1ZHTGlzdDo6aW5zZXJ0SXRlbUJlZm9yZSgpCisgICAg
TGlzdEl0ZW1UeXBlIGluc2VydEl0ZW1CZWZvcmVWYWx1ZXMoUHJvcGVydHlUeXBlJiB2YWx1ZXMs
IGNvbnN0IExpc3RJdGVtVHlwZSYgbmV3SXRlbSwgdW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQorICAgIHsKKyAgICAgICAgaWYgKCFjYW5BbHRlckxpc3QoZWMpKQorICAgICAgICAg
ICAgcmV0dXJuIExpc3RJdGVtVHlwZSgpOworCisgICAgICAgIC8vIFNwZWM6IElmIHRoZSBpbmRl
eCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gbnVtYmVyT2ZJdGVtcywgdGhlbiB0aGUgbmV3
IGl0ZW0gaXMgYXBwZW5kZWQgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdC4KKyAgICAgICAgaWYgKGlu
ZGV4ID4gdmFsdWVzLnNpemUoKSkKKyAgICAgICAgICAgIGluZGV4ID0gdmFsdWVzLnNpemUoKTsK
KworICAgICAgICAvLyBTcGVjOiBJZiBuZXdJdGVtIGlzIGFscmVhZHkgaW4gYSBsaXN0LCBpdCBp
cyByZW1vdmVkIGZyb20gaXRzIHByZXZpb3VzIGxpc3QgYmVmb3JlIGl0IGlzIGluc2VydGVkIGlu
dG8gdGhpcyBsaXN0LgorICAgICAgICBwcm9jZXNzSW5jb21pbmdMaXN0SXRlbVZhbHVlKG5ld0l0
ZW0sICZpbmRleCk7CisKKyAgICAgICAgLy8gU3BlYzogSW5zZXJ0cyBhIG5ldyBpdGVtIGludG8g
dGhlIGxpc3QgYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbi4gVGhlIGluZGV4IG9mIHRoZSBpdGVt
IGJlZm9yZSB3aGljaCB0aGUgbmV3IGl0ZW0gaXMgdG8gYmUKKyAgICAgICAgLy8gaW5zZXJ0ZWQu
IFRoZSBmaXJzdCBpdGVtIGlzIG51bWJlciAwLiBJZiB0aGUgaW5kZXggaXMgZXF1YWwgdG8gMCwg
dGhlbiB0aGUgbmV3IGl0ZW0gaXMgaW5zZXJ0ZWQgYXQgdGhlIGZyb250IG9mIHRoZSBsaXN0Lgor
ICAgICAgICB2YWx1ZXMuaW5zZXJ0KGluZGV4LCBuZXdJdGVtKTsKKworICAgICAgICBjb21taXRD
aGFuZ2UoKTsKKyAgICAgICAgcmV0dXJuIG5ld0l0ZW07CisgICAgfQorCisgICAgUGFzc0xpc3RJ
dGVtVGVhck9mZiBpbnNlcnRJdGVtQmVmb3JlVmFsdWVzQW5kV3JhcHBlcnMoQW5pbWF0ZWRMaXN0
UHJvcGVydHlUZWFyT2ZmKiBhbmltYXRlZExpc3QsIFBhc3NMaXN0SXRlbVRlYXJPZmYgcGFzc05l
d0l0ZW0sIHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKKyAgICB7CisgICAgICAg
IEFTU0VSVChhbmltYXRlZExpc3QpOworICAgICAgICBpZiAoIWNhbkFsdGVyTGlzdChlYykpCisg
ICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICAvLyBOb3Qgc3BlY2lmaWVkLCBidXQgRkYv
T3BlcmEgZG8gaXQgdGhpcyB3YXksIGFuZCBpdCdzIGp1c3Qgc2FuZS4KKyAgICAgICAgaWYgKCFw
YXNzTmV3SXRlbSkgeworICAgICAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAg
ICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgUHJvcGVydHlUeXBlJiB2YWx1
ZXMgPSBhbmltYXRlZExpc3QtPnZhbHVlcygpOworICAgICAgICBMaXN0V3JhcHBlckNhY2hlJiB3
cmFwcGVycyA9IGFuaW1hdGVkTGlzdC0+d3JhcHBlcnMoKTsKKworICAgICAgICAvLyBTcGVjOiBJ
ZiB0aGUgaW5kZXggaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIG51bWJlck9mSXRlbXMsIHRo
ZW4gdGhlIG5ldyBpdGVtIGlzIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QuCisgICAg
ICAgIGlmIChpbmRleCA+IHZhbHVlcy5zaXplKCkpCisgICAgICAgICAgICAgaW5kZXggPSB2YWx1
ZXMuc2l6ZSgpOworCisgICAgICAgIFJlZlB0cjxMaXN0SXRlbVRlYXJPZmY+IG5ld0l0ZW0gPSBw
YXNzTmV3SXRlbTsKKyAgICAgICAgQVNTRVJUKHZhbHVlcy5zaXplKCkgPT0gd3JhcHBlcnMuc2l6
ZSgpKTsKKworICAgICAgICAvLyBTcGVjOiBJZiBuZXdJdGVtIGlzIGFscmVhZHkgaW4gYSBsaXN0
LCBpdCBpcyByZW1vdmVkIGZyb20gaXRzIHByZXZpb3VzIGxpc3QgYmVmb3JlIGl0IGlzIGluc2Vy
dGVkIGludG8gdGhpcyBsaXN0LgorICAgICAgICBwcm9jZXNzSW5jb21pbmdMaXN0SXRlbVdyYXBw
ZXIobmV3SXRlbSwgJmluZGV4KTsKKworICAgICAgICAvLyBTcGVjOiBJbnNlcnRzIGEgbmV3IGl0
ZW0gaW50byB0aGUgbGlzdCBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLiBUaGUgaW5kZXggb2Yg
dGhlIGl0ZW0gYmVmb3JlIHdoaWNoIHRoZSBuZXcgaXRlbSBpcyB0byBiZQorICAgICAgICAvLyBp
bnNlcnRlZC4gVGhlIGZpcnN0IGl0ZW0gaXMgbnVtYmVyIDAuIElmIHRoZSBpbmRleCBpcyBlcXVh
bCB0byAwLCB0aGVuIHRoZSBuZXcgaXRlbSBpcyBpbnNlcnRlZCBhdCB0aGUgZnJvbnQgb2YgdGhl
IGxpc3QuCisgICAgICAgIHZhbHVlcy5pbnNlcnQoaW5kZXgsIG5ld0l0ZW0tPnByb3BlcnR5UmVm
ZXJlbmNlKCkpOworCisgICAgICAgIC8vIFN0b3JlIG5ldyB3cmFwcGVyIGF0IHBvc2l0aW9uICdp
bmRleCcsIGNoYW5nZSBpdHMgdW5kZXJseWluZyB2YWx1ZSwgc28gbXV0YXRpb25zIG9mIG5ld0l0
ZW0sIGRpcmVjdGx5IGFmZmVjdCB0aGUgaXRlbSBpbiB0aGUgbGlzdC4KKyAgICAgICAgd3JhcHBl
cnMuaW5zZXJ0KGluZGV4LCBuZXdJdGVtKTsKKworICAgICAgICBjb21taXRDaGFuZ2UoKTsKKyAg
ICAgICAgcmV0dXJuIG5ld0l0ZW0ucmVsZWFzZSgpOworICAgIH0KKworICAgIC8vIFNWR0xpc3Q6
OnJlcGxhY2VJdGVtKCkKKyAgICBib29sIGNhblJlcGxhY2VJdGVtKFByb3BlcnR5VHlwZSYgdmFs
dWVzLCB1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCisgICAgeworICAgICAgICBp
ZiAoIWNhbkFsdGVyTGlzdChlYykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAg
ICAgaWYgKGluZGV4ID49IHZhbHVlcy5zaXplKCkpIHsKKyAgICAgICAgICAgIGVjID0gSU5ERVhf
U0laRV9FUlI7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBMaXN0SXRlbVR5cGUgcmVwbGFjZUl0ZW1WYWx1
ZXMoUHJvcGVydHlUeXBlJiB2YWx1ZXMsIGNvbnN0IExpc3RJdGVtVHlwZSYgbmV3SXRlbSwgdW5z
aWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQorICAgIHsKKyAgICAgICAgaWYgKCFjYW5S
ZXBsYWNlSXRlbSh2YWx1ZXMsIGluZGV4LCBlYykpCisgICAgICAgICAgICByZXR1cm4gTGlzdEl0
ZW1UeXBlKCk7CisKKyAgICAgICAgLy8gU3BlYzogSWYgbmV3SXRlbSBpcyBhbHJlYWR5IGluIGEg
bGlzdCwgaXQgaXMgcmVtb3ZlZCBmcm9tIGl0cyBwcmV2aW91cyBsaXN0IGJlZm9yZSBpdCBpcyBp
bnNlcnRlZCBpbnRvIHRoaXMgbGlzdC4KKyAgICAgICAgLy8gU3BlYzogSWYgdGhlIGl0ZW0gaXMg
YWxyZWFkeSBpbiB0aGlzIGxpc3QsIG5vdGUgdGhhdCB0aGUgaW5kZXggb2YgdGhlIGl0ZW0gdG8g
cmVwbGFjZSBpcyBiZWZvcmUgdGhlIHJlbW92YWwgb2YgdGhlIGl0ZW0uCisgICAgICAgIHByb2Nl
c3NJbmNvbWluZ0xpc3RJdGVtVmFsdWUobmV3SXRlbSwgJmluZGV4KTsKKworICAgICAgICAvLyBV
cGRhdGUgdGhlIHZhbHVlIGF0IHRoZSBkZXNpcmVkIHBvc2l0aW9uICdpbmRleCcuIAorICAgICAg
ICB2YWx1ZXMuYXQoaW5kZXgpID0gbmV3SXRlbTsKKworICAgICAgICBjb21taXRDaGFuZ2UoKTsK
KyAgICAgICAgcmV0dXJuIG5ld0l0ZW07CisgICAgfQorCisgICAgUGFzc0xpc3RJdGVtVGVhck9m
ZiByZXBsYWNlSXRlbVZhbHVlc0FuZFdyYXBwZXJzKEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9m
ZiogYW5pbWF0ZWRMaXN0LCBQYXNzTGlzdEl0ZW1UZWFyT2ZmIHBhc3NOZXdJdGVtLCB1bnNpZ25l
ZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCisgICAgeworICAgICAgICBBU1NFUlQoYW5pbWF0
ZWRMaXN0KTsKKyAgICAgICAgUHJvcGVydHlUeXBlJiB2YWx1ZXMgPSBhbmltYXRlZExpc3QtPnZh
bHVlcygpOworICAgICAgICBpZiAoIWNhblJlcGxhY2VJdGVtKHZhbHVlcywgaW5kZXgsIGVjKSkK
KyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIC8vIE5vdCBzcGVjaWZpZWQsIGJ1dCBG
Ri9PcGVyYSBkbyBpdCB0aGlzIHdheSwgYW5kIGl0J3MganVzdCBzYW5lLgorICAgICAgICBpZiAo
IXBhc3NOZXdJdGVtKSB7CisgICAgICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBMaXN0V3JhcHBlckNhY2hl
JiB3cmFwcGVycyA9IGFuaW1hdGVkTGlzdC0+d3JhcHBlcnMoKTsKKyAgICAgICAgQVNTRVJUKHZh
bHVlcy5zaXplKCkgPT0gd3JhcHBlcnMuc2l6ZSgpKTsKKyAgICAgICAgUmVmUHRyPExpc3RJdGVt
VGVhck9mZj4gbmV3SXRlbSA9IHBhc3NOZXdJdGVtOworCisgICAgICAgIC8vIFNwZWM6IElmIG5l
d0l0ZW0gaXMgYWxyZWFkeSBpbiBhIGxpc3QsIGl0IGlzIHJlbW92ZWQgZnJvbSBpdHMgcHJldmlv
dXMgbGlzdCBiZWZvcmUgaXQgaXMgaW5zZXJ0ZWQgaW50byB0aGlzIGxpc3QuCisgICAgICAgIC8v
IFNwZWM6IElmIHRoZSBpdGVtIGlzIGFscmVhZHkgaW4gdGhpcyBsaXN0LCBub3RlIHRoYXQgdGhl
IGluZGV4IG9mIHRoZSBpdGVtIHRvIHJlcGxhY2UgaXMgYmVmb3JlIHRoZSByZW1vdmFsIG9mIHRo
ZSBpdGVtLgorICAgICAgICBwcm9jZXNzSW5jb21pbmdMaXN0SXRlbVdyYXBwZXIobmV3SXRlbSwg
JmluZGV4KTsKKworICAgICAgICAvLyBEZXRhY2ggdGhlIGV4aXN0aW5nIHdyYXBwZXIuCisgICAg
ICAgIFJlZlB0cjxMaXN0SXRlbVRlYXJPZmY+JiBvbGRJdGVtID0gd3JhcHBlcnMuYXQoaW5kZXgp
OworICAgICAgICBpZiAob2xkSXRlbSkKKyAgICAgICAgICAgIG9sZEl0ZW0tPmRldGFjaFdyYXBw
ZXIoKTsKKworICAgICAgICAvLyBVcGRhdGUgdGhlIHZhbHVlIGFuZCB0aGUgd3JhcHBlciBhdCB0
aGUgZGVzaXJlZCBwb3NpdGlvbiAnaW5kZXgnLiAKKyAgICAgICAgdmFsdWVzLmF0KGluZGV4KSA9
IG5ld0l0ZW0tPnByb3BlcnR5UmVmZXJlbmNlKCk7CisgICAgICAgIHdyYXBwZXJzLmF0KGluZGV4
KSA9IG5ld0l0ZW07CisKKyAgICAgICAgY29tbWl0Q2hhbmdlKCk7CisgICAgICAgIHJldHVybiBu
ZXdJdGVtLnJlbGVhc2UoKTsKKyAgICB9CisKKyAgICAvLyBTVkdMaXN0OjpyZW1vdmVJdGVtKCkK
KyAgICBib29sIGNhblJlbW92ZUl0ZW0oUHJvcGVydHlUeXBlJiB2YWx1ZXMsIHVuc2lnbmVkIGlu
ZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKKyAgICB7CisgICAgICAgIGlmICghY2FuQWx0ZXJMaXN0
KGVjKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAoaW5kZXggPj0g
dmFsdWVzLnNpemUoKSkgeworICAgICAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIExpc3RJdGVtVHlwZSByZW1vdmVJdGVtVmFsdWVzKFByb3BlcnR5VHlwZSYg
dmFsdWVzLCB1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCisgICAgeworICAgICAg
ICBpZiAoIWNhblJlbW92ZUl0ZW0odmFsdWVzLCBpbmRleCwgZWMpKQorICAgICAgICAgICAgcmV0
dXJuIExpc3RJdGVtVHlwZSgpOworCisgICAgICAgIExpc3RJdGVtVHlwZSBvbGRJdGVtID0gdmFs
dWVzLmF0KGluZGV4KTsKKyAgICAgICAgdmFsdWVzLnJlbW92ZShpbmRleCk7CisKKyAgICAgICAg
Y29tbWl0Q2hhbmdlKCk7CisgICAgICAgIHJldHVybiBvbGRJdGVtOworICAgIH0KKworICAgIFBh
c3NMaXN0SXRlbVRlYXJPZmYgcmVtb3ZlSXRlbVZhbHVlc0FuZFdyYXBwZXJzKEFuaW1hdGVkTGlz
dFByb3BlcnR5VGVhck9mZiogYW5pbWF0ZWRMaXN0LCB1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9u
Q29kZSYgZWMpCisgICAgeworICAgICAgICBBU1NFUlQoYW5pbWF0ZWRMaXN0KTsKKyAgICAgICAg
UHJvcGVydHlUeXBlJiB2YWx1ZXMgPSBhbmltYXRlZExpc3QtPnZhbHVlcygpOworICAgICAgICBp
ZiAoIWNhblJlbW92ZUl0ZW0odmFsdWVzLCBpbmRleCwgZWMpKQorICAgICAgICAgICAgcmV0dXJu
IDA7CisKKyAgICAgICAgTGlzdFdyYXBwZXJDYWNoZSYgd3JhcHBlcnMgPSBhbmltYXRlZExpc3Qt
PndyYXBwZXJzKCk7CisgICAgICAgIEFTU0VSVCh2YWx1ZXMuc2l6ZSgpID09IHdyYXBwZXJzLnNp
emUoKSk7CisKKyAgICAgICAgLy8gRGV0YWNoIHRoZSBleGlzdGluZyB3cmFwcGVyLgorICAgICAg
ICBSZWZQdHI8TGlzdEl0ZW1UZWFyT2ZmPiYgb2xkSXRlbSA9IHdyYXBwZXJzLmF0KGluZGV4KTsK
KyAgICAgICAgaWYgKG9sZEl0ZW0pIHsKKyAgICAgICAgICAgIG9sZEl0ZW0tPmRldGFjaFdyYXBw
ZXIoKTsKKyAgICAgICAgICAgIHdyYXBwZXJzLnJlbW92ZShpbmRleCk7CisgICAgICAgIH0KKwor
ICAgICAgICB2YWx1ZXMucmVtb3ZlKGluZGV4KTsKKworICAgICAgICBjb21taXRDaGFuZ2UoKTsK
KyAgICAgICAgcmV0dXJuIG9sZEl0ZW0ucmVsZWFzZSgpOworICAgIH0KKworICAgIC8vIFNWR0xp
c3Q6OmFwcGVuZEl0ZW0oKQorICAgIExpc3RJdGVtVHlwZSBhcHBlbmRJdGVtVmFsdWVzKFByb3Bl
cnR5VHlwZSYgdmFsdWVzLCBjb25zdCBMaXN0SXRlbVR5cGUmIG5ld0l0ZW0sIEV4Y2VwdGlvbkNv
ZGUmIGVjKQorICAgIHsKKyAgICAgICAgaWYgKCFjYW5BbHRlckxpc3QoZWMpKQorICAgICAgICAg
ICAgcmV0dXJuIExpc3RJdGVtVHlwZSgpOworCisgICAgICAgIC8vIFNwZWM6IElmIG5ld0l0ZW0g
aXMgYWxyZWFkeSBpbiBhIGxpc3QsIGl0IGlzIHJlbW92ZWQgZnJvbSBpdHMgcHJldmlvdXMgbGlz
dCBiZWZvcmUgaXQgaXMgaW5zZXJ0ZWQgaW50byB0aGlzIGxpc3QuCisgICAgICAgIHByb2Nlc3NJ
bmNvbWluZ0xpc3RJdGVtVmFsdWUobmV3SXRlbSwgMCk7CisKKyAgICAgICAgLy8gQXBwZW5kIHRo
ZSB2YWx1ZSBhdCB0aGUgZW5kIG9mIHRoZSBsaXN0LgorICAgICAgICB2YWx1ZXMuYXBwZW5kKG5l
d0l0ZW0pOworCisgICAgICAgIGNvbW1pdENoYW5nZSgpOworICAgICAgICByZXR1cm4gbmV3SXRl
bTsKKyAgICB9CisKKyAgICBQYXNzTGlzdEl0ZW1UZWFyT2ZmIGFwcGVuZEl0ZW1WYWx1ZXNBbmRX
cmFwcGVycyhBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYqIGFuaW1hdGVkTGlzdCwgUGFzc0xp
c3RJdGVtVGVhck9mZiBwYXNzTmV3SXRlbSwgRXhjZXB0aW9uQ29kZSYgZWMpCisgICAgeworICAg
ICAgICBBU1NFUlQoYW5pbWF0ZWRMaXN0KTsKKyAgICAgICAgaWYgKCFjYW5BbHRlckxpc3QoZWMp
KQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgLy8gTm90IHNwZWNpZmllZCwgYnV0
IEZGL09wZXJhIGRvIGl0IHRoaXMgd2F5LCBhbmQgaXQncyBqdXN0IHNhbmUuCisgICAgICAgIGlm
ICghcGFzc05ld0l0ZW0pIHsKKyAgICAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7Cisg
ICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIFByb3BlcnR5VHlwZSYg
dmFsdWVzID0gYW5pbWF0ZWRMaXN0LT52YWx1ZXMoKTsKKyAgICAgICAgTGlzdFdyYXBwZXJDYWNo
ZSYgd3JhcHBlcnMgPSBhbmltYXRlZExpc3QtPndyYXBwZXJzKCk7CisKKyAgICAgICAgUmVmUHRy
PExpc3RJdGVtVGVhck9mZj4gbmV3SXRlbSA9IHBhc3NOZXdJdGVtOworICAgICAgICBBU1NFUlQo
dmFsdWVzLnNpemUoKSA9PSB3cmFwcGVycy5zaXplKCkpOworCisgICAgICAgIC8vIFNwZWM6IElm
IG5ld0l0ZW0gaXMgYWxyZWFkeSBpbiBhIGxpc3QsIGl0IGlzIHJlbW92ZWQgZnJvbSBpdHMgcHJl
dmlvdXMgbGlzdCBiZWZvcmUgaXQgaXMgaW5zZXJ0ZWQgaW50byB0aGlzIGxpc3QuCisgICAgICAg
IHByb2Nlc3NJbmNvbWluZ0xpc3RJdGVtV3JhcHBlcihuZXdJdGVtLCAwKTsKKworICAgICAgICAv
LyBBcHBlbmQgdGhlIHZhbHVlIGFuZCB3cmFwcGVyIGF0IHRoZSBlbmQgb2YgdGhlIGxpc3QuCisg
ICAgICAgIHZhbHVlcy5hcHBlbmQobmV3SXRlbS0+cHJvcGVydHlSZWZlcmVuY2UoKSk7CisgICAg
ICAgIHdyYXBwZXJzLmFwcGVuZChuZXdJdGVtKTsKKworICAgICAgICBjb21taXRDaGFuZ2UoKTsK
KyAgICAgICAgcmV0dXJuIG5ld0l0ZW0ucmVsZWFzZSgpOworICAgIH0KKworcHJvdGVjdGVkOgor
ICAgIFNWR0xpc3RQcm9wZXJ0eShTVkdQcm9wZXJ0eVJvbGUgcm9sZSkKKyAgICAgICAgOiBtX3Jv
bGUocm9sZSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGNvbW1pdENoYW5nZSgp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0luY29taW5nTGlzdEl0ZW1WYWx1ZShjb25z
dCBMaXN0SXRlbVR5cGUmIG5ld0l0ZW0sIHVuc2lnbmVkKiBpbmRleFRvTW9kaWZ5KSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHByb2Nlc3NJbmNvbWluZ0xpc3RJdGVtV3JhcHBlcihSZWZQdHI8TGlz
dEl0ZW1UZWFyT2ZmPiYgbmV3SXRlbSwgdW5zaWduZWQqIGluZGV4VG9Nb2RpZnkpID0gMDsKKwor
cHJpdmF0ZToKKyAgICBTVkdQcm9wZXJ0eVJvbGUgbV9yb2xlOworfTsKKworfQorCisjZW5kaWYg
Ly8gRU5BQkxFKFNWRykKKyNlbmRpZiAvLyBTVkdMaXN0UHJvcGVydHlfaApJbmRleDogV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHlUZWFyT2ZmLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHlUZWFyT2ZmLmgJKHJldmlzaW9u
IDcxMjQwKQorKysgV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHlUZWFyT2Zm
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDIwICsyMSwxNCBAQAogI2RlZmluZSBTVkdMaXN0UHJv
cGVydHlUZWFyT2ZmX2gKIAogI2lmIEVOQUJMRShTVkcpCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZS5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHkuaCIKLSNpbmNsdWRlICJTVkdQcm9w
ZXJ0eVRlYXJPZmYuaCIKLSNpbmNsdWRlICJTVkdQcm9wZXJ0eVRyYWl0cy5oIgorI2luY2x1ZGUg
IlNWR0xpc3RQcm9wZXJ0eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFByb3BlcnR5VHlwZT4KLWNsYXNzIFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9m
ZjsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlPgotY2xhc3MgU1ZHTGlzdFByb3Bl
cnR5VGVhck9mZiA6IHB1YmxpYyBTVkdQcm9wZXJ0eSB7CitjbGFzcyBTVkdMaXN0UHJvcGVydHlU
ZWFyT2ZmIDogcHVibGljIFNWR0xpc3RQcm9wZXJ0eTxQcm9wZXJ0eVR5cGU+IHsKIHB1YmxpYzoK
LSAgICB0eXBlZGVmIFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY8UHJvcGVydHlUeXBlPiBTZWxmOwor
ICAgIHR5cGVkZWYgU1ZHTGlzdFByb3BlcnR5PFByb3BlcnR5VHlwZT4gQmFzZTsKIAogICAgIHR5
cGVkZWYgdHlwZW5hbWUgU1ZHUHJvcGVydHlUcmFpdHM8UHJvcGVydHlUeXBlPjo6TGlzdEl0ZW1U
eXBlIExpc3RJdGVtVHlwZTsKICAgICB0eXBlZGVmIFNWR1Byb3BlcnR5VGVhck9mZjxMaXN0SXRl
bVR5cGU+IExpc3RJdGVtVGVhck9mZjsKQEAgLTQyLDEwICszNiwxMCBAQCBwdWJsaWM6CiAgICAg
dHlwZWRlZiBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8UHJvcGVydHlUeXBlPiBBbmlt
YXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY7CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBTVkdBbmltYXRl
ZExpc3RQcm9wZXJ0eVRlYXJPZmY8UHJvcGVydHlUeXBlPjo6TGlzdFdyYXBwZXJDYWNoZSBMaXN0
V3JhcHBlckNhY2hlOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2VsZj4gY3JlYXRlKEFuaW1h
dGVkTGlzdFByb3BlcnR5VGVhck9mZiogYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xl
IHJvbGUpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHTGlzdFByb3BlcnR5VGVhck9mZjxQcm9w
ZXJ0eVR5cGU+ID4gY3JlYXRlKEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZiogYW5pbWF0ZWRQ
cm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUpCiAgICAgewogICAgICAgICBBU1NFUlQoYW5p
bWF0ZWRQcm9wZXJ0eSk7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VsZihhbmltYXRl
ZFByb3BlcnR5LCByb2xlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHTGlzdFBy
b3BlcnR5VGVhck9mZjxQcm9wZXJ0eVR5cGU+KGFuaW1hdGVkUHJvcGVydHksIHJvbGUpKTsKICAg
ICB9CiAKICAgICBpbnQgcmVtb3ZlSXRlbUZyb21MaXN0KExpc3RJdGVtVGVhck9mZiogcmVtb3Zl
SXRlbSwgYm9vbCBzaG91bGRTeW5jaHJvbml6ZVdyYXBwZXJzKQpAQCAtNzcsMjI0ICs3MSw1MiBA
QCBwdWJsaWM6CiAgICAgLy8gU1ZHTGlzdCBBUEkKICAgICB2b2lkIGNsZWFyKEV4Y2VwdGlvbkNv
ZGUmIGVjKQogICAgIHsKLSAgICAgICAgaWYgKG1fcm9sZSA9PSBBbmltVmFsUm9sZSkgewotICAg
ICAgICAgICAgZWMgPSBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBtX2FuaW1hdGVkUHJvcGVydHktPmRldGFjaExp
c3RXcmFwcGVycygwKTsKLSAgICAgICAgbV9hbmltYXRlZFByb3BlcnR5LT52YWx1ZXMoKS5jbGVh
cigpOworICAgICAgICBCYXNlOjpjbGVhclZhbHVlc0FuZFdyYXBwZXJzKG1fYW5pbWF0ZWRQcm9w
ZXJ0eS5nZXQoKSwgZWMpOwogICAgIH0KIAogICAgIHVuc2lnbmVkIG51bWJlck9mSXRlbXMoKSBj
b25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYW5pbWF0ZWRQcm9wZXJ0eS0+dmFsdWVzKCku
c2l6ZSgpOworICAgICAgICByZXR1cm4gQmFzZTo6bnVtYmVyT2ZJdGVtc1ZhbHVlc0FuZFdyYXBw
ZXJzKG1fYW5pbWF0ZWRQcm9wZXJ0eS5nZXQoKSk7CiAgICAgfQogCiAgICAgUGFzc0xpc3RJdGVt
VGVhck9mZiBpbml0aWFsaXplKFBhc3NMaXN0SXRlbVRlYXJPZmYgcGFzc05ld0l0ZW0sIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogICAgIHsKLSAgICAgICAgaWYgKG1fcm9sZSA9PSBBbmltVmFsUm9sZSkg
ewotICAgICAgICAgICAgZWMgPSBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI7Ci0gICAgICAg
ICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIE5vdCBzcGVjaWZpZWQsIGJ1
dCBGRi9PcGVyYSBkbyBpdCB0aGlzIHdheSwgYW5kIGl0J3MganVzdCBzYW5lLgotICAgICAgICBp
ZiAoIXBhc3NOZXdJdGVtKSB7Ci0gICAgICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwot
ICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLQotICAgICAgICBQcm9wZXJ0eVR5cGUm
IHZhbHVlcyA9IG1fYW5pbWF0ZWRQcm9wZXJ0eS0+dmFsdWVzKCk7Ci0gICAgICAgIExpc3RXcmFw
cGVyQ2FjaGUmIHdyYXBwZXJzID0gbV9hbmltYXRlZFByb3BlcnR5LT53cmFwcGVycygpOwotCi0g
ICAgICAgIFJlZlB0cjxMaXN0SXRlbVRlYXJPZmY+IG5ld0l0ZW0gPSBwYXNzTmV3SXRlbTsKLSAg
ICAgICAgQVNTRVJUKHZhbHVlcy5zaXplKCkgPT0gd3JhcHBlcnMuc2l6ZSgpKTsKLQotICAgICAg
ICAvLyBTcGVjOiBJZiB0aGUgaW5zZXJ0ZWQgaXRlbSBpcyBhbHJlYWR5IGluIGEgbGlzdCwgaXQg
aXMgcmVtb3ZlZCBmcm9tIGl0cyBwcmV2aW91cyBsaXN0IGJlZm9yZSBpdCBpcyBpbnNlcnRlZCBp
bnRvIHRoaXMgbGlzdC4KLSAgICAgICAgcHJvY2Vzc0luY29taW5nTGlzdEl0ZW0obmV3SXRlbSwg
MCk7Ci0KLSAgICAgICAgLy8gU3BlYzogQ2xlYXJzIGFsbCBleGlzdGluZyBjdXJyZW50IGl0ZW1z
IGZyb20gdGhlIGxpc3QgYW5kIHJlLWluaXRpYWxpemVzIHRoZSBsaXN0IHRvIGhvbGQgdGhlIHNp
bmdsZSBpdGVtIHNwZWNpZmllZCBieSB0aGUgcGFyYW1ldGVyLgotICAgICAgICBtX2FuaW1hdGVk
UHJvcGVydHktPmRldGFjaExpc3RXcmFwcGVycygwKTsKLSAgICAgICAgdmFsdWVzLmNsZWFyKCk7
Ci0KLSAgICAgICAgdmFsdWVzLmFwcGVuZChuZXdJdGVtLT5wcm9wZXJ0eVJlZmVyZW5jZSgpKTsK
LSAgICAgICAgd3JhcHBlcnMuYXBwZW5kKG5ld0l0ZW0pOwotCi0gICAgICAgIGNvbW1pdENoYW5n
ZSgpOwotICAgICAgICByZXR1cm4gbmV3SXRlbS5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBC
YXNlOjppbml0aWFsaXplVmFsdWVzQW5kV3JhcHBlcnMobV9hbmltYXRlZFByb3BlcnR5LmdldCgp
LCBwYXNzTmV3SXRlbSwgZWMpOwogICAgIH0KIAogICAgIFBhc3NMaXN0SXRlbVRlYXJPZmYgZ2V0
SXRlbSh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgewotICAgICAgICBQ
cm9wZXJ0eVR5cGUmIHZhbHVlcyA9IG1fYW5pbWF0ZWRQcm9wZXJ0eS0+dmFsdWVzKCk7Ci0gICAg
ICAgIGlmIChpbmRleCA+PSB2YWx1ZXMuc2l6ZSgpKSB7Ci0gICAgICAgICAgICBlYyA9IElOREVY
X1NJWkVfRVJSOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLQotICAgICAgICBM
aXN0V3JhcHBlckNhY2hlJiB3cmFwcGVycyA9IG1fYW5pbWF0ZWRQcm9wZXJ0eS0+d3JhcHBlcnMo
KTsKLQotICAgICAgICAvLyBTcGVjOiBSZXR1cm5zIHRoZSBzcGVjaWZpZWQgaXRlbSBmcm9tIHRo
ZSBsaXN0LiBUaGUgcmV0dXJuZWQgaXRlbSBpcyB0aGUgaXRlbSBpdHNlbGYgYW5kIG5vdCBhIGNv
cHkuCi0gICAgICAgIC8vIEFueSBjaGFuZ2VzIG1hZGUgdG8gdGhlIGl0ZW0gYXJlIGltbWVkaWF0
ZWx5IHJlZmxlY3RlZCBpbiB0aGUgbGlzdC4KLSAgICAgICAgQVNTRVJUKHZhbHVlcy5zaXplKCkg
PT0gd3JhcHBlcnMuc2l6ZSgpKTsKLSAgICAgICAgUmVmUHRyPExpc3RJdGVtVGVhck9mZj4gd3Jh
cHBlciA9IHdyYXBwZXJzLmF0KGluZGV4KTsKLSAgICAgICAgaWYgKCF3cmFwcGVyKSB7Ci0gICAg
ICAgICAgICAvLyBDcmVhdGUgbmV3IHdyYXBwZXIsIHdoaWNoIGlzIGFsbG93ZWQgdG8gZGlyZWN0
bHkgbW9kaWZ5IHRoZSBpdGVtIGluIHRoZSBsaXN0LCB3L28gY29weWluZyBhbmQgY2FjaGUgdGhl
IHdyYXBwZXIgaW4gb3VyIG1hcC4KLSAgICAgICAgICAgIC8vIEl0IGlzIGFsc28gYXNzb2NpYXRl
ZCB3aXRoIG91ciBhbmltYXRlZCBwcm9wZXJ0eSwgc28gaXQgY2FuIG5vdGlmeSB0aGUgU1ZHIEVs
ZW1lbnQgd2hpY2ggaG9sZHMgdGhlIFNWR0FuaW1hdGVkKkxpc3QKLSAgICAgICAgICAgIC8vIHRo
YXQgaXQgaGFzIGJlZW4gbW9kaWZpZWQgKGFuZCB0aHVzIGNhbiBjYWxsIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoYXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUpKS4KLSAgICAgICAgICAgIHdyYXBwZXIgPSBM
aXN0SXRlbVRlYXJPZmY6OmNyZWF0ZShtX2FuaW1hdGVkUHJvcGVydHkuZ2V0KCksIFVuZGVmaW5l
ZFJvbGUsIHZhbHVlcy5hdChpbmRleCkpOwotICAgICAgICAgICAgd3JhcHBlcnMuYXQoaW5kZXgp
ID0gd3JhcHBlcjsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB3cmFwcGVyLnJlbGVhc2Uo
KTsKKyAgICAgICAgcmV0dXJuIEJhc2U6OmdldEl0ZW1WYWx1ZXNBbmRXcmFwcGVycyhtX2FuaW1h
dGVkUHJvcGVydHkuZ2V0KCksIGluZGV4LCBlYyk7CiAgICAgfQogCiAgICAgUGFzc0xpc3RJdGVt
VGVhck9mZiBpbnNlcnRJdGVtQmVmb3JlKFBhc3NMaXN0SXRlbVRlYXJPZmYgcGFzc05ld0l0ZW0s
IHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICB7Ci0gICAgICAgIGlmICht
X3JvbGUgPT0gQW5pbVZhbFJvbGUpIHsKLSAgICAgICAgICAgIGVjID0gTk9fTU9ESUZJQ0FUSU9O
X0FMTE9XRURfRVJSOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLQotICAgICAg
ICAvLyBOb3Qgc3BlY2lmaWVkLCBidXQgRkYvT3BlcmEgZG8gaXQgdGhpcyB3YXksIGFuZCBpdCdz
IGp1c3Qgc2FuZS4KLSAgICAgICAgaWYgKCFwYXNzTmV3SXRlbSkgewotICAgICAgICAgICAgZWMg
PSBUWVBFX01JU01BVENIX0VSUjsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0K
LSAgICAgICAgUHJvcGVydHlUeXBlJiB2YWx1ZXMgPSBtX2FuaW1hdGVkUHJvcGVydHktPnZhbHVl
cygpOwotICAgICAgICBMaXN0V3JhcHBlckNhY2hlJiB3cmFwcGVycyA9IG1fYW5pbWF0ZWRQcm9w
ZXJ0eS0+d3JhcHBlcnMoKTsKLQotICAgICAgICAvLyBTcGVjOiBJZiB0aGUgaW5kZXggaXMgZ3Jl
YXRlciB0aGFuIG9yIGVxdWFsIHRvIG51bWJlck9mSXRlbXMsIHRoZW4gdGhlIG5ldyBpdGVtIGlz
IGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QuCi0gICAgICAgIGlmIChpbmRleCA+IHZh
bHVlcy5zaXplKCkpCi0gICAgICAgICAgICAgaW5kZXggPSB2YWx1ZXMuc2l6ZSgpOwotCi0gICAg
ICAgIFJlZlB0cjxMaXN0SXRlbVRlYXJPZmY+IG5ld0l0ZW0gPSBwYXNzTmV3SXRlbTsKLSAgICAg
ICAgQVNTRVJUKHZhbHVlcy5zaXplKCkgPT0gd3JhcHBlcnMuc2l6ZSgpKTsKLQotICAgICAgICAv
LyBTcGVjOiBJZiBuZXdJdGVtIGlzIGFscmVhZHkgaW4gYSBsaXN0LCBpdCBpcyByZW1vdmVkIGZy
b20gaXRzIHByZXZpb3VzIGxpc3QgYmVmb3JlIGl0IGlzIGluc2VydGVkIGludG8gdGhpcyBsaXN0
LgotICAgICAgICBwcm9jZXNzSW5jb21pbmdMaXN0SXRlbShuZXdJdGVtLCAmaW5kZXgpOwotCi0g
ICAgICAgIC8vIFNwZWM6IEluc2VydHMgYSBuZXcgaXRlbSBpbnRvIHRoZSBsaXN0IGF0IHRoZSBz
cGVjaWZpZWQgcG9zaXRpb24uIFRoZSBpbmRleCBvZiB0aGUgaXRlbSBiZWZvcmUgd2hpY2ggdGhl
IG5ldyBpdGVtIGlzIHRvIGJlCi0gICAgICAgIC8vIGluc2VydGVkLiBUaGUgZmlyc3QgaXRlbSBp
cyBudW1iZXIgMC4gSWYgdGhlIGluZGV4IGlzIGVxdWFsIHRvIDAsIHRoZW4gdGhlIG5ldyBpdGVt
IGlzIGluc2VydGVkIGF0IHRoZSBmcm9udCBvZiB0aGUgbGlzdC4KLSAgICAgICAgdmFsdWVzLmlu
c2VydChpbmRleCwgbmV3SXRlbS0+cHJvcGVydHlSZWZlcmVuY2UoKSk7Ci0KLSAgICAgICAgLy8g
U3RvcmUgbmV3IHdyYXBwZXIgYXQgcG9zaXRpb24gJ2luZGV4JywgY2hhbmdlIGl0cyB1bmRlcmx5
aW5nIHZhbHVlLCBzbyBtdXRhdGlvbnMgb2YgbmV3SXRlbSwgZGlyZWN0bHkgYWZmZWN0IHRoZSBp
dGVtIGluIHRoZSBsaXN0LgotICAgICAgICB3cmFwcGVycy5pbnNlcnQoaW5kZXgsIG5ld0l0ZW0p
OwotCi0gICAgICAgIGNvbW1pdENoYW5nZSgpOwotICAgICAgICByZXR1cm4gbmV3SXRlbS5yZWxl
YXNlKCk7CisgICAgICAgIHJldHVybiBCYXNlOjppbnNlcnRJdGVtQmVmb3JlVmFsdWVzQW5kV3Jh
cHBlcnMobV9hbmltYXRlZFByb3BlcnR5LmdldCgpLCBwYXNzTmV3SXRlbSwgaW5kZXgsIGVjKTsK
ICAgICB9CiAKICAgICBQYXNzTGlzdEl0ZW1UZWFyT2ZmIHJlcGxhY2VJdGVtKFBhc3NMaXN0SXRl
bVRlYXJPZmYgcGFzc05ld0l0ZW0sIHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykK
ICAgICB7Ci0gICAgICAgIGlmIChtX3JvbGUgPT0gQW5pbVZhbFJvbGUpIHsKLSAgICAgICAgICAg
IGVjID0gTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSOwotICAgICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgICAgIH0KLQotICAgICAgICBQcm9wZXJ0eVR5cGUmIHZhbHVlcyA9IG1fYW5pbWF0ZWRQ
cm9wZXJ0eS0+dmFsdWVzKCk7Ci0gICAgICAgIGlmIChpbmRleCA+PSB2YWx1ZXMuc2l6ZSgpKSB7
Ci0gICAgICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwotICAgICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBOb3Qgc3BlY2lmaWVkLCBidXQgRkYvT3BlcmEgZG8g
aXQgdGhpcyB3YXksIGFuZCBpdCdzIGp1c3Qgc2FuZS4KLSAgICAgICAgaWYgKCFwYXNzTmV3SXRl
bSkgewotICAgICAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKLSAgICAgICAgICAgIHJl
dHVybiAwOwotICAgICAgICB9Ci0KLSAgICAgICAgTGlzdFdyYXBwZXJDYWNoZSYgd3JhcHBlcnMg
PSBtX2FuaW1hdGVkUHJvcGVydHktPndyYXBwZXJzKCk7Ci0gICAgICAgIEFTU0VSVCh2YWx1ZXMu
c2l6ZSgpID09IHdyYXBwZXJzLnNpemUoKSk7Ci0gICAgICAgIFJlZlB0cjxMaXN0SXRlbVRlYXJP
ZmY+IG5ld0l0ZW0gPSBwYXNzTmV3SXRlbTsKLQotICAgICAgICAvLyBTcGVjOiBJZiBuZXdJdGVt
IGlzIGFscmVhZHkgaW4gYSBsaXN0LCBpdCBpcyByZW1vdmVkIGZyb20gaXRzIHByZXZpb3VzIGxp
c3QgYmVmb3JlIGl0IGlzIGluc2VydGVkIGludG8gdGhpcyBsaXN0LgotICAgICAgICAvLyBTcGVj
OiBJZiB0aGUgaXRlbSBpcyBhbHJlYWR5IGluIHRoaXMgbGlzdCwgbm90ZSB0aGF0IHRoZSBpbmRl
eCBvZiB0aGUgaXRlbSB0byByZXBsYWNlIGlzIGJlZm9yZSB0aGUgcmVtb3ZhbCBvZiB0aGUgaXRl
bS4KLSAgICAgICAgcHJvY2Vzc0luY29taW5nTGlzdEl0ZW0obmV3SXRlbSwgJmluZGV4KTsKLQot
ICAgICAgICAvLyBEZXRhY2ggdGhlIGV4aXN0aW5nIHdyYXBwZXIuCi0gICAgICAgIFJlZlB0cjxM
aXN0SXRlbVRlYXJPZmY+JiBvbGRJdGVtID0gd3JhcHBlcnMuYXQoaW5kZXgpOwotICAgICAgICBp
ZiAob2xkSXRlbSkKLSAgICAgICAgICAgIG9sZEl0ZW0tPmRldGFjaFdyYXBwZXIoKTsKLQotICAg
ICAgICAvLyBVcGRhdGUgdGhlIHZhbHVlIGFuZCB0aGUgd3JhcHBlciBhdCB0aGUgZGVzaXJlZCBw
b3NpdGlvbiAnaW5kZXgnLiAKLSAgICAgICAgdmFsdWVzLmF0KGluZGV4KSA9IG5ld0l0ZW0tPnBy
b3BlcnR5UmVmZXJlbmNlKCk7Ci0gICAgICAgIHdyYXBwZXJzLmF0KGluZGV4KSA9IG5ld0l0ZW07
Ci0KLSAgICAgICAgY29tbWl0Q2hhbmdlKCk7Ci0gICAgICAgIHJldHVybiBuZXdJdGVtLnJlbGVh
c2UoKTsKKyAgICAgICAgcmV0dXJuIEJhc2U6OnJlcGxhY2VJdGVtVmFsdWVzQW5kV3JhcHBlcnMo
bV9hbmltYXRlZFByb3BlcnR5LmdldCgpLCBwYXNzTmV3SXRlbSwgaW5kZXgsIGVjKTsKICAgICB9
CiAKICAgICBQYXNzTGlzdEl0ZW1UZWFyT2ZmIHJlbW92ZUl0ZW0odW5zaWduZWQgaW5kZXgsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogICAgIHsKLSAgICAgICAgaWYgKG1fcm9sZSA9PSBBbmltVmFsUm9s
ZSkgewotICAgICAgICAgICAgZWMgPSBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI7Ci0gICAg
ICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotCi0gICAgICAgIFByb3BlcnR5VHlwZSYgdmFs
dWVzID0gbV9hbmltYXRlZFByb3BlcnR5LT52YWx1ZXMoKTsKLSAgICAgICAgaWYgKGluZGV4ID49
IHZhbHVlcy5zaXplKCkpIHsKLSAgICAgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7Ci0gICAg
ICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotCi0gICAgICAgIExpc3RXcmFwcGVyQ2FjaGUm
IHdyYXBwZXJzID0gbV9hbmltYXRlZFByb3BlcnR5LT53cmFwcGVycygpOwotICAgICAgICBBU1NF
UlQodmFsdWVzLnNpemUoKSA9PSB3cmFwcGVycy5zaXplKCkpOwotCi0gICAgICAgIC8vIERldGFj
aCB0aGUgZXhpc3Rpbmcgd3JhcHBlci4KLSAgICAgICAgUmVmUHRyPExpc3RJdGVtVGVhck9mZj4m
IG9sZEl0ZW0gPSB3cmFwcGVycy5hdChpbmRleCk7Ci0gICAgICAgIGlmIChvbGRJdGVtKSB7Ci0g
ICAgICAgICAgICBvbGRJdGVtLT5kZXRhY2hXcmFwcGVyKCk7Ci0gICAgICAgICAgICB3cmFwcGVy
cy5yZW1vdmUoaW5kZXgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFsdWVzLnJlbW92ZShpbmRl
eCk7Ci0KLSAgICAgICAgY29tbWl0Q2hhbmdlKCk7Ci0gICAgICAgIHJldHVybiBvbGRJdGVtLnJl
bGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIEJhc2U6OnJlbW92ZUl0ZW1WYWx1ZXNBbmRXcmFwcGVy
cyhtX2FuaW1hdGVkUHJvcGVydHkuZ2V0KCksIGluZGV4LCBlYyk7CiAgICAgfQogCiAgICAgUGFz
c0xpc3RJdGVtVGVhck9mZiBhcHBlbmRJdGVtKFBhc3NMaXN0SXRlbVRlYXJPZmYgcGFzc05ld0l0
ZW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHsKLSAgICAgICAgaWYgKG1fcm9sZSA9PSBBbmlt
VmFsUm9sZSkgewotICAgICAgICAgICAgZWMgPSBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI7
Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIE5vdCBzcGVj
aWZpZWQsIGJ1dCBGRi9PcGVyYSBkbyBpdCB0aGlzIHdheSwgYW5kIGl0J3MganVzdCBzYW5lLgot
ICAgICAgICBpZiAoIXBhc3NOZXdJdGVtKSB7Ci0gICAgICAgICAgICBlYyA9IFRZUEVfTUlTTUFU
Q0hfRVJSOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLQotICAgICAgICBQcm9w
ZXJ0eVR5cGUmIHZhbHVlcyA9IG1fYW5pbWF0ZWRQcm9wZXJ0eS0+dmFsdWVzKCk7Ci0gICAgICAg
IExpc3RXcmFwcGVyQ2FjaGUmIHdyYXBwZXJzID0gbV9hbmltYXRlZFByb3BlcnR5LT53cmFwcGVy
cygpOwotCi0gICAgICAgIFJlZlB0cjxMaXN0SXRlbVRlYXJPZmY+IG5ld0l0ZW0gPSBwYXNzTmV3
SXRlbTsKLSAgICAgICAgQVNTRVJUKHZhbHVlcy5zaXplKCkgPT0gd3JhcHBlcnMuc2l6ZSgpKTsK
LQotICAgICAgICAvLyBTcGVjOiBJZiBuZXdJdGVtIGlzIGFscmVhZHkgaW4gYSBsaXN0LCBpdCBp
cyByZW1vdmVkIGZyb20gaXRzIHByZXZpb3VzIGxpc3QgYmVmb3JlIGl0IGlzIGluc2VydGVkIGlu
dG8gdGhpcyBsaXN0LgotICAgICAgICBwcm9jZXNzSW5jb21pbmdMaXN0SXRlbShuZXdJdGVtLCAw
KTsKLQotICAgICAgICAvLyBBcHBlbmQgdGhlIHZhbHVlIGFuZCB3cmFwcGVyIGF0IHRoZSBlbmQg
b2YgdGhlIGxpc3QuCi0gICAgICAgIHZhbHVlcy5hcHBlbmQobmV3SXRlbS0+cHJvcGVydHlSZWZl
cmVuY2UoKSk7Ci0gICAgICAgIHdyYXBwZXJzLmFwcGVuZChuZXdJdGVtKTsKLQotICAgICAgICBj
b21taXRDaGFuZ2UoKTsKLSAgICAgICAgcmV0dXJuIG5ld0l0ZW0ucmVsZWFzZSgpOworICAgICAg
ICByZXR1cm4gQmFzZTo6YXBwZW5kSXRlbVZhbHVlc0FuZFdyYXBwZXJzKG1fYW5pbWF0ZWRQcm9w
ZXJ0eS5nZXQoKSwgcGFzc05ld0l0ZW0sIGVjKTsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgU1ZH
TGlzdFByb3BlcnR5VGVhck9mZihBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYqIGFuaW1hdGVk
UHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlKQotICAgICAgICA6IG1fYW5pbWF0ZWRQcm9w
ZXJ0eShhbmltYXRlZFByb3BlcnR5KQotICAgICAgICAsIG1fcm9sZShyb2xlKQorICAgICAgICA6
IFNWR0xpc3RQcm9wZXJ0eTxQcm9wZXJ0eVR5cGU+KHJvbGUpCisgICAgICAgICwgbV9hbmltYXRl
ZFByb3BlcnR5KGFuaW1hdGVkUHJvcGVydHkpCiAgICAgewotICAgICAgICBBU1NFUlQoYW5pbWF0
ZWRQcm9wZXJ0eSk7Ci0gICAgICAgIEFTU0VSVChyb2xlICE9IFVuZGVmaW5lZFJvbGUpOwogICAg
IH0KIAotICAgIHZvaWQgY29tbWl0Q2hhbmdlKCkKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q2hh
bmdlKCkKICAgICB7CiAgICAgICAgIFByb3BlcnR5VHlwZSYgdmFsdWVzID0gbV9hbmltYXRlZFBy
b3BlcnR5LT52YWx1ZXMoKTsKICAgICAgICAgTGlzdFdyYXBwZXJDYWNoZSYgd3JhcHBlcnMgPSBt
X2FuaW1hdGVkUHJvcGVydHktPndyYXBwZXJzKCk7CkBAIC0zMTMsNyArMTM1LDEyIEBAIHByaXZh
dGU6CiAgICAgICAgIG1fYW5pbWF0ZWRQcm9wZXJ0eS0+Y29tbWl0Q2hhbmdlKCk7CiAgICAgfQog
Ci0gICAgdm9pZCBwcm9jZXNzSW5jb21pbmdMaXN0SXRlbShSZWZQdHI8TGlzdEl0ZW1UZWFyT2Zm
PiYgbmV3SXRlbSwgdW5zaWduZWQqIGluZGV4VG9Nb2RpZnkpCisgICAgdmlydHVhbCB2b2lkIHBy
b2Nlc3NJbmNvbWluZ0xpc3RJdGVtVmFsdWUoY29uc3QgTGlzdEl0ZW1UeXBlJiwgdW5zaWduZWQq
KQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgdmly
dHVhbCB2b2lkIHByb2Nlc3NJbmNvbWluZ0xpc3RJdGVtV3JhcHBlcihSZWZQdHI8TGlzdEl0ZW1U
ZWFyT2ZmPiYgbmV3SXRlbSwgdW5zaWduZWQqIGluZGV4VG9Nb2RpZnkpCiAgICAgewogICAgICAg
ICBTVkdBbmltYXRlZFByb3BlcnR5KiBhbmltYXRlZFByb3BlcnR5T2ZJdGVtID0gbmV3SXRlbS0+
YW5pbWF0ZWRQcm9wZXJ0eSgpOwogCkBAIC0zMzcsNyArMTY0LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgLy8gU3BlYzogSWYgbmV3SXRlbSBpcyBhbHJlYWR5IGluIGEgbGlzdCwgaXQgaXMgcmVtb3Zl
ZCBmcm9tIGl0cyBwcmV2aW91cyBsaXN0IGJlZm9yZSBpdCBpcyBpbnNlcnRlZCBpbnRvIHRoaXMg
bGlzdC4KICAgICAgICAgLy8gJ25ld0l0ZW0nIGlzIGFscmVhZHkgbGl2aW5nIGluIGFub3RoZXIg
bGlzdC4gSWYgaXQncyBub3Qgb3VyIGxpc3QsIHN5bmNocm9uaXplIHRoZSBvdGhlciBsaXN0cyB3
cmFwcGVycyBhZnRlciB0aGUgcmVtb3ZhbC4KICAgICAgICAgYm9vbCBsaXZlc0luT3RoZXJMaXN0
ID0gYW5pbWF0ZWRQcm9wZXJ0eU9mSXRlbSAhPSBtX2FuaW1hdGVkUHJvcGVydHk7Ci0gICAgICAg
IGludCByZW1vdmVkSW5kZXggPSBzdGF0aWNfY2FzdDxTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRl
YXJPZmY8UHJvcGVydHlUeXBlPio+KGFuaW1hdGVkUHJvcGVydHlPZkl0ZW0pLT5yZW1vdmVJdGVt
RnJvbUxpc3QobmV3SXRlbS5nZXQoKSwgbGl2ZXNJbk90aGVyTGlzdCk7CisgICAgICAgIGludCBy
ZW1vdmVkSW5kZXggPSBzdGF0aWNfY2FzdDxBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYqPihh
bmltYXRlZFByb3BlcnR5T2ZJdGVtKS0+cmVtb3ZlSXRlbUZyb21MaXN0KG5ld0l0ZW0uZ2V0KCks
IGxpdmVzSW5PdGhlckxpc3QpOwogICAgICAgICBBU1NFUlQocmVtb3ZlZEluZGV4ICE9IC0xKTsK
IAogICAgICAgICBpZiAoIWluZGV4VG9Nb2RpZnkpCkBAIC0zNTYsOSArMTgzLDYgQEAgcHJpdmF0
ZToKICAgICAvLyBCYWNrIHBvaW50ZXIgdG8gdGhlIGFuaW1hdGVkIHByb3BlcnR5IHRoYXQgY3Jl
YXRlZCB1cwogICAgIC8vIEZvciBleGFtcGxlICh0ZXh0LnguYmFzZVZhbCk6IG1fYW5pbWF0ZWRQ
cm9wZXJ0eSBwb2ludHMgdG8gdGhlICd4JyBTVkdBbmltYXRlZExlbmd0aExpc3Qgb2JqZWN0CiAg
ICAgUmVmUHRyPEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZj4gbV9hbmltYXRlZFByb3BlcnR5
OwotCi0gICAgLy8gVGhlIHJvbGUgb2YgdGhpcyBwcm9wZXJ0eSAoYmFzZVZhbCBvciBhbmltVmFs
KQotICAgIFNWR1Byb3BlcnR5Um9sZSBtX3JvbGU7CiB9OwogCiB9CkluZGV4OiBXZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYuaAko
cmV2aXNpb24gMCkKKysrIFdlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHU3RhdGljTGlzdFByb3Bl
cnR5VGVhck9mZi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExNCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworI2lmbmRlZiBTVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmX2gKKyNkZWZpbmUgU1ZH
U3RhdGljTGlzdFByb3BlcnR5VGVhck9mZl9oCisKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUg
IlNWR0xpc3RQcm9wZXJ0eS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFByb3BlcnR5VHlwZT4KK2NsYXNzIFNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYg
OiBwdWJsaWMgU1ZHTGlzdFByb3BlcnR5PFByb3BlcnR5VHlwZT4geworcHVibGljOgorICAgIHR5
cGVkZWYgU1ZHTGlzdFByb3BlcnR5PFByb3BlcnR5VHlwZT4gQmFzZTsKKworICAgIHR5cGVkZWYg
dHlwZW5hbWUgU1ZHUHJvcGVydHlUcmFpdHM8UHJvcGVydHlUeXBlPjo6TGlzdEl0ZW1UeXBlIExp
c3RJdGVtVHlwZTsKKyAgICB0eXBlZGVmIFNWR1Byb3BlcnR5VGVhck9mZjxMaXN0SXRlbVR5cGU+
IExpc3RJdGVtVGVhck9mZjsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1N0YXRpY0xpc3RQ
cm9wZXJ0eVRlYXJPZmY8UHJvcGVydHlUeXBlPiA+IGNyZWF0ZShTVkdFbGVtZW50KiBjb250ZXh0
RWxlbWVudCwgUHJvcGVydHlUeXBlJiB2YWx1ZXMpCisgICAgeworICAgICAgICBBU1NFUlQoY29u
dGV4dEVsZW1lbnQpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1N0YXRpY0xpc3RQ
cm9wZXJ0eVRlYXJPZmY8UHJvcGVydHlUeXBlPihjb250ZXh0RWxlbWVudCwgdmFsdWVzKSk7Cisg
ICAgfQorCisgICAgLy8gU1ZHTGlzdCBBUEkKKyAgICB2b2lkIGNsZWFyKEV4Y2VwdGlvbkNvZGUm
IGVjKQorICAgIHsKKyAgICAgICAgQmFzZTo6Y2xlYXJWYWx1ZXMobV92YWx1ZXMsIGVjKTsKKyAg
ICB9CisKKyAgICB1bnNpZ25lZCBudW1iZXJPZkl0ZW1zKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBCYXNlOjpudW1iZXJPZkl0ZW1zVmFsdWVzKG1fdmFsdWVzKTsKKyAgICB9CisKKyAg
ICBMaXN0SXRlbVR5cGUgaW5pdGlhbGl6ZShjb25zdCBMaXN0SXRlbVR5cGUmIG5ld0l0ZW0sIEV4
Y2VwdGlvbkNvZGUmIGVjKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEJhc2U6OmluaXRpYWxpemVW
YWx1ZXMobV92YWx1ZXMsIG5ld0l0ZW0sIGVjKTsKKyAgICB9CisKKyAgICBMaXN0SXRlbVR5cGUg
Z2V0SXRlbSh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCisgICAgeworICAgICAg
ICByZXR1cm4gQmFzZTo6Z2V0SXRlbVZhbHVlcyhtX3ZhbHVlcywgaW5kZXgsIGVjKTsKKyAgICB9
CisKKyAgICBMaXN0SXRlbVR5cGUgaW5zZXJ0SXRlbUJlZm9yZShjb25zdCBMaXN0SXRlbVR5cGUm
IG5ld0l0ZW0sIHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKKyAgICB7CisgICAg
ICAgIHJldHVybiBCYXNlOjppbnNlcnRJdGVtQmVmb3JlVmFsdWVzKG1fdmFsdWVzLCBuZXdJdGVt
LCBpbmRleCwgZWMpOworICAgIH0KKworICAgIExpc3RJdGVtVHlwZSByZXBsYWNlSXRlbShjb25z
dCBMaXN0SXRlbVR5cGUmIG5ld0l0ZW0sIHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJiBl
YykKKyAgICB7CisgICAgICAgIHJldHVybiBCYXNlOjpyZXBsYWNlSXRlbVZhbHVlcyhtX3ZhbHVl
cywgbmV3SXRlbSwgaW5kZXgsIGVjKTsKKyAgICB9CisKKyAgICBMaXN0SXRlbVR5cGUgcmVtb3Zl
SXRlbSh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCisgICAgeworICAgICAgICBy
ZXR1cm4gQmFzZTo6cmVtb3ZlSXRlbVZhbHVlcyhtX3ZhbHVlcywgaW5kZXgsIGVjKTsKKyAgICB9
CisKKyAgICBMaXN0SXRlbVR5cGUgYXBwZW5kSXRlbShjb25zdCBMaXN0SXRlbVR5cGUmIG5ld0l0
ZW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEJhc2U6OmFwcGVu
ZEl0ZW1WYWx1ZXMobV92YWx1ZXMsIG5ld0l0ZW0sIGVjKTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZihTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVu
dCwgUHJvcGVydHlUeXBlJiB2YWx1ZXMpCisgICAgICAgIDogU1ZHTGlzdFByb3BlcnR5PFByb3Bl
cnR5VHlwZT4oVW5kZWZpbmVkUm9sZSkKKyAgICAgICAgLCBtX2NvbnRleHRFbGVtZW50KGNvbnRl
eHRFbGVtZW50KQorICAgICAgICAsIG1fdmFsdWVzKHZhbHVlcykKKyAgICB7CisgICAgfQorCisg
ICAgdmlydHVhbCB2b2lkIGNvbW1pdENoYW5nZSgpCisgICAgeworICAgICAgICBtX3ZhbHVlcy5j
b21taXRDaGFuZ2UobV9jb250ZXh0RWxlbWVudC5nZXQoKSk7CisgICAgfQorCisgICAgdmlydHVh
bCB2b2lkIHByb2Nlc3NJbmNvbWluZ0xpc3RJdGVtVmFsdWUoY29uc3QgTGlzdEl0ZW1UeXBlJiwg
dW5zaWduZWQqKQorICAgIHsKKyAgICAgICAgLy8gbm8tb3AgZm9yIHN0YXRpYyBsaXN0cworICAg
IH0KKworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzSW5jb21pbmdMaXN0SXRlbVdyYXBwZXIoUmVm
UHRyPExpc3RJdGVtVGVhck9mZj4mLCB1bnNpZ25lZCopCisgICAgeworICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPFNWR0VsZW1lbnQ+
IG1fY29udGV4dEVsZW1lbnQ7CisgICAgUHJvcGVydHlUeXBlJiBtX3ZhbHVlczsKK307CisKK30K
KworI2VuZGlmIC8vIEVOQUJMRShTVkcpCisjZW5kaWYgLy8gU1ZHU3RhdGljTGlzdFByb3BlcnR5
VGVhck9mZl9oCkluZGV4OiBXZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1N0cmluZ0xpc3RQcm9w
ZXJ0eVRlYXJPZmYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1N0
cmluZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuaAkocmV2aXNpb24gNzEyMjcpCisrKyBXZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1N0cmluZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuaAkod29ya2luZyBjb3B5
KQpAQCAtMSwxMzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90
aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
ICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAot
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBTVkdTdHJpbmdM
aXN0UHJvcGVydHlUZWFyT2ZmX2gKLSNkZWZpbmUgU1ZHU3RyaW5nTGlzdFByb3BlcnR5VGVhck9m
Zl9oCi0KLSNpZiBFTkFCTEUoU1ZHKQotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNs
dWRlICJTVkdQcm9wZXJ0eS5oIgotI2luY2x1ZGUgIlNWR1N0cmluZ0xpc3QuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi0vLyBVc2VkIGZvciBsaXN0cyB0aGF0IHJldHVybiBub24tbW9kaWZ5
YWJsZSB2YWx1ZXM6IFNWR1N0cmluZ0xpc3QuCi1jbGFzcyBTVkdTdHJpbmdMaXN0UHJvcGVydHlU
ZWFyT2ZmIDogcHVibGljIFNWR1Byb3BlcnR5IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTVkdTdHJpbmdMaXN0UHJvcGVydHlUZWFyT2ZmPiBjcmVhdGUoU1ZHRWxlbWVudCogY29u
dGV4dEVsZW1lbnQsIFNWR1N0cmluZ0xpc3QmIHZhbHVlcykKLSAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgU1ZHU3RyaW5nTGlzdFByb3BlcnR5VGVhck9mZihjb250ZXh0RWxlbWVu
dCwgdmFsdWVzKSk7Ci0gICAgfQotCi0gICAgLy8gU1ZHTGlzdCBBUEkKLSAgICB2b2lkIGNsZWFy
KEV4Y2VwdGlvbkNvZGUmKQotICAgIHsKLSAgICAgICAgbV92YWx1ZXMuY2xlYXIoKTsKLSAgICB9
Ci0KLSAgICB1bnNpZ25lZCBudW1iZXJPZkl0ZW1zKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBtX3ZhbHVlcy5zaXplKCk7Ci0gICAgfQotCi0gICAgU3RyaW5nIGluaXRpYWxpemUoY29u
c3QgU3RyaW5nJiBuZXdJdGVtLCBFeGNlcHRpb25Db2RlJikKLSAgICB7Ci0gICAgICAgIC8vIFNw
ZWM6IENsZWFycyBhbGwgZXhpc3RpbmcgY3VycmVudCBpdGVtcyBmcm9tIHRoZSBsaXN0IGFuZCBy
ZS1pbml0aWFsaXplcyB0aGUgbGlzdCB0byBob2xkIHRoZSBzaW5nbGUgaXRlbSBzcGVjaWZpZWQg
YnkgdGhlIHBhcmFtZXRlci4KLSAgICAgICAgbV92YWx1ZXMuY2xlYXIoKTsKLSAgICAgICAgbV92
YWx1ZXMuYXBwZW5kKG5ld0l0ZW0pOwotCi0gICAgICAgIG1fdmFsdWVzLmNvbW1pdENoYW5nZSht
X2NvbnRleHRFbGVtZW50LmdldCgpKTsKLSAgICAgICAgcmV0dXJuIG5ld0l0ZW07Ci0gICAgfQot
Ci0gICAgU3RyaW5nIGdldEl0ZW0odW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQot
ICAgIHsKLSAgICAgICAgaWYgKGluZGV4ID49IG1fdmFsdWVzLnNpemUoKSkgewotICAgICAgICAg
ICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIHJldHVybiBtX3ZhbHVlcy5hdChpbmRleCk7Ci0gICAgfQotCi0g
ICAgU3RyaW5nIGluc2VydEl0ZW1CZWZvcmUoY29uc3QgU3RyaW5nJiBuZXdJdGVtLCB1bnNpZ25l
ZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpCi0gICAgewotICAgICAgICAvLyBTcGVjOiBJZiB0aGUg
aW5kZXggaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIG51bWJlck9mSXRlbXMsIHRoZW4gdGhl
IG5ldyBpdGVtIGlzIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QuCi0gICAgICAgIGlm
IChpbmRleCA+IG1fdmFsdWVzLnNpemUoKSkKLSAgICAgICAgICAgICBpbmRleCA9IG1fdmFsdWVz
LnNpemUoKTsKLQotICAgICAgICAvLyBTcGVjOiBJbnNlcnRzIGEgbmV3IGl0ZW0gaW50byB0aGUg
bGlzdCBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLiBUaGUgaW5kZXggb2YgdGhlIGl0ZW0gYmVm
b3JlIHdoaWNoIHRoZSBuZXcgaXRlbSBpcyB0byBiZQotICAgICAgICAvLyBpbnNlcnRlZC4gVGhl
IGZpcnN0IGl0ZW0gaXMgbnVtYmVyIDAuIElmIHRoZSBpbmRleCBpcyBlcXVhbCB0byAwLCB0aGVu
IHRoZSBuZXcgaXRlbSBpcyBpbnNlcnRlZCBhdCB0aGUgZnJvbnQgb2YgdGhlIGxpc3QuCi0gICAg
ICAgIG1fdmFsdWVzLmluc2VydChpbmRleCwgbmV3SXRlbSk7Ci0KLSAgICAgICAgbV92YWx1ZXMu
Y29tbWl0Q2hhbmdlKG1fY29udGV4dEVsZW1lbnQuZ2V0KCkpOwotICAgICAgICByZXR1cm4gbmV3
SXRlbTsKLSAgICB9Ci0KLSAgICBTdHJpbmcgcmVwbGFjZUl0ZW0oY29uc3QgU3RyaW5nJiBuZXdJ
dGVtLCB1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCi0gICAgewotICAgICAgICBp
ZiAoaW5kZXggPj0gbV92YWx1ZXMuc2l6ZSgpKSB7Ci0gICAgICAgICAgICBlYyA9IElOREVYX1NJ
WkVfRVJSOwotICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgLy8gVXBkYXRlIHRoZSB2YWx1ZSBhbmQgdGhlIHdyYXBwZXIgYXQgdGhlIGRlc2lyZWQgcG9z
aXRpb24gJ2luZGV4Jy4gCi0gICAgICAgIG1fdmFsdWVzLmF0KGluZGV4KSA9IG5ld0l0ZW07Ci0K
LSAgICAgICAgbV92YWx1ZXMuY29tbWl0Q2hhbmdlKG1fY29udGV4dEVsZW1lbnQuZ2V0KCkpOwot
ICAgICAgICByZXR1cm4gbmV3SXRlbTsKLSAgICB9Ci0KLSAgICBTdHJpbmcgcmVtb3ZlSXRlbSh1
bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCi0gICAgewotICAgICAgICBpZiAoaW5k
ZXggPj0gbV92YWx1ZXMuc2l6ZSgpKSB7Ci0gICAgICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJS
OwotICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgICAgICB9Ci0KLSAgICAgICAgU3Ry
aW5nIG9sZEl0ZW0gPSBtX3ZhbHVlcy5hdChpbmRleCk7Ci0gICAgICAgIG1fdmFsdWVzLnJlbW92
ZShpbmRleCk7Ci0KLSAgICAgICAgbV92YWx1ZXMuY29tbWl0Q2hhbmdlKG1fY29udGV4dEVsZW1l
bnQuZ2V0KCkpOwotICAgICAgICByZXR1cm4gb2xkSXRlbTsKLSAgICB9Ci0KLSAgICBTdHJpbmcg
YXBwZW5kSXRlbShjb25zdCBTdHJpbmcmIG5ld0l0ZW0sIEV4Y2VwdGlvbkNvZGUmKQotICAgIHsK
LSAgICAgICAgLy8gQXBwZW5kIHRoZSB2YWx1ZSBhbmQgd3JhcHBlciBhdCB0aGUgZW5kIG9mIHRo
ZSBsaXN0LgotICAgICAgICBtX3ZhbHVlcy5hcHBlbmQobmV3SXRlbSk7Ci0KLSAgICAgICAgbV92
YWx1ZXMuY29tbWl0Q2hhbmdlKG1fY29udGV4dEVsZW1lbnQuZ2V0KCkpOwotICAgICAgICByZXR1
cm4gbmV3SXRlbTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgU1ZHU3RyaW5nTGlzdFByb3BlcnR5
VGVhck9mZihTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgU1ZHU3RyaW5nTGlzdCYgdmFsdWVz
KQotICAgICAgICA6IG1fY29udGV4dEVsZW1lbnQoY29udGV4dEVsZW1lbnQpCi0gICAgICAgICwg
bV92YWx1ZXModmFsdWVzKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQp
OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBSZWZQdHI8U1ZHRWxlbWVudD4gbV9jb250ZXh0RWxl
bWVudDsKLSAgICBTVkdTdHJpbmdMaXN0JiBtX3ZhbHVlczsKLX07Ci0KLX0KLQotI2VuZGlmIC8v
IEVOQUJMRShTVkcpCi0jZW5kaWYgLy8gU1ZHU3RyaW5nTGlzdFByb3BlcnR5VGVhck9mZl9oCg==
</data>
<flag name="review"
          id="63267"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>