<?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>121549</bug_id>
          
          <creation_ts>2013-09-18 05:15:09 -0700</creation_ts>
          <short_desc>Remove RenderWordBreak</short_desc>
          <delta_ts>2013-09-18 07:33:10 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kling</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>rakuco</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>930584</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-09-18 05:15:09 -0700</bug_when>
    <thetext>Remove this awkward RenderText subclass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930585</commentid>
    <comment_count>1</comment_count>
      <attachid>211986</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-09-18 05:20:42 -0700</bug_when>
    <thetext>Created attachment 211986
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930606</commentid>
    <comment_count>2</comment_count>
      <attachid>211991</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-09-18 06:50:43 -0700</bug_when>
    <thetext>Created attachment 211991
more correct patch replacing many isBR() check with isLineBreak() checks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930612</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-09-18 07:33:10 -0700</bug_when>
    <thetext>https://trac.webkit.org/r156038</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211986</attachid>
            <date>2013-09-18 05:20:42 -0700</date>
            <delta_ts>2013-09-18 06:50:43 -0700</delta_ts>
            <desc>patch</desc>
            <filename>wbr-non-text-3.patch</filename>
            <type>text/plain</type>
            <size>34141</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYxIEBACisyMDEzLTA5LTE4ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUmVuZGVyV29yZEJy
ZWFrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE1
NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1v
dmUgUmVuZGVyV29yZEJyZWFrIGFuZCBtYWtlIGl0IGEgYml0IGluIFJlbmRlckJSIGluc3RlYWQu
IAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlz
dC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5l
Rmxvd0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjphZGRUb0xpbmUp
OgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lSXRlcmF0b3I6OmF0VGV4dFBhcmFncmFwaFNlcGFyYXRvcik6CisgICAgICAgIChX
ZWJDb3JlOjppc0l0ZXJhdG9yVGFyZ2V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQlIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQlI6OlJlbmRlckJSKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQlIuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvUmVuZGVyQlIpOgorICAg
ICAgICAKKyAgICAgICAgICAgIFJlbmRlckJSIG5vdyByZXByZXNlbnRzIGJvdGggaGFyZCBhbmQg
c29mdCBsaW5lIGJyZWFrcy4gSXQgd2lsbCBiZSByZW5hbWVkIHRvIFJlbmRlckxpbmVCcmVhayBs
YXRlci4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVNaW5NYXhJdGVyYXRvcjo6bmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6Y29tcHV0ZUlubGluZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlSW5saW5lQm94Rm9yUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2s6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JTZWdtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OnRleHRCZWdpbnNXaXRoQnJlYWthYmxlUG9zaXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6Y2FuQnJlYWtBdFRoaXNQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9jazo6TGluZUJyZWFrZXI6Om5leHRTZWdtZW50QnJlYWspOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aXNM
aW5lQnJlYWspOgorICAgICAgICAKKyAgICAgICAgICAgIFRoaXMgYml0IGNvdmVycyBib3RoIEJS
IGFuZCBXQlIuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aXNCUik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmlzTGluZUJyZWFrT3Bwb3J0dW5pdHkpOgorICAg
ICAgICAKKyAgICAgICAgICAgIFJlbmFtZSBpc1dvcmRCcmVhayB0byBpc0xpbmVCcmVha09wcG9y
dHVuaXR5LiBUaGlzIG1hdGNoZXMgSFRNTDUgc3BlYyB0ZXJtaW5vbG9neS4KKworICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzZXRJc0xpbmVCcmVhayk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmlzV0JSKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6
UmVuZGVyT2JqZWN0Qml0ZmllbGRzOjpSZW5kZXJPYmplY3RCaXRmaWVsZHMpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4
dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRyZWVBc1RleHQ6OndyaXRlUmVuZGVyT2JqZWN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyV29yZEJyZWFrLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyV29yZEJyZWFrLmg6IFJlbW92ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlcmluZ0FsbEluT25lLmNwcDoKKwogMjAxMy0wOS0xOCAgTWFyaW8gU2FuY2hleiBQcmFkYSAg
PG1hcmlvLnByYWRhQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtBVEtdIEV4cG9zZSBhcmlhLWhh
c3BvcHVwIGFuZCBhcmlhLXNvcnQgd2l0aG91dCB0aGUgJ2FyaWEtJyBwcmVmaXgKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNTYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjE5OSw3ICsyMTk5LDYgQEAgc2V0KFdlYkNv
cmVfU09VUkNFUwogICAgIHJlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAKICAgICByZW5kZXJpbmcv
UmVuZGVyVmlldy5jcHAKICAgICByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAotICAgIHJlbmRl
cmluZy9SZW5kZXJXb3JkQnJlYWsuY3BwCiAgICAgcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3Bw
CiAgICAgcmVuZGVyaW5nL1Njcm9sbEJlaGF2aW9yLmNwcAogICAgIHJlbmRlcmluZy9UZXh0QXV0
b3NpemVyLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAx
NTYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNv
cHkpCkBAIC00NTU0LDggKzQ1NTQsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJXaWRnZXQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lk
Z2V0LmggXAotCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXb3JkQnJlYWsuY3BwIFwK
LQlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV29yZEJyZWFrLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1Jvb3RJbmxpbmVCb3guaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Njcm9s
bEJlaGF2aW9yLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDE1NjAyNCkKKysrIFNv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTEyMjUsNyArMTIyNSw2
IEBAIFNPVVJDRVMgKz0gXAogICAgIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcCBcCiAg
ICAgcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0
LmNwcCBcCi0gICAgcmVuZGVyaW5nL1JlbmRlcldvcmRCcmVhay5jcHAgXAogICAgIHJlbmRlcmlu
Zy9Sb290SW5saW5lQm94LmNwcCBcCiAgICAgcmVuZGVyaW5nL1Njcm9sbEJlaGF2aW9yLmNwcCBc
CiAgICAgcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuY3BwIFwKQEAgLTI0OTMsNyArMjQ5
Miw2IEBAIEhFQURFUlMgKz0gXAogICAgIHJlbmRlcmluZy9SZW5kZXJWaWRlby5oIFwKICAgICBy
ZW5kZXJpbmcvUmVuZGVyVmlldy5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmggXAot
ICAgIHJlbmRlcmluZy9SZW5kZXJXb3JkQnJlYWsuaCBcCiAgICAgcmVuZGVyaW5nL1Jvb3RJbmxp
bmVCb3guaCBcCiAgICAgcmVuZGVyaW5nL1Njcm9sbEJlaGF2aW9yLmggXAogICAgIHJlbmRlcmlu
Zy9zaGFwZXMvUG9seWdvblNoYXBlLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCShyZXZpc2lvbiAxNTYwMjQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDk4MywyMCArMTA5ODMsNiBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJlbmRlcmluZ1xSZW5kZXJXb3JkQnJlYWsuY3BwIj4KLSAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4
NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJv
fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5D
YWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3Vm
Zml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1
ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJv
fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dp
bkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVj
dGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVj
dGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICA8L0NsQ29tcGlsZT4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xSb290SW5saW5lQm94LmNwcCI+CiAg
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC0yMDA3OCw3ICsy
MDA2NCw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUmVuZGVyVmlk
ZW8uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xSZW5kZXJWaWV3
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUmVuZGVyV2lkZ2V0
LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUmVuZGVyV29yZEJy
ZWFrLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUm9vdElubGlu
ZUJveC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFNjcm9sbEJl
aGF2aW9yLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc3ZnXFNW
R01hcmtlckRhdGEuaCIgLz4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1NjAyNCkKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MTQyLDcgKzE0Miw2IEBACiAJCTA3NjMwNkUwMTdFMTYwODkwMDVBN0M0RSAvKiBKU1NvdXJjZUlu
Zm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2
MzA2REUxN0UxNjA4OTAwNUE3QzRFIC8qIEpTU291cmNlSW5mby5jcHAgKi87IH07CiAJCTA3NjMw
NkUxMTdFMTYwODkwMDVBN0M0RSAvKiBKU1NvdXJjZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NjMwNkRGMTdFMTYwODkwMDVBN0M0RSAvKiBK
U1NvdXJjZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwNzYzMDZFMzE3RTIyQTQzMDA1QTdDNEUgLyogTWVkaWFTdHJlYW1UcmFja1NvdXJj
ZXNSZXF1ZXN0Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwNzYzMDZFMjE3RTIyQTQzMDA1QTdDNEUgLyogTWVkaWFTdHJlYW1UcmFja1NvdXJj
ZXNSZXF1ZXN0Q2xpZW50LmggKi87IH07Ci0JCTA3NjMwNkU3MTdFMjUxRUMwMDVBN0M0RSAvKiBK
U01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2tDdXN0b20uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NjMwNkU2MTdFMjUxRUMwMDVBN0M0RSAv
KiBKU01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2tDdXN0b20uaCAqLzsgfTsKIAkJMDc2
OTcwODYxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2OTcwODQxNDYzQUQ4NzAwRjUwMkNG
IC8qIFRleHRUcmFja0xpc3QuY3BwICovOyB9OwogCQkwNzY5NzA4NzE0NjNBRDg3MDBGNTAyQ0Yg
LyogVGV4dFRyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDc2OTcwODUxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuaCAqLzsg
fTsKIAkJMDc2RjBEMEUxMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDc2RjBEMEExMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bi5oICovOyB9OwpAQCAtMjk1OCw4ICsyOTU3LDYgQEAKIAkJOTM2MjY0MEIwREUxMTM3RDAwOUQ1
QTAwIC8qIENTU1JlZmxlY3Rpb25EaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNjI2NDBBMERFMTEzN0QwMDlENUEwMCAvKiBDU1NSZWZs
ZWN0aW9uRGlyZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJOTM3MDkxOEQxNDE2RDg2QjAwNDc3MzMzIC8qIHRleHRBcmVhUmVzaXplQ29y
bmVyQDJ4LnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTM3MDkxOEMxNDE2RDg2QjAwNDc3MzMzIC8qIHRleHRBcmVhUmVzaXplQ29ybmVyQDJ4LnBu
ZyAqLzsgfTsKIAkJOTM3N0FCQTAxNURFRkVFRjAwMzFGRDA0IC8qIFBhZ2luYXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNzdBQjlGMTVERUZF
RUYwMDMxRkQwNCAvKiBQYWdpbmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTM3OTlFRjgwQkYyNzQzNjAwRDBGMjMwIC8qIFJlbmRlcldv
cmRCcmVhay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5Mzc5OUVGNjBCRjI3NDM2MDBEMEYyMzAgLyogUmVuZGVyV29yZEJyZWFrLmNwcCAqLzsgfTsK
LQkJOTM3OTlFRjkwQkYyNzQzNjAwRDBGMjMwIC8qIFJlbmRlcldvcmRCcmVhay5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM3OTlFRjcwQkYyNzQzNjAw
RDBGMjMwIC8qIFJlbmRlcldvcmRCcmVhay5oICovOyB9OwogCQk5MzgwRjQ3MzA5QTExQUI0MDAx
RkRCMzQgLyogV2lkZ2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzODBGNDcxMDlBMTFBQjQwMDFGREIzNCAvKiBXaWRnZXQuY3BwICovOyB9Owog
CQk5MzgwRjQ3NDA5QTExQUI0MDAxRkRCMzQgLyogV2lkZ2V0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzgwRjQ3MjA5QTExQUI0MDAxRkRCMzQgLyog
V2lkZ2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJOTM4MEY0NzgwOUExMUFDQzAwMUZEQjM0IC8qIFdpZGdldE1hYy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzODBGNDc3MDlBMTFBQ0MwMDFGREIz
NCAvKiBXaWRnZXRNYWMubW0gKi87IH07CkBAIC02NTc3LDcgKzY1NzQsNiBAQAogCQkwNzYzMDZE
RTE3RTE2MDg5MDA1QTdDNEUgLyogSlNTb3VyY2VJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTU291cmNlSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA3NjMwNkRGMTdFMTYwODkwMDVBN0M0RSAvKiBKU1NvdXJjZUluZm8uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTb3VyY2VJbmZvLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA3NjMwNkUyMTdFMjJBNDMwMDVBN0M0RSAvKiBNZWRpYVN0cmVh
bVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTA3NjMwNkU2MTdFMjUxRUMwMDVBN0M0RSAvKiBKU01lZGlhU3Ry
ZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2tDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrQ3VzdG9tLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3Njk3MDg0MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0
VHJhY2tMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRU
cmFja0xpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzY5NzA4NTE0NjNB
RDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUZXh0VHJhY2tMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3
NkYwRDA5MTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk1MTEs
OCArOTUwNyw2IEBACiAJCTkzNkREMDNBMDlDRUFDMjcwMDU2QUU4QyAvKiBSYW5nZS5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmFuZ2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5MzcwOTE4QzE0MTZEODZCMDA0NzczMzMgLyogdGV4dEFyZWFSZXNpemVDb3JuZXJAMngu
cG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1h
Z2UucG5nOyBwYXRoID0gInRleHRBcmVhUmVzaXplQ29ybmVyQDJ4LnBuZyI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkzNzdBQjlGMTVERUZFRUYwMDMxRkQwNCAvKiBQYWdpbmF0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2luYXRpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTM3OTlFRjYwQkYyNzQzNjAwRDBGMjMwIC8qIFJlbmRl
cldvcmRCcmVhay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5k
ZXJXb3JkQnJlYWsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5Mzc5OUVGNzBC
RjI3NDM2MDBEMEYyMzAgLyogUmVuZGVyV29yZEJyZWFrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbmRlcldvcmRCcmVhay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5MzgwRjQ3MTA5QTExQUI0MDAxRkRCMzQgLyogV2lkZ2V0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXaWRnZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5MzgwRjQ3MjA5QTExQUI0MDAxRkRCMzQgLyogV2lkZ2V0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXaWRnZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTM4MEY0NzcwOUExMUFDQzAwMUZEQjM0IC8qIFdpZGdldE1hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXaWRnZXRNYWMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDU4Niw4ICsyMDU4MCw2IEBACiAJCQkJQkNFQTQ4Mjkw
OTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclZpZXcuaCAqLywKIAkJCQlBODcxREZFMTBBMTUzNzZC
MDBCMTJBNjggLyogUmVuZGVyV2lkZ2V0LmNwcCAqLywKIAkJCQlBODcxREZFMDBBMTUzNzZCMDBC
MTJBNjggLyogUmVuZGVyV2lkZ2V0LmggKi8sCi0JCQkJOTM3OTlFRjYwQkYyNzQzNjAwRDBGMjMw
IC8qIFJlbmRlcldvcmRCcmVhay5jcHAgKi8sCi0JCQkJOTM3OTlFRjcwQkYyNzQzNjAwRDBGMjMw
IC8qIFJlbmRlcldvcmRCcmVhay5oICovLAogCQkJCUE4Q0ZGNUUwMEExNTVBMDUwMDBBNDIzNCAv
KiBSb290SW5saW5lQm94LmNwcCAqLywKIAkJCQlBOENGRjVEQTBBMTU1QTA1MDAwQTQyMzQgLyog
Um9vdElubGluZUJveC5oICovLAogCQkJCTVEOTI1QjY1MEY2NEQ0REQwMEI4NDdGMCAvKiBTY3Jv
bGxCZWhhdmlvci5jcHAgKi8sCkBAIC0yMzcyNSw3ICsyMzcxNyw2IEBACiAJCQkJRTQ0NjE0NTIw
Q0Q2OEEzNTAwRkFEQTc1IC8qIFJlbmRlclZpZGVvLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VB
NDg2ODA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTg3MURGRTQwQTE1Mzc2QjAwQjEyQTY4IC8qIFJlbmRlcldpZGdldC5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJOTM3OTlFRjkwQkYyNzQzNjAwRDBGMjMwIC8qIFJlbmRlcldvcmRCcmVhay5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDc4RTA5NDcxN0QxNkUxQzAwNDIwQUExIC8qIFJUQ1ZvaWRSZXF1ZXN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODlDQ0M1MzBGNDRFOTgxMDBCNURBMTAgLyogUmVwbGFj
ZU5vZGVXaXRoU3BhbkNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTBBMDk5RTY0
OTIwMDU2RTU4MSAvKiBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNjg5Miw3ICsyNjg4Myw2IEBACiAJCQkJRTQ0NjE0NTEwQ0Q2OEEzNTAwRkFEQTc1IC8qIFJl
bmRlclZpZGVvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUE0ODY3MDk3RDkzMDIwMDk0QzlF
NCAvKiBSZW5kZXJWaWV3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NzFERkU1MEExNTM3NkIw
MEIxMkE2OCAvKiBSZW5kZXJXaWRnZXQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJOTM3OTlFRjgw
QkYyNzQzNjAwRDBGMjMwIC8qIFJlbmRlcldvcmRCcmVhay5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBODlDQ0M1MjBGNDRFOTgxMDBCNURBMTAgLyogUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMDkwOTlFNjQ5MjAwNTZFNTgxIC8qIFJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY1NUIzRENGMTI1MUYx
MkQwMDNFRjI2OSAvKiBSZXNldElucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTYwMjQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDks
NyBAQAogI2luY2x1ZGUgIkhUTUxUZW1wbGF0ZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudC5oIgogI2luY2x1ZGUgIk5vZGVUcmF2ZXJzYWwuaCIKLSNpbmNs
dWRlICJSZW5kZXJXb3JkQnJlYWsuaCIKKyNpbmNsdWRlICJSZW5kZXJCUi5oIgogI2luY2x1ZGUg
IlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRFdmVudExpc3RlbmVyLmgiCiAj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTc5MSw3ICs3OTEsNyBAQCBib29sIEhUTUxFbGVtZW50
OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0CiBSZW5kZXJPYmplY3QqIEhUTUxFbGVtZW50OjpjcmVh
dGVSZW5kZXJlcihSZW5kZXJBcmVuYSYgYXJlbmEsIFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKICAg
ICBpZiAoaGFzTG9jYWxOYW1lKHdiclRhZykpCi0gICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBS
ZW5kZXJXb3JkQnJlYWsodGhpcyk7CisgICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJC
Uih0aGlzKTsKICAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3QoKnRoaXMsIHN0
eWxlKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3gu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94
LmNwcAkocmV2aXNpb24gMTU2MDI1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZUZsb3dCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsMTAgKzEzNiwxMCBAQCB2b2lkIElu
bGluZUZsb3dCb3g6OmFkZFRvTGluZShJbmxpbmVCb3gqCiAgICAgICAgICAgICBpZiAoY2hpbGRT
dHlsZS0+aGFzVGV4dENvbWJpbmUoKSB8fCBjaGlsZFN0eWxlLT50ZXh0RW1waGFzaXNNYXJrKCkg
IT0gVGV4dEVtcGhhc2lzTWFya05vbmUpCiAgICAgICAgICAgICAgICAgc2hvdWxkQ2xlYXJEZXNj
ZW5kYW50c0hhdmVTYW1lTGluZUhlaWdodEFuZEJhc2VsaW5lID0gdHJ1ZTsKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIGlmIChjaGlsZC0+cmVuZGVyZXIoKS5pc0JSKCkpIHsKKyAgICAg
ICAgICAgIGlmIChjaGlsZC0+cmVuZGVyZXIoKS5pc0xpbmVCcmVhaygpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IFRoaXMgaXMgZHVtYi4gV2Ugb25seSB0dXJuIG9mZiBiZWNhdXNlIGN1
cnJlbnQgbGF5b3V0IHRlc3QgcmVzdWx0cyBleHBlY3QgdGhlIDxicj4gdG8gYmUgMC1oZWlnaHQg
b24gdGhlIGJhc2VsaW5lLgogICAgICAgICAgICAgICAgIC8vIE90aGVyIHRoYW4gbWFraW5nIGEg
emlsbGlvbiB0ZXN0cyBoYXZlIHRvIHJlZ2VuZXJhdGUgcmVzdWx0cywgdGhlcmUncyBubyByZWFz
b24gdG8gZGl0Y2ggdGhlIG9wdGltaXphdGlvbiBoZXJlLgotICAgICAgICAgICAgICAgIHNob3Vs
ZENsZWFyRGVzY2VuZGFudHNIYXZlU2FtZUxpbmVIZWlnaHRBbmRCYXNlbGluZSA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgc2hvdWxkQ2xlYXJEZXNjZW5kYW50c0hhdmVTYW1lTGluZUhlaWdodEFu
ZEJhc2VsaW5lID0gY2hpbGQtPnJlbmRlcmVyKCkuaXNCUigpOwogICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICBBU1NFUlQoaXNJbmxpbmVGbG93Qm94KCkpOwogICAgICAgICAg
ICAgICAgIElubGluZUZsb3dCb3gqIGNoaWxkRmxvd0JveCA9IHRvSW5saW5lRmxvd0JveChjaGls
ZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaAkocmV2
aXNpb24gMTU2MDI0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgIGlubGluZSBi
b29sIGF0VGV4dFBhcmFncmFwaFNlcGFyYXRvcigpCiAgICAgewogICAgICAgICByZXR1cm4gbV9v
YmogJiYgbV9vYmotPnByZXNlcnZlc05ld2xpbmUoKSAmJiBtX29iai0+aXNUZXh0KCkgJiYgdG9S
ZW5kZXJUZXh0KG1fb2JqKS0+dGV4dExlbmd0aCgpCi0gICAgICAgICAgICAmJiAhdG9SZW5kZXJU
ZXh0KG1fb2JqKS0+aXNXb3JkQnJlYWsoKSAmJiB0b1JlbmRlclRleHQobV9vYmopLT5jaGFyYWN0
ZXJBdChtX3BvcykgPT0gJ1xuJzsKKyAgICAgICAgICAgICYmIHRvUmVuZGVyVGV4dChtX29iaikt
PmNoYXJhY3RlckF0KG1fcG9zKSA9PSAnXG4nOwogICAgIH0KICAgICAKICAgICBpbmxpbmUgYm9v
bCBhdFBhcmFncmFwaFNlcGFyYXRvcigpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGlu
ZSB2b2lkIG5vdGlmeU9ic2VydmVyV2lsbEV4aQogc3RhdGljIGlubGluZSBib29sIGlzSXRlcmF0
b3JUYXJnZXQoUmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgQVNTRVJUKG9iamVjdCk7IC8v
IFRoZSBpdGVyYXRvciB3aWxsIG9mIGNvdXJzZSByZXR1cm4gMCwgYnV0IGl0cyBub3QgYW4gZXhw
ZWN0ZWQgYXJndW1lbnQgdG8gdGhpcyBmdW5jdGlvbi4KLSAgICByZXR1cm4gb2JqZWN0LT5pc1Rl
eHRPckJSKCkgfHwgb2JqZWN0LT5pc0Zsb2F0aW5nKCkgfHwgb2JqZWN0LT5pc091dE9mRmxvd1Bv
c2l0aW9uZWQoKSB8fCBvYmplY3QtPmlzUmVwbGFjZWQoKTsKKyAgICByZXR1cm4gb2JqZWN0LT5p
c1RleHQoKSB8fCBvYmplY3QtPmlzTGluZUJyZWFrKCkgfHwgb2JqZWN0LT5pc0Zsb2F0aW5nKCkg
fHwgb2JqZWN0LT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSB8fCBvYmplY3QtPmlzUmVwbGFjZWQo
KTsKIH0KIAogLy8gVGhpcyBlbnVtIGlzIG9ubHkgdXNlZCBmb3IgYmlkaU5leHRTaGFyZWQoKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJSLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQlIuY3BwCShyZXZpc2lvbiAxNTYwMjQp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQlIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiUmVuZGVyQlIuaCIKIAogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCisjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9j
ay5oIgogI2luY2x1ZGUgIlJvb3RJbmxpbmVCb3guaCIKICNpbmNsdWRlICJWaXNpYmxlUG9zaXRp
b24uaCIKQEAgLTMxLDEyICszMiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBj
b25zdCBpbnQgaW52YWxpZExpbmVIZWlnaHQgPSAtMTsKIAotUmVuZGVyQlI6OlJlbmRlckJSKEVs
ZW1lbnQqIGVsZW1lbnQpCitSZW5kZXJCUjo6UmVuZGVyQlIoSFRNTEVsZW1lbnQqIGVsZW1lbnQp
CiAgICAgOiBSZW5kZXJCb3hNb2RlbE9iamVjdChlbGVtZW50KQogICAgICwgbV9pbmxpbmVCb3hX
cmFwcGVyKG51bGxwdHIpCiAgICAgLCBtX2NhY2hlZExpbmVIZWlnaHQoaW52YWxpZExpbmVIZWln
aHQpCisgICAgLCBtX2lzV0JSKGVsZW1lbnQgJiYgZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFt
ZXM6OndiclRhZykpCiB7Ci0gICAgc2V0SXNCUigpOworICAgIHNldElzTGluZUJyZWFrKCk7CiB9
CiAKIFJlbmRlckJSOjp+UmVuZGVyQlIoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJSLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJSLmgJKHJldmlzaW9uIDE1NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCUi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxNiArMjYsMTggQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBIVE1MRWxlbWVudDsKIGNsYXNzIFBvc2l0aW9uOwogCisvLyBGSVhN
RTogUmVuYW1lIHRoaXMgdG8gUmVuZGVyTGluZUJyZWFrLgogY2xhc3MgUmVuZGVyQlIgRklOQUwg
OiBwdWJsaWMgUmVuZGVyQm94TW9kZWxPYmplY3QgewogcHVibGljOgotICAgIGV4cGxpY2l0IFJl
bmRlckJSKEVsZW1lbnQqKTsKKyAgICBleHBsaWNpdCBSZW5kZXJCUihIVE1MRWxlbWVudCopOwog
ICAgIHZpcnR1YWwgflJlbmRlckJSKCk7CiAKICAgICBzdGF0aWMgUmVuZGVyQlIqIGNyZWF0ZUFu
b255bW91cyhEb2N1bWVudCYpOwogCi0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3QgeyByZXR1cm4gIlJlbmRlckJSIjsgfQorICAgIHZpcnR1YWwgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNXQlIgPyAiUmVuZGVyV29yZEJyZWFrIiA6
ICJSZW5kZXJCUiI7IH0KIAogICAgIElubGluZUJveCogY3JlYXRlSW5saW5lQm94KCk7CiAgICAg
SW5saW5lQm94KiBpbmxpbmVCb3hXcmFwcGVyKCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVCb3hX
cmFwcGVyOyB9CkBAIC01MCw2ICs1Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYWJz
b2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBPVkVS
UklERTsKIAogcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNXQlIoKSBjb25zdCBPVkVSUklE
RSB7IHJldHVybiBtX2lzV0JSOyB9CisKICAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3Np
dGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBp
bnQgY2FyZXRNaW5PZmZzZXQoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGludCBjYXJl
dE1heE9mZnNldCgpIGNvbnN0IE9WRVJSSURFOwpAQCAtNzksMjkgKzgzLDMwIEBAIHByaXZhdGU6
CiAKICAgICBJbmxpbmVCb3gqIG1faW5saW5lQm94V3JhcHBlcjsKICAgICBtdXRhYmxlIGludCBt
X2NhY2hlZExpbmVIZWlnaHQ7CisgICAgYm9vbCBtX2lzV0JSOwogfTsKIAogaW5saW5lIFJlbmRl
ckJSJiB0b1JlbmRlckJSKFJlbmRlck9iamVjdCYgb2JqZWN0KQogeyAKLSAgICBBU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTihvYmplY3QuaXNCUigpKTsKKyAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTihvYmplY3QuaXNMaW5lQnJlYWsoKSk7CiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFJlbmRlckJSJj4ob2JqZWN0KTsKIH0KIAogaW5saW5lIGNvbnN0IFJlbmRlckJS
JiB0b1JlbmRlckJSKGNvbnN0IFJlbmRlck9iamVjdCYgb2JqZWN0KQogewotICAgIEFTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKG9iamVjdC5pc0JSKCkpOworICAgIEFTU0VSVF9XSVRI
X1NFQ1VSSVRZX0lNUExJQ0FUSU9OKG9iamVjdC5pc0xpbmVCcmVhaygpKTsKICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgUmVuZGVyQlImPihvYmplY3QpOwogfQogCiBpbmxpbmUgUmVuZGVy
QlIqIHRvUmVuZGVyQlIoUmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7IAotICAgIEFTU0VSVF9XSVRI
X1NFQ1VSSVRZX0lNUExJQ0FUSU9OKG9iamVjdC0+aXNCUigpKTsKKyAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTihvYmplY3QtPmlzTGluZUJyZWFrKCkpOwogICAgIHJldHVybiBz
dGF0aWNfY2FzdDxSZW5kZXJCUio+KG9iamVjdCk7CiB9CiAKIGlubGluZSBjb25zdCBSZW5kZXJC
UiogdG9SZW5kZXJCUihjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCkKIHsKLSAgICBBU1NFUlRf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihvYmplY3QtPmlzQlIoKSk7CisgICAgQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04ob2JqZWN0LT5pc0xpbmVCcmVhaygpKTsKICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgUmVuZGVyQlIqPihvYmplY3QpOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDE1NjAyNCkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUxMDYsNyArNTEwNiw3IEBAIFJlbmRlck9iamVjdCogSW5saW5lTWluTWF4SXRlcmF0b3I6
Om5leHQKICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAg
ICBpZiAoIXJlc3VsdC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgKHJlc3VsdC0+aXNUZXh0
T3JCUigpIHx8IHJlc3VsdC0+aXNGbG9hdGluZygpIHx8IHJlc3VsdC0+aXNSZXBsYWNlZCgpIHx8
IHJlc3VsdC0+aXNSZW5kZXJJbmxpbmUoKSkpCisgICAgICAgIGlmICghcmVzdWx0LT5pc091dE9m
Rmxvd1Bvc2l0aW9uZWQoKSAmJiAocmVzdWx0LT5pc1RleHQoKSB8fCByZXN1bHQtPmlzTGluZUJy
ZWFrKCkgfHwgcmVzdWx0LT5pc0Zsb2F0aW5nKCkgfHwgcmVzdWx0LT5pc1JlcGxhY2VkKCkgfHwg
cmVzdWx0LT5pc1JlbmRlcklubGluZSgpKSkKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
CiAgICAgICAgIGN1cnJlbnQgPSByZXN1bHQ7CkBAIC01MjUwLDExICs1MjUwLDE3IEBAIHZvaWQg
UmVuZGVyQmxvY2s6OmNvbXB1dGVJbmxpbmVQcmVmZXJyZWQKICAgICAgICAgICAgIC8vIHZhbHVl
cyAoaWYgYW55IG9mIHRoZW0gYXJlIGxhcmdlciB0aGFuIG91ciBjdXJyZW50IG1pbi9tYXgpLiAg
V2UgdGhlbiBsb29rIGF0CiAgICAgICAgICAgICAvLyB0aGUgd2lkdGggb2YgdGhlIGxhc3Qgbm9u
LWJyZWFrYWJsZSBydW4gYW5kIHVzZSB0aGF0IHRvIHN0YXJ0IGEgbmV3IGxpbmUKICAgICAgICAg
ICAgIC8vICh1bmxlc3Mgd2UgZW5kIGluIHdoaXRlc3BhY2UpLgorCiAgICAgICAgICAgICBSZW5k
ZXJTdHlsZSogY2hpbGRTdHlsZSA9IGNoaWxkLT5zdHlsZSgpOwogICAgICAgICAgICAgZmxvYXQg
Y2hpbGRNaW4gPSAwOwogICAgICAgICAgICAgZmxvYXQgY2hpbGRNYXggPSAwOwogCiAgICAgICAg
ICAgICBpZiAoIWNoaWxkLT5pc1RleHQoKSkgeworICAgICAgICAgICAgICAgIGlmIChjaGlsZC0+
aXNMaW5lQnJlYWtPcHBvcnR1bml0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVBy
ZWZlcnJlZFdpZHRoKG1pbkxvZ2ljYWxXaWR0aCwgaW5saW5lTWluKTsKKyAgICAgICAgICAgICAg
ICAgICAgaW5saW5lTWluID0gMDsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIC8vIENhc2UgKDEpIGFuZCAoMikuICBJbmxp
bmUgcmVwbGFjZWQgYW5kIGlubGluZSBmbG93IGVsZW1lbnRzLgogICAgICAgICAgICAgICAgIGlm
IChjaGlsZC0+aXNSZW5kZXJJbmxpbmUoKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBBZGQg
aW4gcGFkZGluZy9ib3JkZXIvbWFyZ2luIGZyb20gdGhlIGFwcHJvcHJpYXRlIHNpZGUgb2YKQEAg
LTUzNTIsMTIgKzUzNTgsNiBAQCB2b2lkIFJlbmRlckJsb2NrOjpjb21wdXRlSW5saW5lUHJlZmVy
cmVkCiAgICAgICAgICAgICAgICAgLy8gQ2FzZSAoMykuIFRleHQuCiAgICAgICAgICAgICAgICAg
UmVuZGVyVGV4dCogdCA9IHRvUmVuZGVyVGV4dChjaGlsZCk7CiAKLSAgICAgICAgICAgICAgICBp
ZiAodC0+aXNXb3JkQnJlYWsoKSkgewotICAgICAgICAgICAgICAgICAgICB1cGRhdGVQcmVmZXJy
ZWRXaWR0aChtaW5Mb2dpY2FsV2lkdGgsIGlubGluZU1pbik7Ci0gICAgICAgICAgICAgICAgICAg
IGlubGluZU1pbiA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgICAgIH0KLQogICAgICAgICAgICAgICAgIGlmICh0LT5zdHlsZSgpLT5oYXNUZXh0Q29tYmlu
ZSgpICYmIHQtPmlzQ29tYmluZVRleHQoKSkKICAgICAgICAgICAgICAgICAgICAgdG9SZW5kZXJD
b21iaW5lVGV4dCgqdCkuY29tYmluZVRleHQoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAJKHJldmlzaW9uIDE1NjAy
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNzAsNyArMjcwLDcgQEAgc3RhdGljIGlubGluZSBJbmxpbmVC
b3gqIGNyZWF0ZUlubGluZUJveAogICAgIGlmIChvYmotPmlzQm94KCkpCiAgICAgICAgIHJldHVy
biB0b1JlbmRlckJveChvYmopLT5jcmVhdGVJbmxpbmVCb3goKTsKIAotICAgIGlmIChvYmotPmlz
QlIoKSkgeworICAgIGlmIChvYmotPmlzTGluZUJyZWFrKCkpIHsKICAgICAgICAgSW5saW5lQm94
KiBpbmxpbmVCb3ggPSB0b1JlbmRlckJSKG9iaiktPmNyZWF0ZUlubGluZUJveCgpOwogICAgICAg
ICAvLyBXZSBvbmx5IHRyZWF0IGEgYm94IGFzIHRleHQgZm9yIGEgPGJyPiBpZiB3ZSBhcmUgb24g
YSBsaW5lIGJ5IG91cnNlbGYgb3IgaW4gc3RyaWN0IG1vZGUKICAgICAgICAgLy8gKE5vdGUgdGhl
IHVzZSBvZiBzdHJpY3QgbW9kZS4gSW4gImFsbW9zdCBzdHJpY3QiIG1vZGUsIHdlIGRvbid0IHRy
ZWF0IHRoZSBib3ggZm9yIDxicj4gYXMgdGV4dC4pCkBAIC04NTQsNyArODU0LDcgQEAgQmlkaVJ1
biogUmVuZGVyQmxvY2s6OmNvbXB1dGVJbmxpbmVEaXJlYwogICAgICAgICBpZiAoci0+bV9zdGFy
dHNTZWdtZW50KQogICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKLSAgICAgICAgaWYgKCFyLT5t
X2JveCB8fCByLT5tX29iamVjdC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgfHwgci0+bV9ib3gt
PmlzTGluZUJyZWFrKCkpCisgICAgICAgIGlmICghci0+bV9ib3ggfHwgci0+bV9vYmplY3QtPmlz
T3V0T2ZGbG93UG9zaXRpb25lZCgpIHx8IHItPm1fb2JqZWN0LT5pc0xpbmVCcmVhaygpIHx8IHIt
Pm1fYm94LT5pc0xpbmVCcmVhaygpKQogICAgICAgICAgICAgY29udGludWU7IC8vIFBvc2l0aW9u
ZWQgb2JqZWN0cyBhcmUgb25seSBwYXJ0aWNpcGF0aW5nIHRvIGZpZ3VyZSBvdXQgdGhlaXIKICAg
ICAgICAgICAgICAgICAgICAgICAvLyBjb3JyZWN0IHN0YXRpYyB4IHBvc2l0aW9uLiAgVGhleSBo
YXZlIG5vIGVmZmVjdCBvbiB0aGUgd2lkdGguCiAgICAgICAgICAgICAgICAgICAgICAgLy8gU2lt
aWxhcmx5LCBsaW5lIGJyZWFrIGJveGVzIGhhdmUgbm8gZWZmZWN0IG9uIHRoZSB3aWR0aC4KQEAg
LTI1NDYsOCArMjU0Niw2IEBAIHN0YXRpYyBib29sIHRleHRCZWdpbnNXaXRoQnJlYWthYmxlUG9z
aXQKIHsKICAgICBBU1NFUlQobmV4dC0+aXNUZXh0KCkpOwogICAgIFJlbmRlclRleHQqIG5leHRU
ZXh0ID0gdG9SZW5kZXJUZXh0KG5leHQpOwotICAgIGlmIChuZXh0VGV4dC0+aXNXb3JkQnJlYWso
KSkKLSAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKCFuZXh0VGV4dC0+dGV4dExlbmd0aCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgVUNoYXIgYyA9IG5leHRUZXh0LT5jaGFyYWN0
ZXJBdCgwKTsKQEAgLTI1NjgsNiArMjU2Niw5IEBAIHN0YXRpYyBib29sIGNhbkJyZWFrQXRUaGlz
UG9zaXRpb24oYm9vbCAKICAgICBpZiAoYXV0b1dyYXAgJiYgY3VycmVudENoYXJhY3RlcklzU3Bh
Y2UpCiAgICAgICAgIHJldHVybiB0cnVlOwogCisgICAgaWYgKG5leHQgJiYgbmV4dC0+aXNMaW5l
QnJlYWtPcHBvcnR1bml0eSgpKQorICAgICAgICByZXR1cm4gYXV0b1dyYXA7CisKICAgICBib29s
IG5leHRJc1RleHQgPSAobmV4dCAmJiAoY3VycmVudC5tX29iai0+aXNUZXh0KCkgfHwgaXNFbXB0
eUlubGluZShjdXJyZW50Lm1fb2JqKSkgJiYgbmV4dC0+aXNUZXh0KCkgJiYgKGF1dG9XcmFwIHx8
IG5leHQtPnN0eWxlKCktPmF1dG9XcmFwKCkpKTsKICAgICBpZiAoIW5leHRJc1RleHQpCiAgICAg
ICAgIHJldHVybiBhdXRvV3JhcDsKQEAgLTI4NzcsMTEgKzI4NzgsNiBAQCBJbmxpbmVJdGVyYXRv
ciBSZW5kZXJCbG9jazo6TGluZUJyZWFrZXI6CiAgICAgICAgICAgICB9CiAjZW5kaWYKIAotICAg
ICAgICAgICAgaWYgKHQtPmlzV29yZEJyZWFrKCkpIHsKLSAgICAgICAgICAgICAgICBjb21taXRM
aW5lQnJlYWtBdEN1cnJlbnRXaWR0aCh3aWR0aCwgbEJyZWFrLCBjdXJyZW50Lm1fb2JqKTsKLSAg
ICAgICAgICAgICAgICBBU1NFUlQoY3VycmVudC5tX3BvcyA9PSB0LT50ZXh0TGVuZ3RoKCkpOwot
ICAgICAgICAgICAgfQotCiAgICAgICAgICAgICBpZiAocmVuZGVyVGV4dEluZm8ubV90ZXh0ICE9
IHQpIHsKICAgICAgICAgICAgICAgICB1cGRhdGVDb3VudGVySWZOZWVkZWQodCk7CiAgICAgICAg
ICAgICAgICAgcmVuZGVyVGV4dEluZm8ubV90ZXh0ID0gdDsKQEAgLTMxNTYsNyArMzE1Miw5IEBA
IElubGluZUl0ZXJhdG9yIFJlbmRlckJsb2NrOjpMaW5lQnJlYWtlcjoKICAgICAgICAgICAgICAg
ICBpZiAobV9oeXBoZW5hdGVkKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVuZDsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgfSBlbHNlCisgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudC5tX29i
ai0+aXNMaW5lQnJlYWtPcHBvcnR1bml0eSgpKQorICAgICAgICAgICAgY29tbWl0TGluZUJyZWFr
QXRDdXJyZW50V2lkdGgod2lkdGgsIGxCcmVhaywgY3VycmVudC5tX29iaik7CisgICAgICAgIGVs
c2UKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCiAgICAgICAgIGJvb2wgY2Fu
QnJlYWtIZXJlID0gY2FuQnJlYWtBdFRoaXNQb3NpdGlvbihhdXRvV3JhcCwgd2lkdGgsIGxCcmVh
aywgbmV4dCwgY3VycmVudCwgY3VycldTLCBjdXJyZW50Q2hhcmFjdGVySXNTcGFjZSwgYXV0b1dy
YXBXYXNFdmVyVHJ1ZU9uTGluZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oCShyZXZpc2lvbiAxNTYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2OCw3ICs1NjgsOSBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc1Bvc2l0aW9uZWQoKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5pc1Bv
c2l0aW9uZWQoKTsgfQogCiAgICAgYm9vbCBpc1RleHQoKSBjb25zdCAgeyByZXR1cm4gIW1fYml0
ZmllbGRzLmlzQm94KCkgJiYgbV9iaXRmaWVsZHMuaXNUZXh0T3JSZW5kZXJWaWV3KCk7IH0KLSAg
ICBib29sIGlzQlIoKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5pc0JSKCk7IH0KKyAgICBi
b29sIGlzTGluZUJyZWFrKCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuaXNMaW5lQnJlYWso
KTsgfQorICAgIGJvb2wgaXNCUigpIGNvbnN0IHsgcmV0dXJuIGlzTGluZUJyZWFrKCkgJiYgIWlz
V0JSKCk7IH0KKyAgICBib29sIGlzTGluZUJyZWFrT3Bwb3J0dW5pdHkoKSBjb25zdCB7IHJldHVy
biBpc0xpbmVCcmVhaygpICYmIGlzV0JSKCk7IH0KICAgICBib29sIGlzVGV4dE9yQlIoKSBjb25z
dCB7IHJldHVybiBpc1RleHQoKSB8fCBpc0JSKCk7IH0KICAgICBib29sIGlzQm94KCkgY29uc3Qg
eyByZXR1cm4gbV9iaXRmaWVsZHMuaXNCb3goKTsgfQogICAgIGJvb2wgaXNSZW5kZXJWaWV3KCkg
Y29uc3QgIHsgcmV0dXJuIG1fYml0ZmllbGRzLmlzQm94KCkgJiYgbV9iaXRmaWVsZHMuaXNUZXh0
T3JSZW5kZXJWaWV3KCk7IH0KQEAgLTcwMiw3ICs3MDQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIGNvbXB1dGVCYWNrZ3JvdW5kSXNLbm93blRvQmVPYnNjdXJlZCgpIHsgcmV0dXJuIGZh
bHNlOyB9CiAKICAgICB2b2lkIHNldElzVGV4dCgpIHsgQVNTRVJUKCFpc0JveCgpKTsgbV9iaXRm
aWVsZHMuc2V0SXNUZXh0T3JSZW5kZXJWaWV3KHRydWUpOyB9Ci0gICAgdm9pZCBzZXRJc0JSKCkg
eyBtX2JpdGZpZWxkcy5zZXRJc0JSKHRydWUpOyB9CisgICAgdm9pZCBzZXRJc0xpbmVCcmVhaygp
IHsgbV9iaXRmaWVsZHMuc2V0SXNMaW5lQnJlYWsodHJ1ZSk7IH0KICAgICB2b2lkIHNldElzQm94
KCkgeyBtX2JpdGZpZWxkcy5zZXRJc0JveCh0cnVlKTsgfQogICAgIHZvaWQgc2V0SXNSZW5kZXJW
aWV3KCkgeyBBU1NFUlQoaXNCb3goKSk7IG1fYml0ZmllbGRzLnNldElzVGV4dE9yUmVuZGVyVmll
dyh0cnVlKTsgfQogICAgIHZvaWQgc2V0UmVwbGFjZWQoYm9vbCBiID0gdHJ1ZSkgeyBtX2JpdGZp
ZWxkcy5zZXRJc1JlcGxhY2VkKGIpOyB9CkBAIC0xMDUwLDYgKzEwNTIsOCBAQCBwcml2YXRlOgog
CiAgICAgTm9kZSogZ2VuZXJhdGluZ1BzZXVkb0hvc3RFbGVtZW50KCkgY29uc3Q7CiAKKyAgICB2
aXJ0dWFsIGJvb2wgaXNXQlIoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4g
ZmFsc2U7IH0KKwogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQogICAgIHZvaWQgcmVtb3ZlU2hhcGVJ
bWFnZUNsaWVudChTaGFwZVZhbHVlKik7CiAjZW5kaWYKQEAgLTExMDIsNyArMTEwNiw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAsIG1faXNCb3goZmFsc2UpCiAgICAgICAgICAgICAsIG1faXNJ
bmxpbmUodHJ1ZSkKICAgICAgICAgICAgICwgbV9pc1JlcGxhY2VkKGZhbHNlKQotICAgICAgICAg
ICAgLCBtX2lzQlIoZmFsc2UpCisgICAgICAgICAgICAsIG1faXNMaW5lQnJlYWsoZmFsc2UpCiAg
ICAgICAgICAgICAsIG1faG9yaXpvbnRhbFdyaXRpbmdNb2RlKHRydWUpCiAgICAgICAgICAgICAs
IG1faXNEcmFnZ2luZyhmYWxzZSkKICAgICAgICAgICAgICwgbV9oYXNMYXllcihmYWxzZSkKQEAg
LTExMzQsNyArMTEzOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIEFERF9CT09MRUFOX0JJVEZJRUxE
KGlzQm94LCBJc0JveCk7CiAgICAgICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKGlzSW5saW5lLCBJ
c0lubGluZSk7CiAgICAgICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKGlzUmVwbGFjZWQsIElzUmVw
bGFjZWQpOwotICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVMRChpc0JSLCBJc0JSKTsKKyAgICAg
ICAgQUREX0JPT0xFQU5fQklURklFTEQoaXNMaW5lQnJlYWssIElzTGluZUJyZWFrKTsKICAgICAg
ICAgQUREX0JPT0xFQU5fQklURklFTEQoaG9yaXpvbnRhbFdyaXRpbmdNb2RlLCBIb3Jpem9udGFs
V3JpdGluZ01vZGUpOwogICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVMRChpc0RyYWdnaW5nLCBJ
c0RyYWdnaW5nKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNw
cAkocmV2aXNpb24gMTU2MDI1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODksMTEgKzE4OSw2IEBAIGJvb2wgUmVuZGVyVGV4
dDo6aXNUZXh0RnJhZ21lbnQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBS
ZW5kZXJUZXh0Ojppc1dvcmRCcmVhaygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQot
CiB2b2lkIFJlbmRlclRleHQ6OnVwZGF0ZU5lZWRzVHJhbnNjb2RpbmcoKQogewogICAgIGNvbnN0
IFRleHRFbmNvZGluZyogZW5jb2RpbmcgPSBkb2N1bWVudCgpLmRlY29kZXIoKSA/ICZkb2N1bWVu
dCgpLmRlY29kZXIoKS0+ZW5jb2RpbmcoKSA6IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0LmgJKHJldmlzaW9uIDE1NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDYgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IE9WRVJSSURFOwog
CiAgICAgdmlydHVhbCBib29sIGlzVGV4dEZyYWdtZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBi
b29sIGlzV29yZEJyZWFrKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gb3JpZ2luYWxUZXh0KCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAJKHJldmlzaW9uIDE1NjAyNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzA4LDcgKzMwOCw3IEBAIHZvaWQgUmVuZGVyVHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJPYmpl
Y3QKICAgICAgICAgICAgICAgICB0cyA8PCAiIFt0ZXh0U3Ryb2tlV2lkdGg9IiA8PCBvLnN0eWxl
KCktPnRleHRTdHJva2VXaWR0aCgpIDw8ICJdIjsKICAgICAgICAgfQogCi0gICAgICAgIGlmICgh
by5pc0JveE1vZGVsT2JqZWN0KCkgfHwgby5pc0JSKCkpCisgICAgICAgIGlmICghby5pc0JveE1v
ZGVsT2JqZWN0KCkgfHwgby5pc0xpbmVCcmVhaygpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0JiBib3ggPSB0b1JlbmRlckJveE1vZGVs
T2JqZWN0KG8pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldvcmRCcmVh
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldvcmRC
cmVhay5jcHAJKHJldmlzaW9uIDE1NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJXb3JkQnJlYWsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAq
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlbmRlcldvcmRCcmVhay5o
IgotCi0jaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1S
ZW5kZXJXb3JkQnJlYWs6OlJlbmRlcldvcmRCcmVhayhIVE1MRWxlbWVudCogZWxlbWVudCkKLSAg
ICA6IFJlbmRlclRleHQoZWxlbWVudCwgU3RyaW5nSW1wbDo6ZW1wdHkoKSkKLXsKLX0KLQotY29u
c3QgY2hhciogUmVuZGVyV29yZEJyZWFrOjpyZW5kZXJOYW1lKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gIlJlbmRlcldvcmRCcmVhayI7Ci19Ci0KLWJvb2wgUmVuZGVyV29yZEJyZWFrOjppc1dvcmRC
cmVhaygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLX0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXb3JkQnJlYWsuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV29yZEJyZWFrLmgJKHJldmlzaW9uIDE1NjAyNCkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXb3JkQnJlYWsuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKgotICovCi0KLSNpZm5kZWYgUmVuZGVyV29yZEJyZWFr
X2gKLSNkZWZpbmUgUmVuZGVyV29yZEJyZWFrX2gKLQotI2luY2x1ZGUgIlJlbmRlclRleHQuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBIVE1MRWxlbWVudDsKLQotY2xhc3MgUmVu
ZGVyV29yZEJyZWFrIEZJTkFMIDogcHVibGljIFJlbmRlclRleHQgewotcHVibGljOgotICAgIGV4
cGxpY2l0IFJlbmRlcldvcmRCcmVhayhIVE1MRWxlbWVudCopOwotCi0gICAgdmlydHVhbCBjb25z
dCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzV29yZEJyZWFr
KCkgY29uc3Q7Ci19OwotCi19Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcmluZ0FsbEluT25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyaW5nQWxsSW5PbmUuY3BwCShyZXZpc2lvbiAxNTYwMjQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyaW5nQWxsSW5PbmUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTgsNyArMTE4LDYgQEAKICNpbmNsdWRlICJSZW5kZXJWaWRlby5jcHAiCiAjaW5jbHVk
ZSAiUmVuZGVyVmlldy5jcHAiCiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmNwcCIKLSNpbmNsdWRl
ICJSZW5kZXJXb3JkQnJlYWsuY3BwIgogI2luY2x1ZGUgIlJvb3RJbmxpbmVCb3guY3BwIgogI2lu
Y2x1ZGUgIlNjcm9sbEJlaGF2aW9yLmNwcCIKICNpbmNsdWRlICJicmVha19saW5lcy5jcHAiCg==
</data>
<flag name="review"
          id="234137"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211991</attachid>
            <date>2013-09-18 06:50:43 -0700</date>
            <delta_ts>2013-09-18 07:30:11 -0700</delta_ts>
            <desc>more correct patch replacing many isBR() check with isLineBreak() checks</desc>
            <filename>wbr-non-text-6.patch</filename>
            <type>text/plain</type>
            <size>52636</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjAzNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMyBAQAorMjAxMy0wOS0xOCAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFJlbmRlcldvcmRC
cmVhaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIx
NTQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVt
b3ZlIFJlbmRlcldvcmRCcmVhayBhbmQgbWFrZSBpdCBhIGJpdCBpbiBSZW5kZXJCUiBpbnN0ZWFk
LgorICAgICAgICAKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50Ojp1cGRhdGVIb3ZlckFjdGl2ZVN0YXRlKToKKyAgICAgICAgKiBkb20vUG9z
aXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFzSW5saW5lQm94V3JhcHBlcik6CisgICAg
ICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6aGFzUmVuZGVyZWROb25Bbm9ueW1vdXNEZXNjZW5kYW50
c1dpdGhIZWlnaHQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmZpbmRGaXJzdE1hcmthYmxlKToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppZ25vcmVzQ29udGFpbmVyQ2xpcCk6CisgICAgICAg
ICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6
Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVCb3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5saW5lQm94Ojpsb2dpY2FsSGVpZ2h0KToKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZUJveDo6YmFzZWxpbmVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVCb3g6OmxpbmVIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lQm94OjpkZWxldGVM
aW5lKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUJveDo6ZXh0cmFjdExpbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5saW5lQm94OjphdHRhY2hMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUJveDo6bm9kZUF0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVCb3guaDoK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUJveDo6aXNMaW5lQnJlYWspOgorICAgICAgICAqIHJl
bmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dC
b3g6OmFkZFRvTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94Ojpjb21wdXRl
T3ZlcmZsb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oOgorICAgICAg
ICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OmF0VGV4dFBhcmFncmFwaFNlcGFyYXRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjppc0l0ZXJhdG9yVGFyZ2V0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQlIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQlI6OlJlbmRlckJSKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQlIuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvUmVuZGVy
QlIpOgorICAgIAorICAgICAgICAgICAgUmVuZGVyQlIgbm93IHJlcHJlc2VudHMgYm90aCBoYXJk
IGFuZCBzb2Z0IGxpbmUgYnJlYWtzLiBJdCB3aWxsIGJlIHJlbmFtZWQgdG8gUmVuZGVyTGluZUJy
ZWFrIGxhdGVyLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklubGluZU1pbk1heEl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrOjpjb21wdXRlSW5saW5lUHJlZmVycmVkTG9naWNhbFdpZHRocyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVJbmxpbmVCb3hGb3JSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpk
aXJ0eUxpbmVCb3hlc0ZvclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2Nr
Ojpjb21wdXRlQmxvY2tEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrRmxvdzo6bGF5b3V0SW5saW5lQ2hpbGRyZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6dGV4dEJlZ2luc1dpdGhCcmVha2FibGVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpjYW5CcmVha0F0VGhpc1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2Nr
OjpMaW5lQnJlYWtlcjo6bmV4dFNlZ21lbnRCcmVhayk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmdlbmVyYXRl
Q3VsbGVkTGluZUJveFJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6Y3Vs
bGVkSW5saW5lRmlyc3RMaW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6
Y3VsbGVkSW5saW5lTGFzdExpbmVCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5l
OjpkaXJ0eUxpbmVCb3hlcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpbmVCb3hMaXN0OjpkaXJ0eUxpbmVzRnJv
bUNoYW5nZWRDaGlsZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojppc0xpbmVCcmVhayk6CisgICAgICAgIAorICAg
ICAgICAgICAgVGhpcyBiaXQgY292ZXJzIGJvdGggQlIgYW5kIFdCUi4KKworICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyT2JqZWN0Ojppc0JSKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6aXNMaW5lQnJlYWtPcHBvcnR1bml0eSk6CisgICAgICAgIAorICAgICAgICAgICAgUmVuYW1l
IGlzV29yZEJyZWFrIHRvIGlzTGluZUJyZWFrT3Bwb3J0dW5pdHkuIFRoaXMgbWF0Y2hlcyBIVE1M
NSBzcGVjIHRlcm1pbm9sb2d5LgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Omlz
VGV4dE9yTGluZUJyZWFrKToKKyAgICAgICAgCisgICAgICAgICAgICBTaW5jZSBXQlIgdXNlZCB0
byBiZSBUZXh0IHdlIHdhbnQgdGhpcyBjaGVjayB0byBzdGlsbCBjb3ZlciBpdCB0b28uIFJlbmFt
ZWQgZnJvbSBpc1RleHRPckJSLgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnNl
dElzTGluZUJyZWFrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aXNXQlIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpSZW5kZXJPYmplY3RCaXRmaWVsZHM6OlJl
bmRlck9iamVjdEJpdGZpZWxkcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdENo
aWxkTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3RDaGlsZExpc3Q6OnJl
bW92ZUNoaWxkTm9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUFzVGV4dDo6d3Jp
dGVSZW5kZXJPYmplY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJXb3JkQnJlYWsuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJXb3JkQnJlYWsuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyaW5nQWxsSW5PbmUuY3BwOgorICAgICAgICAq
IHJlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxp
bmVCb3g6OmFzY2VudEFuZERlc2NlbnRGb3JCb3gpOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElu
bGluZUJveDo6dmVydGljYWxQb3NpdGlvbkZvckJveCk6CisgICAgICAgIChXZWJDb3JlOjpSb290
SW5saW5lQm94OjppbmNsdWRlTGVhZGluZ0ZvckJveCk6CisgICAgICAgIChXZWJDb3JlOjpSb290
SW5saW5lQm94OjppbmNsdWRlRm9udEZvckJveCk6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5s
aW5lQm94OjppbmNsdWRlR2x5cGhzRm9yQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxp
bmVCb3g6OmluY2x1ZGVNYXJnaW5Gb3JCb3gpOgorCiAyMDEzLTA5LTE4ICBHdXJwcmVldCBLYXVy
ICA8ay5ndXJwcmVldEBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbTWF0aE1MXSBJbXBsZW1lbnQg
dGhlIHN1YnNjcmlwdHNoaWZ0IGFuZCBzdXBlcnNjcmlwdHNoaWZ0IGF0dHJpYnV0ZXMKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNTYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjE5OSw3ICsyMTk5LDYgQEAgc2V0KFdl
YkNvcmVfU09VUkNFUwogICAgIHJlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAKICAgICByZW5kZXJp
bmcvUmVuZGVyVmlldy5jcHAKICAgICByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAotICAgIHJl
bmRlcmluZy9SZW5kZXJXb3JkQnJlYWsuY3BwCiAgICAgcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3gu
Y3BwCiAgICAgcmVuZGVyaW5nL1Njcm9sbEJlaGF2aW9yLmNwcAogICAgIHJlbmRlcmluZy9UZXh0
QXV0b3NpemVyLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lv
biAxNTYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5n
IGNvcHkpCkBAIC00NTU0LDggKzQ1NTQsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJXaWRnZXQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
V2lkZ2V0LmggXAotCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXb3JkQnJlYWsuY3Bw
IFwKLQlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV29yZEJyZWFrLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Nj
cm9sbEJlaGF2aW9yLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDE1NjAyNCkKKysr
IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTEyMjUsNyArMTIy
NSw2IEBAIFNPVVJDRVMgKz0gXAogICAgIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcCBc
CiAgICAgcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVyV2lk
Z2V0LmNwcCBcCi0gICAgcmVuZGVyaW5nL1JlbmRlcldvcmRCcmVhay5jcHAgXAogICAgIHJlbmRl
cmluZy9Sb290SW5saW5lQm94LmNwcCBcCiAgICAgcmVuZGVyaW5nL1Njcm9sbEJlaGF2aW9yLmNw
cCBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuY3BwIFwKQEAgLTI0OTMsNyAr
MjQ5Miw2IEBAIEhFQURFUlMgKz0gXAogICAgIHJlbmRlcmluZy9SZW5kZXJWaWRlby5oIFwKICAg
ICByZW5kZXJpbmcvUmVuZGVyVmlldy5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0Lmgg
XAotICAgIHJlbmRlcmluZy9SZW5kZXJXb3JkQnJlYWsuaCBcCiAgICAgcmVuZGVyaW5nL1Jvb3RJ
bmxpbmVCb3guaCBcCiAgICAgcmVuZGVyaW5nL1Njcm9sbEJlaGF2aW9yLmggXAogICAgIHJlbmRl
cmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCShyZXZpc2lvbiAxNTYwMjQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDk4MywyMCArMTA5ODMsNiBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMici
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xSZW5kZXJXb3JkQnJlYWsuY3BwIj4KLSAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNh
aXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19X
aW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
U3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNh
aXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
X1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJv
ZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJv
ZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICA8L0NsQ29tcGlsZT4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xSb290SW5saW5lQm94LmNwcCI+
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC0yMDA3OCw3
ICsyMDA2NCw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUmVuZGVy
VmlkZW8uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xSZW5kZXJW
aWV3LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUmVuZGVyV2lk
Z2V0LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUmVuZGVyV29y
ZEJyZWFrLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUm9vdElu
bGluZUJveC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFNjcm9s
bEJlaGF2aW9yLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc3Zn
XFNWR01hcmtlckRhdGEuaCIgLz4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1NjAyNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMTQyLDcgKzE0Miw2IEBACiAJCTA3NjMwNkUwMTdFMTYwODkwMDVBN0M0RSAvKiBKU1NvdXJj
ZUluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDc2MzA2REUxN0UxNjA4OTAwNUE3QzRFIC8qIEpTU291cmNlSW5mby5jcHAgKi87IH07CiAJCTA3
NjMwNkUxMTdFMTYwODkwMDVBN0M0RSAvKiBKU1NvdXJjZUluZm8uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NjMwNkRGMTdFMTYwODkwMDVBN0M0RSAv
KiBKU1NvdXJjZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwNzYzMDZFMzE3RTIyQTQzMDA1QTdDNEUgLyogTWVkaWFTdHJlYW1UcmFja1Nv
dXJjZXNSZXF1ZXN0Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzYzMDZFMjE3RTIyQTQzMDA1QTdDNEUgLyogTWVkaWFTdHJlYW1UcmFja1Nv
dXJjZXNSZXF1ZXN0Q2xpZW50LmggKi87IH07Ci0JCTA3NjMwNkU3MTdFMjUxRUMwMDVBN0M0RSAv
KiBKU01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2tDdXN0b20uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NjMwNkU2MTdFMjUxRUMwMDVBN0M0
RSAvKiBKU01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2tDdXN0b20uaCAqLzsgfTsKIAkJ
MDc2OTcwODYxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2OTcwODQxNDYzQUQ4NzAwRjUw
MkNGIC8qIFRleHRUcmFja0xpc3QuY3BwICovOyB9OwogCQkwNzY5NzA4NzE0NjNBRDg3MDBGNTAy
Q0YgLyogVGV4dFRyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDc2OTcwODUxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuaCAq
LzsgfTsKIAkJMDc2RjBEMEUxMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDc2RjBEMEExMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbi5oICovOyB9OwpAQCAtMjk1OCw4ICsyOTU3LDYgQEAKIAkJOTM2MjY0MEIwREUxMTM3RDAw
OUQ1QTAwIC8qIENTU1JlZmxlY3Rpb25EaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNjI2NDBBMERFMTEzN0QwMDlENUEwMCAvKiBDU1NS
ZWZsZWN0aW9uRGlyZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJOTM3MDkxOEQxNDE2RDg2QjAwNDc3MzMzIC8qIHRleHRBcmVhUmVzaXpl
Q29ybmVyQDJ4LnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTM3MDkxOEMxNDE2RDg2QjAwNDc3MzMzIC8qIHRleHRBcmVhUmVzaXplQ29ybmVyQDJ4
LnBuZyAqLzsgfTsKIAkJOTM3N0FCQTAxNURFRkVFRjAwMzFGRDA0IC8qIFBhZ2luYXRpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNzdBQjlGMTVE
RUZFRUYwMDMxRkQwNCAvKiBQYWdpbmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTM3OTlFRjgwQkYyNzQzNjAwRDBGMjMwIC8qIFJlbmRl
cldvcmRCcmVhay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5Mzc5OUVGNjBCRjI3NDM2MDBEMEYyMzAgLyogUmVuZGVyV29yZEJyZWFrLmNwcCAqLzsg
fTsKLQkJOTM3OTlFRjkwQkYyNzQzNjAwRDBGMjMwIC8qIFJlbmRlcldvcmRCcmVhay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM3OTlFRjcwQkYyNzQz
NjAwRDBGMjMwIC8qIFJlbmRlcldvcmRCcmVhay5oICovOyB9OwogCQk5MzgwRjQ3MzA5QTExQUI0
MDAxRkRCMzQgLyogV2lkZ2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzODBGNDcxMDlBMTFBQjQwMDFGREIzNCAvKiBXaWRnZXQuY3BwICovOyB9
OwogCQk5MzgwRjQ3NDA5QTExQUI0MDAxRkRCMzQgLyogV2lkZ2V0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzgwRjQ3MjA5QTExQUI0MDAxRkRCMzQg
LyogV2lkZ2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOTM4MEY0NzgwOUExMUFDQzAwMUZEQjM0IC8qIFdpZGdldE1hYy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzODBGNDc3MDlBMTFBQ0MwMDFG
REIzNCAvKiBXaWRnZXRNYWMubW0gKi87IH07CkBAIC02NTc3LDcgKzY1NzQsNiBAQAogCQkwNzYz
MDZERTE3RTE2MDg5MDA1QTdDNEUgLyogSlNTb3VyY2VJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU291cmNlSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA3NjMwNkRGMTdFMTYwODkwMDVBN0M0RSAvKiBKU1NvdXJjZUluZm8uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTb3VyY2VJbmZvLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NjMwNkUyMTdFMjJBNDMwMDVBN0M0RSAvKiBNZWRpYVN0
cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3NjMwNkU2MTdFMjUxRUMwMDVBN0M0RSAvKiBKU01lZGlh
U3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2tDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrQ3VzdG9tLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3Njk3MDg0MTQ2M0FEODcwMEY1MDJDRiAvKiBU
ZXh0VHJhY2tMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRl
eHRUcmFja0xpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzY5NzA4NTE0
NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUZXh0VHJhY2tMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA3NkYwRDA5MTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk1
MTEsOCArOTUwNyw2IEBACiAJCTkzNkREMDNBMDlDRUFDMjcwMDU2QUU4QyAvKiBSYW5nZS5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmFuZ2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5MzcwOTE4QzE0MTZEODZCMDA0NzczMzMgLyogdGV4dEFyZWFSZXNpemVDb3JuZXJA
MngucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
aW1hZ2UucG5nOyBwYXRoID0gInRleHRBcmVhUmVzaXplQ29ybmVyQDJ4LnBuZyI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNzdBQjlGMTVERUZFRUYwMDMxRkQwNCAvKiBQYWdpbmF0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2luYXRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTM3OTlFRjYwQkYyNzQzNjAwRDBGMjMwIC8qIFJl
bmRlcldvcmRCcmVhay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW5kZXJXb3JkQnJlYWsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5Mzc5OUVG
NzBCRjI3NDM2MDBEMEYyMzAgLyogUmVuZGVyV29yZEJyZWFrLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbmRlcldvcmRCcmVhay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5MzgwRjQ3MTA5QTExQUI0MDAxRkRCMzQgLyogV2lkZ2V0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXaWRnZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5MzgwRjQ3MjA5QTExQUI0MDAxRkRCMzQgLyogV2lkZ2V0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXaWRnZXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTM4MEY0NzcwOUExMUFDQzAwMUZEQjM0IC8qIFdpZGdldE1hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXaWRnZXRNYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDU4Niw4ICsyMDU4MCw2IEBACiAJCQkJQkNFQTQ4
MjkwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclZpZXcuaCAqLywKIAkJCQlBODcxREZFMTBBMTUz
NzZCMDBCMTJBNjggLyogUmVuZGVyV2lkZ2V0LmNwcCAqLywKIAkJCQlBODcxREZFMDBBMTUzNzZC
MDBCMTJBNjggLyogUmVuZGVyV2lkZ2V0LmggKi8sCi0JCQkJOTM3OTlFRjYwQkYyNzQzNjAwRDBG
MjMwIC8qIFJlbmRlcldvcmRCcmVhay5jcHAgKi8sCi0JCQkJOTM3OTlFRjcwQkYyNzQzNjAwRDBG
MjMwIC8qIFJlbmRlcldvcmRCcmVhay5oICovLAogCQkJCUE4Q0ZGNUUwMEExNTVBMDUwMDBBNDIz
NCAvKiBSb290SW5saW5lQm94LmNwcCAqLywKIAkJCQlBOENGRjVEQTBBMTU1QTA1MDAwQTQyMzQg
LyogUm9vdElubGluZUJveC5oICovLAogCQkJCTVEOTI1QjY1MEY2NEQ0REQwMEI4NDdGMCAvKiBT
Y3JvbGxCZWhhdmlvci5jcHAgKi8sCkBAIC0yMzcyNSw3ICsyMzcxNyw2IEBACiAJCQkJRTQ0NjE0
NTIwQ0Q2OEEzNTAwRkFEQTc1IC8qIFJlbmRlclZpZGVvLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0VBNDg2ODA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTg3MURGRTQwQTE1Mzc2QjAwQjEyQTY4IC8qIFJlbmRlcldpZGdldC5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJOTM3OTlFRjkwQkYyNzQzNjAwRDBGMjMwIC8qIFJlbmRlcldvcmRCcmVhay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDc4RTA5NDcxN0QxNkUxQzAwNDIwQUExIC8qIFJUQ1ZvaWRSZXF1
ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODlDQ0M1MzBGNDRFOTgxMDBCNURBMTAgLyogUmVw
bGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTBBMDk5
RTY0OTIwMDU2RTU4MSAvKiBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yNjg5Miw3ICsyNjg4Myw2IEBACiAJCQkJRTQ0NjE0NTEwQ0Q2OEEzNTAwRkFEQTc1IC8q
IFJlbmRlclZpZGVvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUE0ODY3MDk3RDkzMDIwMDk0
QzlFNCAvKiBSZW5kZXJWaWV3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NzFERkU1MEExNTM3
NkIwMEIxMkE2OCAvKiBSZW5kZXJXaWRnZXQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJOTM3OTlF
RjgwQkYyNzQzNjAwRDBGMjMwIC8qIFJlbmRlcldvcmRCcmVhay5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBODlDQ0M1MjBGNDRFOTgxMDBCNURBMTAgLyogUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1h
bmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMDkwOTlFNjQ5MjAwNTZFNTgxIC8qIFJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY1NUIzRENGMTI1
MUYxMkQwMDNFRjI2OSAvKiBSZXNldElucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMTU2MDI0KQorKysgU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgyNCw3ICs1ODI0LDcgQEAg
dm9pZCBEb2N1bWVudDo6dXBkYXRlSG92ZXJBY3RpdmVTdGF0ZShjbwogICAgICAgICAgICAgLy8g
V2UgYXJlIHNldHRpbmcgdGhlIDphY3RpdmUgY2hhaW4gYW5kIGZyZWV6aW5nIGl0LiBJZiBmdXR1
cmUgbW92ZXMgaGFwcGVuLCB0aGV5CiAgICAgICAgICAgICAvLyB3aWxsIG5lZWQgdG8gcmVmZXJl
bmNlIHRoaXMgY2hhaW4uCiAgICAgICAgICAgICBmb3IgKFJlbmRlck9iamVjdCogY3VyciA9IG5l
d0FjdGl2ZUVsZW1lbnQtPnJlbmRlcmVyKCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5wYXJlbnQoKSkg
ewotICAgICAgICAgICAgICAgIGlmICghY3Vyci0+bm9kZSgpIHx8ICFjdXJyLT5ub2RlKCktPmlz
RWxlbWVudE5vZGUoKSB8fCBjdXJyLT5pc1RleHRPckJSKCkpCisgICAgICAgICAgICAgICAgaWYg
KCFjdXJyLT5ub2RlKCkgfHwgIWN1cnItPm5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpIHx8IGN1cnIt
PmlzVGV4dE9yTGluZUJyZWFrKCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgICAgIG1fdXNlckFjdGlvbkVsZW1lbnRzLnNldEluQWN0aXZlQ2hhaW4odG9FbGVt
ZW50KGN1cnItPm5vZGUoKSksIHRydWUpOwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
UG9zaXRpb24uY3BwCShyZXZpc2lvbiAxNTYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUG9z
aXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyBib29sIGhh
c0lubGluZUJveFdyYXBwZXIoUmVuZGVyT2IKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYg
KHJlbmRlcmVyLmlzVGV4dCgpICYmIHRvUmVuZGVyVGV4dChyZW5kZXJlcikuZmlyc3RUZXh0Qm94
KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChyZW5kZXJlci5pc0JSKCkgJiYgdG9S
ZW5kZXJCUihyZW5kZXJlcikuaW5saW5lQm94V3JhcHBlcigpKQorICAgIGlmIChyZW5kZXJlci5p
c0xpbmVCcmVhaygpICYmIHRvUmVuZGVyQlIocmVuZGVyZXIpLmlubGluZUJveFdyYXBwZXIoKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtODU3LDcgKzg1
Nyw3IEBAIGJvb2wgUG9zaXRpb246Omhhc1JlbmRlcmVkTm9uQW5vbnltb3VzRGUKICAgICBmb3Ig
KFJlbmRlck9iamVjdCAqbyA9IHJlbmRlcmVyLT5maXJzdENoaWxkKCk7IG8gJiYgbyAhPSBzdG9w
OyBvID0gby0+bmV4dEluUHJlT3JkZXIoKSkKICAgICAgICAgaWYgKG8tPm5vblBzZXVkb05vZGUo
KSkgewogICAgICAgICAgICAgaWYgKChvLT5pc1RleHQoKSAmJiBib3VuZGluZ0JveExvZ2ljYWxI
ZWlnaHQobywgdG9SZW5kZXJUZXh0KG8pLT5saW5lc0JvdW5kaW5nQm94KCkpKQotICAgICAgICAg
ICAgICAgIHx8IChvLT5pc0JSKCkgJiYgYm91bmRpbmdCb3hMb2dpY2FsSGVpZ2h0KG8sIHRvUmVu
ZGVyQlIobyktPmxpbmVzQm91bmRpbmdCb3goKSkpCisgICAgICAgICAgICAgICAgfHwgKG8tPmlz
TGluZUJyZWFrKCkgJiYgYm91bmRpbmdCb3hMb2dpY2FsSGVpZ2h0KG8sIHRvUmVuZGVyQlIobykt
PmxpbmVzQm91bmRpbmdCb3goKSkpCiAgICAgICAgICAgICAgICAgfHwgKG8tPmlzQm94KCkgJiYg
dG9SZW5kZXJCb3gobyktPnBpeGVsU25hcHBlZExvZ2ljYWxIZWlnaHQoKSkKICAgICAgICAgICAg
ICAgICB8fCAoby0+aXNSZW5kZXJJbmxpbmUoKSAmJiBpc0VtcHR5SW5saW5lKG8pICYmIGJvdW5k
aW5nQm94TG9naWNhbEhlaWdodChvLCB0b1JlbmRlcklubGluZShvKS0+bGluZXNCb3VuZGluZ0Jv
eCgpKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCShyZXZpc2lvbiAxNTYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwODUsNyArMzA4NSw3IEBAIHN0YXRpYyBO
b2RlKiBmaW5kRmlyc3RNYXJrYWJsZShOb2RlKiBub2QKICAgICB3aGlsZSAobm9kZSkgewogICAg
ICAgICBpZiAoIW5vZGUtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAg
ICAgaWYgKG5vZGUtPnJlbmRlcmVyKCktPmlzVGV4dE9yQlIoKSkKKyAgICAgICAgaWYgKG5vZGUt
PnJlbmRlcmVyKCktPmlzVGV4dE9yTGluZUJyZWFrKCkpCiAgICAgICAgICAgICByZXR1cm4gbm9k
ZTsKICAgICAgICAgaWYgKGlzSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQobm9kZSkpCiAgICAg
ICAgICAgICBub2RlID0gdG9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudChub2RlKS0+dmlzaWJs
ZVBvc2l0aW9uRm9ySW5kZXgoMSkuZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAkocmV2aXNpb24gMTU2
MDI0KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMTUsNyArMjE1LDcgQEAgc3RhdGljIGlubGluZSBib29sIGZ1bGx5Q2xpcHND
b250ZW50cyhObwogc3RhdGljIGlubGluZSBib29sIGlnbm9yZXNDb250YWluZXJDbGlwKE5vZGUq
IG5vZGUpCiB7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7
Ci0gICAgaWYgKCFyZW5kZXJlciB8fCByZW5kZXJlci0+aXNUZXh0T3JCUigpKQorICAgIGlmICgh
cmVuZGVyZXIgfHwgcmVuZGVyZXItPmlzVGV4dE9yTGluZUJyZWFrKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICByZXR1cm4gcmVuZGVyZXItPnN0eWxlKCktPmhhc091dE9mRmxvd1Bvc2l0
aW9uKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkocmV2aXNpb24g
MTU2MDI0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAKICNpbmNsdWRlICJIVE1MVGVtcGxhdGVFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaCIKICNpbmNsdWRlICJOb2Rl
VHJhdmVyc2FsLmgiCi0jaW5jbHVkZSAiUmVuZGVyV29yZEJyZWFrLmgiCisjaW5jbHVkZSAiUmVu
ZGVyQlIuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0
RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC03OTEsNyArNzkxLDcg
QEAgYm9vbCBIVE1MRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdAogUmVuZGVyT2JqZWN0
KiBIVE1MRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmIGFyZW5hLCBSZW5kZXJT
dHlsZSYgc3R5bGUpCiB7CiAgICAgaWYgKGhhc0xvY2FsTmFtZSh3YnJUYWcpKQotICAgICAgICBy
ZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyV29yZEJyZWFrKHRoaXMpOworICAgICAgICByZXR1cm4g
bmV3IChhcmVuYSkgUmVuZGVyQlIodGhpcyk7CiAgICAgcmV0dXJuIFJlbmRlck9iamVjdDo6Y3Jl
YXRlT2JqZWN0KCp0aGlzLCBzdHlsZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVCb3guY3BwCShyZXZpc2lvbiAxNTYwMjUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw3IEBAIGZs
b2F0IElubGluZUJveDo6bG9naWNhbEhlaWdodCgpIGNvbnN0CiAgICAgaWYgKGhhc1ZpcnR1YWxM
b2dpY2FsSGVpZ2h0KCkpCiAgICAgICAgIHJldHVybiB2aXJ0dWFsTG9naWNhbEhlaWdodCgpOwog
ICAgIAotICAgIGlmIChyZW5kZXJlcigpLmlzVGV4dE9yQlIoKSkKKyAgICBpZiAocmVuZGVyZXIo
KS5pc1RleHRPckxpbmVCcmVhaygpKQogICAgICAgICByZXR1cm4gYmVoYXZlc0xpa2VUZXh0KCkg
PyByZW5kZXJlcigpLnN0eWxlKGlzRmlyc3RMaW5lU3R5bGUoKSktPmZvbnRNZXRyaWNzKCkuaGVp
Z2h0KCkgOiAwOwogICAgIGlmIChyZW5kZXJlcigpLmlzQm94KCkgJiYgcGFyZW50KCkpCiAgICAg
ICAgIHJldHVybiBpc0hvcml6b250YWwoKSA/IHRvUmVuZGVyQm94KHJlbmRlcmVyKCkpLmhlaWdo
dCgpIDogdG9SZW5kZXJCb3gocmVuZGVyZXIoKSkud2lkdGgoKTsKQEAgLTE1NywxNCArMTU3LDE0
IEBAIGZsb2F0IElubGluZUJveDo6bG9naWNhbEhlaWdodCgpIGNvbnN0CiAKIGludCBJbmxpbmVC
b3g6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSkgY29uc3QKIHsK
LSAgICBpZiAocmVuZGVyZXIoKS5pc0JSKCkgJiYgIWJlaGF2ZXNMaWtlVGV4dCgpKQorICAgIGlm
IChyZW5kZXJlcigpLmlzTGluZUJyZWFrKCkgJiYgIWJlaGF2ZXNMaWtlVGV4dCgpKQogICAgICAg
ICByZXR1cm4gMDsKICAgICByZXR1cm4gYm94TW9kZWxPYmplY3QoKS0+YmFzZWxpbmVQb3NpdGlv
bihiYXNlbGluZVR5cGUsIG1fYml0ZmllbGRzLmZpcnN0TGluZSgpLCBpc0hvcml6b250YWwoKSA/
IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5lLCBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUp
OwogfQogCiBMYXlvdXRVbml0IElubGluZUJveDo6bGluZUhlaWdodCgpIGNvbnN0CiB7Ci0gICAg
aWYgKHJlbmRlcmVyKCkuaXNCUigpICYmICFiZWhhdmVzTGlrZVRleHQoKSkKKyAgICBpZiAocmVu
ZGVyZXIoKS5pc0xpbmVCcmVhaygpICYmICFiZWhhdmVzTGlrZVRleHQoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgcmV0dXJuIGJveE1vZGVsT2JqZWN0KCktPmxpbmVIZWlnaHQobV9iaXRmaWVs
ZHMuZmlyc3RMaW5lKCksIGlzSG9yaXpvbnRhbCgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNh
bExpbmUsIFBvc2l0aW9uT25Db250YWluaW5nTGluZSk7CiB9CkBAIC0xOTEsNyArMTkxLDcgQEAg
dm9pZCBJbmxpbmVCb3g6OmRlbGV0ZUxpbmUoUmVuZGVyQXJlbmEmIAogICAgIGlmICghbV9iaXRm
aWVsZHMuZXh0cmFjdGVkKCkpIHsKICAgICAgICAgaWYgKG1fcmVuZGVyZXIuaXNCb3goKSkKICAg
ICAgICAgICAgIHRvUmVuZGVyQm94KHJlbmRlcmVyKCkpLnNldElubGluZUJveFdyYXBwZXIoMCk7
Ci0gICAgICAgIGVsc2UgaWYgKHJlbmRlcmVyKCkuaXNCUigpKQorICAgICAgICBlbHNlIGlmIChy
ZW5kZXJlcigpLmlzTGluZUJyZWFrKCkpCiAgICAgICAgICAgICB0b1JlbmRlckJSKHJlbmRlcmVy
KCkpLnNldElubGluZUJveFdyYXBwZXIoMCk7CiAgICAgfQogICAgIGRlc3Ryb3koYXJlbmEpOwpA
QCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQgSW5saW5lQm94OjpleHRyYWN0TGluZSgpCiAgICAgbV9i
aXRmaWVsZHMuc2V0RXh0cmFjdGVkKHRydWUpOwogICAgIGlmIChtX3JlbmRlcmVyLmlzQm94KCkp
CiAgICAgICAgIHRvUmVuZGVyQm94KHJlbmRlcmVyKCkpLnNldElubGluZUJveFdyYXBwZXIoMCk7
Ci0gICAgZWxzZSBpZiAocmVuZGVyZXIoKS5pc0JSKCkpCisgICAgZWxzZSBpZiAocmVuZGVyZXIo
KS5pc0xpbmVCcmVhaygpKQogICAgICAgICB0b1JlbmRlckJSKHJlbmRlcmVyKCkpLnNldElubGlu
ZUJveFdyYXBwZXIoMCk7CiB9CiAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIElubGluZUJveDo6
YXR0YWNoTGluZSgpCiAgICAgbV9iaXRmaWVsZHMuc2V0RXh0cmFjdGVkKGZhbHNlKTsKICAgICBp
ZiAobV9yZW5kZXJlci5pc0JveCgpKQogICAgICAgICB0b1JlbmRlckJveChyZW5kZXJlcigpKS5z
ZXRJbmxpbmVCb3hXcmFwcGVyKHRoaXMpOwotICAgIGVsc2UgaWYgKHJlbmRlcmVyKCkuaXNCUigp
KQorICAgIGVsc2UgaWYgKHJlbmRlcmVyKCkuaXNMaW5lQnJlYWsoKSkKICAgICAgICAgdG9SZW5k
ZXJCUihyZW5kZXJlcigpKS5zZXRJbmxpbmVCb3hXcmFwcGVyKHRoaXMpOwogfQogCkBAIC0yNTcs
NyArMjU3LDcgQEAgYm9vbCBJbmxpbmVCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlcwogICAg
IC8vIG93biBzdGFja2luZyBjb250ZXh0LiAgKFNlZSBBcHBlbmRpeCBFLjIsIHNlY3Rpb24gNi40
IG9uIGlubGluZSBibG9jay90YWJsZSBlbGVtZW50cyBpbiB0aGUgQ1NTMi4xCiAgICAgLy8gc3Bl
Y2lmaWNhdGlvbi4pCiAgICAgTGF5b3V0UG9pbnQgY2hpbGRQb2ludCA9IGFjY3VtdWxhdGVkT2Zm
c2V0OwotICAgIGlmIChwYXJlbnQoKS0+cmVuZGVyZXIoKS5zdHlsZSgpLT5pc0ZsaXBwZWRCbG9j
a3NXcml0aW5nTW9kZSgpICYmICFyZW5kZXJlcigpLmlzQlIoKSkgLy8gRmFzdGVyIHRoYW4gY2Fs
bGluZyBjb250YWluaW5nQmxvY2soKS4KKyAgICBpZiAocGFyZW50KCktPnJlbmRlcmVyKCkuc3R5
bGUoKS0+aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSAmJiAhcmVuZGVyZXIoKS5pc0xpbmVC
cmVhaygpKSAvLyBGYXN0ZXIgdGhhbiBjYWxsaW5nIGNvbnRhaW5pbmdCbG9jaygpLgogICAgICAg
ICBjaGlsZFBvaW50ID0gbV9yZW5kZXJlci5jb250YWluaW5nQmxvY2soKS0+ZmxpcEZvcldyaXRp
bmdNb2RlRm9yQ2hpbGQoJnRvUmVuZGVyQm94KHJlbmRlcmVyKCkpLCBjaGlsZFBvaW50KTsKICAg
ICAKICAgICByZXR1cm4gbV9yZW5kZXJlci5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCwgbG9jYXRp
b25JbkNvbnRhaW5lciwgY2hpbGRQb2ludCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lQm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZUJveC5oCShyZXZpc2lvbiAxNTYwMjUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBleHRyYWN0TGluZSgpOwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hMaW5l
KCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNMaW5lQnJlYWsoKSBjb25zdCB7IHJldHVybiByZW5k
ZXJlcigpLmlzQlIoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0xpbmVCcmVhaygpIGNvbnN0IHsg
cmV0dXJuIHJlbmRlcmVyKCkuaXNMaW5lQnJlYWsoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGFk
anVzdFBvc2l0aW9uKGZsb2F0IGR4LCBmbG9hdCBkeSk7CiAgICAgdm9pZCBhZGp1c3RMb2dpY2Fs
UG9zaXRpb24oZmxvYXQgZGVsdGFMb2dpY2FsTGVmdCwgZmxvYXQgZGVsdGFMb2dpY2FsVG9wKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAkocmV2aXNp
b24gMTU2MDI1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94Ojph
ZGRUb0xpbmUoSW5saW5lQm94KgogICAgICAgICBpZiAoY2hpbGQtPnJlbmRlcmVyKCkuaXNSZXBs
YWNlZCgpKQogICAgICAgICAgICAgc2hvdWxkQ2xlYXJEZXNjZW5kYW50c0hhdmVTYW1lTGluZUhl
aWdodEFuZEJhc2VsaW5lID0gdHJ1ZTsKICAgICAgICAgZWxzZSBpZiAoY2hpbGQtPmJlaGF2ZXNM
aWtlVGV4dCgpKSB7Ci0gICAgICAgICAgICBpZiAoY2hpbGQtPnJlbmRlcmVyKCkuaXNCUigpIHx8
IGNoaWxkLT5yZW5kZXJlcigpLnBhcmVudCgpICE9ICZyZW5kZXJlcigpKSB7CisgICAgICAgICAg
ICBpZiAoY2hpbGQtPnJlbmRlcmVyKCkuaXNMaW5lQnJlYWsoKSB8fCBjaGlsZC0+cmVuZGVyZXIo
KS5wYXJlbnQoKSAhPSAmcmVuZGVyZXIoKSkgewogICAgICAgICAgICAgICAgIGlmICghcGFyZW50
U3R5bGUtPmZvbnQoKS5mb250TWV0cmljcygpLmhhc0lkZW50aWNhbEFzY2VudERlc2NlbnRBbmRM
aW5lR2FwKGNoaWxkU3R5bGUtPmZvbnQoKS5mb250TWV0cmljcygpKQogICAgICAgICAgICAgICAg
ICAgICB8fCBwYXJlbnRTdHlsZS0+bGluZUhlaWdodCgpICE9IGNoaWxkU3R5bGUtPmxpbmVIZWln
aHQoKQogICAgICAgICAgICAgICAgICAgICB8fCAocGFyZW50U3R5bGUtPnZlcnRpY2FsQWxpZ24o
KSAhPSBCQVNFTElORSAmJiAhaXNSb290SW5saW5lQm94KCkpIHx8IGNoaWxkU3R5bGUtPnZlcnRp
Y2FsQWxpZ24oKSAhPSBCQVNFTElORSkKQEAgLTEzNiwxMCArMTM2LDEwIEBAIHZvaWQgSW5saW5l
Rmxvd0JveDo6YWRkVG9MaW5lKElubGluZUJveCoKICAgICAgICAgICAgIGlmIChjaGlsZFN0eWxl
LT5oYXNUZXh0Q29tYmluZSgpIHx8IGNoaWxkU3R5bGUtPnRleHRFbXBoYXNpc01hcmsoKSAhPSBU
ZXh0RW1waGFzaXNNYXJrTm9uZSkKICAgICAgICAgICAgICAgICBzaG91bGRDbGVhckRlc2NlbmRh
bnRzSGF2ZVNhbWVMaW5lSGVpZ2h0QW5kQmFzZWxpbmUgPSB0cnVlOwogICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgaWYgKGNoaWxkLT5yZW5kZXJlcigpLmlzQlIoKSkgeworICAgICAgICAg
ICAgaWYgKGNoaWxkLT5yZW5kZXJlcigpLmlzTGluZUJyZWFrKCkpIHsKICAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogVGhpcyBpcyBkdW1iLiBXZSBvbmx5IHR1cm4gb2ZmIGJlY2F1c2UgY3VycmVu
dCBsYXlvdXQgdGVzdCByZXN1bHRzIGV4cGVjdCB0aGUgPGJyPiB0byBiZSAwLWhlaWdodCBvbiB0
aGUgYmFzZWxpbmUuCiAgICAgICAgICAgICAgICAgLy8gT3RoZXIgdGhhbiBtYWtpbmcgYSB6aWxs
aW9uIHRlc3RzIGhhdmUgdG8gcmVnZW5lcmF0ZSByZXN1bHRzLCB0aGVyZSdzIG5vIHJlYXNvbiB0
byBkaXRjaCB0aGUgb3B0aW1pemF0aW9uIGhlcmUuCi0gICAgICAgICAgICAgICAgc2hvdWxkQ2xl
YXJEZXNjZW5kYW50c0hhdmVTYW1lTGluZUhlaWdodEFuZEJhc2VsaW5lID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICBzaG91bGRDbGVhckRlc2NlbmRhbnRzSGF2ZVNhbWVMaW5lSGVpZ2h0QW5kQmFz
ZWxpbmUgPSBjaGlsZC0+cmVuZGVyZXIoKS5pc0JSKCk7CiAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgIEFTU0VSVChpc0lubGluZUZsb3dCb3goKSk7CiAgICAgICAgICAgICAg
ICAgSW5saW5lRmxvd0JveCogY2hpbGRGbG93Qm94ID0gdG9JbmxpbmVGbG93Qm94KGNoaWxkKTsK
QEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OmFkZFRvTGluZShJbmxpbmVC
b3gqCiAgICAgICAgICAgICBjb25zdCBSZW5kZXJCb3gmIGJveCA9IHRvUmVuZGVyQm94KGNoaWxk
LT5yZW5kZXJlcigpKTsKICAgICAgICAgICAgIGlmIChib3guaGFzUmVuZGVyT3ZlcmZsb3coKSB8
fCBib3guaGFzU2VsZlBhaW50aW5nTGF5ZXIoKSkKICAgICAgICAgICAgICAgICBjaGlsZC0+Y2xl
YXJLbm93blRvSGF2ZU5vT3ZlcmZsb3coKTsKLSAgICAgICAgfSBlbHNlIGlmICghY2hpbGQtPnJl
bmRlcmVyKCkuaXNCUigpICYmIChjaGlsZC0+cmVuZGVyZXIoKS5zdHlsZShpc0ZpcnN0TGluZVN0
eWxlKCkpLT5ib3hTaGFkb3coKSB8fCBjaGlsZC0+Ym94TW9kZWxPYmplY3QoKS0+aGFzU2VsZlBh
aW50aW5nTGF5ZXIoKQorICAgICAgICB9IGVsc2UgaWYgKCFjaGlsZC0+cmVuZGVyZXIoKS5pc0xp
bmVCcmVhaygpICYmIChjaGlsZC0+cmVuZGVyZXIoKS5zdHlsZShpc0ZpcnN0TGluZVN0eWxlKCkp
LT5ib3hTaGFkb3coKSB8fCBjaGlsZC0+Ym94TW9kZWxPYmplY3QoKS0+aGFzU2VsZlBhaW50aW5n
TGF5ZXIoKQogICAgICAgICAgICAgICAgICAgIHx8IChjaGlsZC0+cmVuZGVyZXIoKS5pc0xpc3RN
YXJrZXIoKSAmJiAhdG9SZW5kZXJMaXN0TWFya2VyKGNoaWxkLT5yZW5kZXJlcigpKS5pc0luc2lk
ZSgpKQogICAgICAgICAgICAgICAgICAgIHx8IGNoaWxkLT5yZW5kZXJlcigpLnN0eWxlKGlzRmly
c3RMaW5lU3R5bGUoKSktPmhhc0JvcmRlckltYWdlT3V0c2V0cygpKSkKICAgICAgICAgICAgIGNo
aWxkLT5jbGVhcktub3duVG9IYXZlTm9PdmVyZmxvdygpOwpAQCAtOTUwLDcgKzk1MCw3IEBAIHZv
aWQgSW5saW5lRmxvd0JveDo6Y29tcHV0ZU92ZXJmbG93KExheW8KICAgICAgICAgaWYgKGN1cnIt
PnJlbmRlcmVyKCkuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICBjb250aW51
ZTsgLy8gUG9zaXRpb25lZCBwbGFjZWhvbGRlcnMgZG9uJ3QgYWZmZWN0IGNhbGN1bGF0aW9ucy4K
IAotICAgICAgICBpZiAoY3Vyci0+cmVuZGVyZXIoKS5pc0JSKCkpCisgICAgICAgIGlmIChjdXJy
LT5yZW5kZXJlcigpLmlzTGluZUJyZWFrKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgaWYgKGN1cnItPnJlbmRlcmVyKCkuaXNUZXh0KCkpIHsKICAgICAgICAgICAgIElubGluZVRl
eHRCb3gqIHRleHQgPSB0b0lubGluZVRleHRCb3goY3Vycik7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaAkocmV2aXNpb24gMTU2MDI0KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2
LDcgKzc2LDcgQEAgcHVibGljOgogICAgIGlubGluZSBib29sIGF0VGV4dFBhcmFncmFwaFNlcGFy
YXRvcigpCiAgICAgewogICAgICAgICByZXR1cm4gbV9vYmogJiYgbV9vYmotPnByZXNlcnZlc05l
d2xpbmUoKSAmJiBtX29iai0+aXNUZXh0KCkgJiYgdG9SZW5kZXJUZXh0KG1fb2JqKS0+dGV4dExl
bmd0aCgpCi0gICAgICAgICAgICAmJiAhdG9SZW5kZXJUZXh0KG1fb2JqKS0+aXNXb3JkQnJlYWso
KSAmJiB0b1JlbmRlclRleHQobV9vYmopLT5jaGFyYWN0ZXJBdChtX3BvcykgPT0gJ1xuJzsKKyAg
ICAgICAgICAgICYmIHRvUmVuZGVyVGV4dChtX29iaiktPmNoYXJhY3RlckF0KG1fcG9zKSA9PSAn
XG4nOwogICAgIH0KICAgICAKICAgICBpbmxpbmUgYm9vbCBhdFBhcmFncmFwaFNlcGFyYXRvcigp
CkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIG5vdGlmeU9ic2VydmVyV2ls
bEV4aQogc3RhdGljIGlubGluZSBib29sIGlzSXRlcmF0b3JUYXJnZXQoUmVuZGVyT2JqZWN0KiBv
YmplY3QpCiB7CiAgICAgQVNTRVJUKG9iamVjdCk7IC8vIFRoZSBpdGVyYXRvciB3aWxsIG9mIGNv
dXJzZSByZXR1cm4gMCwgYnV0IGl0cyBub3QgYW4gZXhwZWN0ZWQgYXJndW1lbnQgdG8gdGhpcyBm
dW5jdGlvbi4KLSAgICByZXR1cm4gb2JqZWN0LT5pc1RleHRPckJSKCkgfHwgb2JqZWN0LT5pc0Zs
b2F0aW5nKCkgfHwgb2JqZWN0LT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSB8fCBvYmplY3QtPmlz
UmVwbGFjZWQoKTsKKyAgICByZXR1cm4gb2JqZWN0LT5pc1RleHQoKSB8fCBvYmplY3QtPmlzTGlu
ZUJyZWFrKCkgfHwgb2JqZWN0LT5pc0Zsb2F0aW5nKCkgfHwgb2JqZWN0LT5pc091dE9mRmxvd1Bv
c2l0aW9uZWQoKSB8fCBvYmplY3QtPmlzUmVwbGFjZWQoKTsKIH0KIAogLy8gVGhpcyBlbnVtIGlz
IG9ubHkgdXNlZCBmb3IgYmlkaU5leHRTaGFyZWQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJSLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQlIuY3BwCShyZXZpc2lvbiAxNTYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQlIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5j
bHVkZSAiUmVuZGVyQlIuaCIKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiSFRN
TEVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJvb3RJbmxp
bmVCb3guaCIKICNpbmNsdWRlICJWaXNpYmxlUG9zaXRpb24uaCIKQEAgLTMxLDEyICszMiwxMyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBpbnQgaW52YWxpZExpbmVIZWln
aHQgPSAtMTsKIAotUmVuZGVyQlI6OlJlbmRlckJSKEVsZW1lbnQqIGVsZW1lbnQpCitSZW5kZXJC
Ujo6UmVuZGVyQlIoSFRNTEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgOiBSZW5kZXJCb3hNb2RlbE9i
amVjdChlbGVtZW50KQogICAgICwgbV9pbmxpbmVCb3hXcmFwcGVyKG51bGxwdHIpCiAgICAgLCBt
X2NhY2hlZExpbmVIZWlnaHQoaW52YWxpZExpbmVIZWlnaHQpCisgICAgLCBtX2lzV0JSKGVsZW1l
bnQgJiYgZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OndiclRhZykpCiB7Ci0gICAgc2V0
SXNCUigpOworICAgIHNldElzTGluZUJyZWFrKCk7CiB9CiAKIFJlbmRlckJSOjp+UmVuZGVyQlIo
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJSLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJSLmgJKHJldmlzaW9uIDE1NjAyNCkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCUi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiwxNiArMjYsMTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBIVE1MRWxl
bWVudDsKIGNsYXNzIFBvc2l0aW9uOwogCisvLyBGSVhNRTogUmVuYW1lIHRoaXMgdG8gUmVuZGVy
TGluZUJyZWFrLgogY2xhc3MgUmVuZGVyQlIgRklOQUwgOiBwdWJsaWMgUmVuZGVyQm94TW9kZWxP
YmplY3QgewogcHVibGljOgotICAgIGV4cGxpY2l0IFJlbmRlckJSKEVsZW1lbnQqKTsKKyAgICBl
eHBsaWNpdCBSZW5kZXJCUihIVE1MRWxlbWVudCopOwogICAgIHZpcnR1YWwgflJlbmRlckJSKCk7
CiAKICAgICBzdGF0aWMgUmVuZGVyQlIqIGNyZWF0ZUFub255bW91cyhEb2N1bWVudCYpOwogCi0g
ICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRl
ckJSIjsgfQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1faXNXQlIgPyAiUmVuZGVyV29yZEJyZWFrIiA6ICJSZW5kZXJCUiI7IH0KIAogICAgIElu
bGluZUJveCogY3JlYXRlSW5saW5lQm94KCk7CiAgICAgSW5saW5lQm94KiBpbmxpbmVCb3hXcmFw
cGVyKCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVCb3hXcmFwcGVyOyB9CkBAIC01MCw2ICs1Miwx
MCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0
UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3QgT1ZFUlJJREU7CiAKIHByaXZhdGU6CisgICAg
dm9pZCBub2RlKCkgY29uc3QgV1RGX0RFTEVURURfRlVOQ1RJT047CisKKyAgICB2aXJ0dWFsIGJv
b2wgaXNXQlIoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2lzV0JSOyB9CisKICAgICB2aXJ0
dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50Jikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBpbnQgY2FyZXRNaW5PZmZzZXQoKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIGludCBjYXJldE1heE9mZnNldCgpIGNvbnN0IE9WRVJSSURFOwpAQCAt
NzksMjkgKzg1LDMwIEBAIHByaXZhdGU6CiAKICAgICBJbmxpbmVCb3gqIG1faW5saW5lQm94V3Jh
cHBlcjsKICAgICBtdXRhYmxlIGludCBtX2NhY2hlZExpbmVIZWlnaHQ7CisgICAgYm9vbCBtX2lz
V0JSOwogfTsKIAogaW5saW5lIFJlbmRlckJSJiB0b1JlbmRlckJSKFJlbmRlck9iamVjdCYgb2Jq
ZWN0KQogeyAKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihvYmplY3QuaXNC
UigpKTsKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihvYmplY3QuaXNMaW5l
QnJlYWsoKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlbmRlckJSJj4ob2JqZWN0KTsKIH0K
IAogaW5saW5lIGNvbnN0IFJlbmRlckJSJiB0b1JlbmRlckJSKGNvbnN0IFJlbmRlck9iamVjdCYg
b2JqZWN0KQogewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKG9iamVjdC5p
c0JSKCkpOworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKG9iamVjdC5pc0xp
bmVCcmVhaygpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgUmVuZGVyQlImPihvYmpl
Y3QpOwogfQogCiBpbmxpbmUgUmVuZGVyQlIqIHRvUmVuZGVyQlIoUmVuZGVyT2JqZWN0KiBvYmpl
Y3QpCiB7IAotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKG9iamVjdC0+aXNC
UigpKTsKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihvYmplY3QtPmlzTGlu
ZUJyZWFrKCkpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZW5kZXJCUio+KG9iamVjdCk7CiB9
CiAKIGlubGluZSBjb25zdCBSZW5kZXJCUiogdG9SZW5kZXJCUihjb25zdCBSZW5kZXJPYmplY3Qq
IG9iamVjdCkKIHsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihvYmplY3Qt
PmlzQlIoKSk7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04ob2JqZWN0LT5p
c0xpbmVCcmVhaygpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgUmVuZGVyQlIqPihv
YmplY3QpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAJKHJldmlzaW9uIDE1NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxMDYsNyArNTEwNiw3IEBAIFJlbmRlck9iamVj
dCogSW5saW5lTWluTWF4SXRlcmF0b3I6Om5leHQKICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAg
ICAgICAgICBicmVhazsKIAotICAgICAgICBpZiAoIXJlc3VsdC0+aXNPdXRPZkZsb3dQb3NpdGlv
bmVkKCkgJiYgKHJlc3VsdC0+aXNUZXh0T3JCUigpIHx8IHJlc3VsdC0+aXNGbG9hdGluZygpIHx8
IHJlc3VsdC0+aXNSZXBsYWNlZCgpIHx8IHJlc3VsdC0+aXNSZW5kZXJJbmxpbmUoKSkpCisgICAg
ICAgIGlmICghcmVzdWx0LT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAocmVzdWx0LT5pc1Rl
eHRPckxpbmVCcmVhaygpIHx8IHJlc3VsdC0+aXNGbG9hdGluZygpIHx8IHJlc3VsdC0+aXNSZXBs
YWNlZCgpIHx8IHJlc3VsdC0+aXNSZW5kZXJJbmxpbmUoKSkpCiAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIAogICAgICAgICBjdXJyZW50ID0gcmVzdWx0OwpAQCAtNTI1NSw2ICs1MjU1LDEx
IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVJbmxpbmVQcmVmZXJyZWQKICAgICAgICAgICAg
IGZsb2F0IGNoaWxkTWF4ID0gMDsKIAogICAgICAgICAgICAgaWYgKCFjaGlsZC0+aXNUZXh0KCkp
IHsKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGQtPmlzTGluZUJyZWFrT3Bwb3J0dW5pdHkoKSkg
eworICAgICAgICAgICAgICAgICAgICB1cGRhdGVQcmVmZXJyZWRXaWR0aChtaW5Mb2dpY2FsV2lk
dGgsIGlubGluZU1pbik7CisgICAgICAgICAgICAgICAgICAgIGlubGluZU1pbiA9IDA7CisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAvLyBDYXNlICgxKSBhbmQgKDIpLiAgSW5saW5lIHJlcGxhY2VkIGFuZCBpbmxpbmUgZmxv
dyBlbGVtZW50cy4KICAgICAgICAgICAgICAgICBpZiAoY2hpbGQtPmlzUmVuZGVySW5saW5lKCkp
IHsKICAgICAgICAgICAgICAgICAgICAgLy8gQWRkIGluIHBhZGRpbmcvYm9yZGVyL21hcmdpbiBm
cm9tIHRoZSBhcHByb3ByaWF0ZSBzaWRlIG9mCkBAIC01MzUyLDEyICs1MzU3LDYgQEAgdm9pZCBS
ZW5kZXJCbG9jazo6Y29tcHV0ZUlubGluZVByZWZlcnJlZAogICAgICAgICAgICAgICAgIC8vIENh
c2UgKDMpLiBUZXh0LgogICAgICAgICAgICAgICAgIFJlbmRlclRleHQqIHQgPSB0b1JlbmRlclRl
eHQoY2hpbGQpOwogCi0gICAgICAgICAgICAgICAgaWYgKHQtPmlzV29yZEJyZWFrKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgdXBkYXRlUHJlZmVycmVkV2lkdGgobWluTG9naWNhbFdpZHRoLCBp
bmxpbmVNaW4pOwotICAgICAgICAgICAgICAgICAgICBpbmxpbmVNaW4gPSAwOwotICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0KICAgICAgICAgICAgICAg
ICBpZiAodC0+c3R5bGUoKS0+aGFzVGV4dENvbWJpbmUoKSAmJiB0LT5pc0NvbWJpbmVUZXh0KCkp
CiAgICAgICAgICAgICAgICAgICAgIHRvUmVuZGVyQ29tYmluZVRleHQoKnQpLmNvbWJpbmVUZXh0
KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlv
dXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
a0xpbmVMYXlvdXQuY3BwCShyZXZpc2lvbiAxNTYwMjUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcwLDcg
KzI3MCw3IEBAIHN0YXRpYyBpbmxpbmUgSW5saW5lQm94KiBjcmVhdGVJbmxpbmVCb3gKICAgICBp
ZiAob2JqLT5pc0JveCgpKQogICAgICAgICByZXR1cm4gdG9SZW5kZXJCb3gob2JqKS0+Y3JlYXRl
SW5saW5lQm94KCk7CiAKLSAgICBpZiAob2JqLT5pc0JSKCkpIHsKKyAgICBpZiAob2JqLT5pc0xp
bmVCcmVhaygpKSB7CiAgICAgICAgIElubGluZUJveCogaW5saW5lQm94ID0gdG9SZW5kZXJCUihv
YmopLT5jcmVhdGVJbmxpbmVCb3goKTsKICAgICAgICAgLy8gV2Ugb25seSB0cmVhdCBhIGJveCBh
cyB0ZXh0IGZvciBhIDxicj4gaWYgd2UgYXJlIG9uIGEgbGluZSBieSBvdXJzZWxmIG9yIGluIHN0
cmljdCBtb2RlCiAgICAgICAgIC8vIChOb3RlIHRoZSB1c2Ugb2Ygc3RyaWN0IG1vZGUuIEluICJh
bG1vc3Qgc3RyaWN0IiBtb2RlLCB3ZSBkb24ndCB0cmVhdCB0aGUgYm94IGZvciA8YnI+IGFzIHRl
eHQuKQpAQCAtMjk2LDcgKzI5Niw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkaXJ0eUxpbmVCb3hl
c0ZvclJlbmQKICAgICAgICAgUmVuZGVyVGV4dCogcmVuZGVyVGV4dCA9IHRvUmVuZGVyVGV4dChv
KTsKICAgICAgICAgdXBkYXRlQ291bnRlcklmTmVlZGVkKHJlbmRlclRleHQpOwogICAgICAgICBy
ZW5kZXJUZXh0LT5kaXJ0eUxpbmVCb3hlcyhmdWxsTGF5b3V0KTsKLSAgICB9IGVsc2UgaWYgKG8t
PmlzQlIoKSkKKyAgICB9IGVsc2UgaWYgKG8tPmlzTGluZUJyZWFrKCkpCiAgICAgICAgIHRvUmVu
ZGVyQlIobyktPmRpcnR5TGluZUJveGVzKGZ1bGxMYXlvdXQpOwogICAgIGVsc2UKICAgICAgICAg
dG9SZW5kZXJJbmxpbmUobyktPmRpcnR5TGluZUJveGVzKGZ1bGxMYXlvdXQpOwpAQCAtOTI4LDcg
KzkyOCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVCbG9ja0RpcmVjdGlvblAKICAgICAg
ICAgICAgIHRvUmVuZGVyVGV4dChyLT5tX29iamVjdCktPnBvc2l0aW9uTGluZUJveChyLT5tX2Jv
eCk7CiAgICAgICAgIGVsc2UgaWYgKHItPm1fb2JqZWN0LT5pc0JveCgpKQogICAgICAgICAgICAg
dG9SZW5kZXJCb3goci0+bV9vYmplY3QpLT5wb3NpdGlvbkxpbmVCb3goci0+bV9ib3gpOwotICAg
ICAgICBlbHNlIGlmIChyLT5tX29iamVjdC0+aXNCUigpKQorICAgICAgICBlbHNlIGlmIChyLT5t
X29iamVjdC0+aXNMaW5lQnJlYWsoKSkKICAgICAgICAgICAgIHRvUmVuZGVyQlIoci0+bV9vYmpl
Y3QpLT5yZXBsYWNlSW5saW5lQm94V3JhcHBlcihyLT5tX2JveCk7CiAgICAgfQogICAgIC8vIFBv
c2l0aW9uZWQgb2JqZWN0cyBhbmQgemVyby1sZW5ndGggdGV4dCBub2RlcyBkZXN0cm95IHRoZWly
IGJveGVzIGluCkBAIC0xODQyLDcgKzE4NDIsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5
b3V0SW5saW5lQ2hpbGRyCiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICAgICAgICAgIG8tPmxheW91dElmTmVlZGVkKCk7CiAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfSBlbHNlIGlmIChvLT5pc1RleHRPckJSKCkgfHwgKG8tPmlzUmVuZGVySW5saW5lKCkg
JiYgIXdhbGtlci5hdEVuZE9mSW5saW5lKCkpKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG8t
PmlzVGV4dE9yTGluZUJyZWFrKCkgfHwgKG8tPmlzUmVuZGVySW5saW5lKCkgJiYgIXdhbGtlci5h
dEVuZE9mSW5saW5lKCkpKSB7CiAgICAgICAgICAgICAgICAgaWYgKG8tPmlzUmVuZGVySW5saW5l
KCkpCiAgICAgICAgICAgICAgICAgICAgIHRvUmVuZGVySW5saW5lKG8pLT51cGRhdGVBbHdheXND
cmVhdGVMaW5lQm94ZXMobGF5b3V0U3RhdGUuaXNGdWxsTGF5b3V0KCkpOwogICAgICAgICAgICAg
ICAgIGlmIChsYXlvdXRTdGF0ZS5pc0Z1bGxMYXlvdXQoKSB8fCBvLT5zZWxmTmVlZHNMYXlvdXQo
KSkKQEAgLTI1NDYsOCArMjU0Niw2IEBAIHN0YXRpYyBib29sIHRleHRCZWdpbnNXaXRoQnJlYWth
YmxlUG9zaXQKIHsKICAgICBBU1NFUlQobmV4dC0+aXNUZXh0KCkpOwogICAgIFJlbmRlclRleHQq
IG5leHRUZXh0ID0gdG9SZW5kZXJUZXh0KG5leHQpOwotICAgIGlmIChuZXh0VGV4dC0+aXNXb3Jk
QnJlYWsoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKCFuZXh0VGV4dC0+dGV4dExl
bmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgVUNoYXIgYyA9IG5leHRUZXh0LT5j
aGFyYWN0ZXJBdCgwKTsKQEAgLTI1NjgsNiArMjU2Niw5IEBAIHN0YXRpYyBib29sIGNhbkJyZWFr
QXRUaGlzUG9zaXRpb24oYm9vbCAKICAgICBpZiAoYXV0b1dyYXAgJiYgY3VycmVudENoYXJhY3Rl
cklzU3BhY2UpCiAgICAgICAgIHJldHVybiB0cnVlOwogCisgICAgaWYgKG5leHQgJiYgbmV4dC0+
aXNMaW5lQnJlYWtPcHBvcnR1bml0eSgpKQorICAgICAgICByZXR1cm4gYXV0b1dyYXA7CisKICAg
ICBib29sIG5leHRJc1RleHQgPSAobmV4dCAmJiAoY3VycmVudC5tX29iai0+aXNUZXh0KCkgfHwg
aXNFbXB0eUlubGluZShjdXJyZW50Lm1fb2JqKSkgJiYgbmV4dC0+aXNUZXh0KCkgJiYgKGF1dG9X
cmFwIHx8IG5leHQtPnN0eWxlKCktPmF1dG9XcmFwKCkpKTsKICAgICBpZiAoIW5leHRJc1RleHQp
CiAgICAgICAgIHJldHVybiBhdXRvV3JhcDsKQEAgLTI4NzcsMTEgKzI4NzgsNiBAQCBJbmxpbmVJ
dGVyYXRvciBSZW5kZXJCbG9jazo6TGluZUJyZWFrZXI6CiAgICAgICAgICAgICB9CiAjZW5kaWYK
IAotICAgICAgICAgICAgaWYgKHQtPmlzV29yZEJyZWFrKCkpIHsKLSAgICAgICAgICAgICAgICBj
b21taXRMaW5lQnJlYWtBdEN1cnJlbnRXaWR0aCh3aWR0aCwgbEJyZWFrLCBjdXJyZW50Lm1fb2Jq
KTsKLSAgICAgICAgICAgICAgICBBU1NFUlQoY3VycmVudC5tX3BvcyA9PSB0LT50ZXh0TGVuZ3Ro
KCkpOwotICAgICAgICAgICAgfQotCiAgICAgICAgICAgICBpZiAocmVuZGVyVGV4dEluZm8ubV90
ZXh0ICE9IHQpIHsKICAgICAgICAgICAgICAgICB1cGRhdGVDb3VudGVySWZOZWVkZWQodCk7CiAg
ICAgICAgICAgICAgICAgcmVuZGVyVGV4dEluZm8ubV90ZXh0ID0gdDsKQEAgLTMxNTYsNyArMzE1
Miw5IEBAIElubGluZUl0ZXJhdG9yIFJlbmRlckJsb2NrOjpMaW5lQnJlYWtlcjoKICAgICAgICAg
ICAgICAgICBpZiAobV9oeXBoZW5hdGVkKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVuZDsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlCisgICAgICAgIH0gZWxzZSBpZiAoY3VycmVu
dC5tX29iai0+aXNMaW5lQnJlYWtPcHBvcnR1bml0eSgpKQorICAgICAgICAgICAgY29tbWl0TGlu
ZUJyZWFrQXRDdXJyZW50V2lkdGgod2lkdGgsIGxCcmVhaywgY3VycmVudC5tX29iaik7CisgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCiAgICAgICAgIGJv
b2wgY2FuQnJlYWtIZXJlID0gY2FuQnJlYWtBdFRoaXNQb3NpdGlvbihhdXRvV3JhcCwgd2lkdGgs
IGxCcmVhaywgbmV4dCwgY3VycmVudCwgY3VycldTLCBjdXJyZW50Q2hhcmFjdGVySXNTcGFjZSwg
YXV0b1dyYXBXYXNFdmVyVHJ1ZU9uTGluZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW5saW5lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW5saW5lLmNwcAkocmV2aXNpb24gMTU2MDI0KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwNiw3ICs2MDYs
NyBAQCB2b2lkIFJlbmRlcklubGluZTo6Z2VuZXJhdGVDdWxsZWRMaW5lQm94CiAgICAgICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICB5aWVsZChGbG9hdFJlY3QobG9naWNhbFRv
cCwgY2hpbGRUZXh0LT55KCksIGxvZ2ljYWxIZWlnaHQsIGNoaWxkVGV4dC0+bG9naWNhbFdpZHRo
KCkpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChjdXJyLT5pc0JSKCkpIHsK
KyAgICAgICAgfSBlbHNlIGlmIChjdXJyLT5pc0xpbmVCcmVhaygpKSB7CiAgICAgICAgICAgICBp
ZiAoSW5saW5lQm94KiBpbmxpbmVCb3ggPSB0b1JlbmRlckJSKGN1cnIpLT5pbmxpbmVCb3hXcmFw
cGVyKCkpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCB1c2UgYSBoZWxw
ZXIgdG8gc2hhcmUgdGhlc2Ugd2l0aCB0ZXh0IHBhdGguCiAgICAgICAgICAgICAgICAgY29uc3Qg
Um9vdElubGluZUJveCYgcm9vdEJveCA9IGlubGluZUJveC0+cm9vdCgpOwpAQCAtOTA3LDcgKzkw
Nyw3IEBAIElubGluZUJveCogUmVuZGVySW5saW5lOjpjdWxsZWRJbmxpbmVGaXIKICAgICAgICAg
Ly8gZGlyZWN0aW9uIChhbGlnbmVkIHRvIHRoZSByb290IGJveCdzIGJhc2VsaW5lKS4KICAgICAg
ICAgaWYgKGN1cnItPmlzQm94KCkpCiAgICAgICAgICAgICByZXR1cm4gdG9SZW5kZXJCb3goY3Vy
ciktPmlubGluZUJveFdyYXBwZXIoKTsKLSAgICAgICAgaWYgKGN1cnItPmlzQlIoKSkgeworICAg
ICAgICBpZiAoY3Vyci0+aXNMaW5lQnJlYWsoKSkgewogICAgICAgICAgICAgUmVuZGVyQlIqIHJl
bmRlckJSID0gdG9SZW5kZXJCUihjdXJyKTsKICAgICAgICAgICAgIGlmIChyZW5kZXJCUi0+aW5s
aW5lQm94V3JhcHBlcigpKQogICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXJCUi0+aW5saW5l
Qm94V3JhcHBlcigpOwpAQCAtOTM1LDcgKzkzNSw3IEBAIElubGluZUJveCogUmVuZGVySW5saW5l
OjpjdWxsZWRJbmxpbmVMYXMKICAgICAgICAgLy8gZGlyZWN0aW9uIChhbGlnbmVkIHRvIHRoZSBy
b290IGJveCdzIGJhc2VsaW5lKS4KICAgICAgICAgaWYgKGN1cnItPmlzQm94KCkpCiAgICAgICAg
ICAgICByZXR1cm4gdG9SZW5kZXJCb3goY3VyciktPmlubGluZUJveFdyYXBwZXIoKTsKLSAgICAg
ICAgaWYgKGN1cnItPmlzQlIoKSkgeworICAgICAgICBpZiAoY3Vyci0+aXNMaW5lQnJlYWsoKSkg
ewogICAgICAgICAgICAgUmVuZGVyQlIqIHJlbmRlckJSID0gdG9SZW5kZXJCUihjdXJyKTsKICAg
ICAgICAgICAgIGlmIChyZW5kZXJCUi0+aW5saW5lQm94V3JhcHBlcigpKQogICAgICAgICAgICAg
ICAgIHJldHVybiByZW5kZXJCUi0+aW5saW5lQm94V3JhcHBlcigpOwpAQCAtMTMxNCw3ICsxMzE0
LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OmRpcnR5TGluZUJveGVzKGJvb2wgZgogICAgICAgICAg
ICAgICAgICAgICBSZW5kZXJUZXh0KiBjdXJyVGV4dCA9IHRvUmVuZGVyVGV4dChjdXJyKTsKICAg
ICAgICAgICAgICAgICAgICAgZm9yIChJbmxpbmVUZXh0Qm94KiBjaGlsZFRleHQgPSBjdXJyVGV4
dC0+Zmlyc3RUZXh0Qm94KCk7IGNoaWxkVGV4dDsgY2hpbGRUZXh0ID0gY2hpbGRUZXh0LT5uZXh0
VGV4dEJveCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRUZXh0LT5yb290KCkubWFy
a0RpcnR5KCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjdXJyLT5pc0JSKCkpIHsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnItPmlzTGluZUJyZWFrKCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgUmVuZGVyQlIqIGN1cnJCUiA9IHRvUmVuZGVyQlIoY3Vycik7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChjdXJyQlItPmlubGluZUJveFdyYXBwZXIoKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIGN1cnJCUi0+aW5saW5lQm94V3JhcHBlcigpLT5yb290KCkubWFya0RpcnR5
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlz
dC5jcHAJKHJldmlzaW9uIDE1NjAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaW5lQm94TGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0Miw3ICszNDIsNyBAQCB2b2lk
IFJlbmRlckxpbmVCb3hMaXN0OjpkaXJ0eUxpbmVzRnJvbUNoCiAgICAgICAgICAgICBJbmxpbmVC
b3gqIHdyYXBwZXIgPSB0b1JlbmRlckJveChjdXJyKS0+aW5saW5lQm94V3JhcHBlcigpOwogICAg
ICAgICAgICAgaWYgKHdyYXBwZXIpCiAgICAgICAgICAgICAgICAgYm94ID0gJndyYXBwZXItPnJv
b3QoKTsKLSAgICAgICAgfSBpZiAoY3Vyci0+aXNCUigpKSB7CisgICAgICAgIH0gaWYgKGN1cnIt
PmlzTGluZUJyZWFrKCkpIHsKICAgICAgICAgICAgIElubGluZUJveCogd3JhcHBlciA9IHRvUmVu
ZGVyQlIoY3VyciktPmlubGluZUJveFdyYXBwZXIoKTsKICAgICAgICAgICAgIGlmICh3cmFwcGVy
KQogICAgICAgICAgICAgICAgIGJveCA9ICZ3cmFwcGVyLT5yb290KCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCShyZXZpc2lvbiAxNTYwMjQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2
OCw4ICs1NjgsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaXNQb3NpdGlvbmVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9iaXRmaWVsZHMuaXNQb3NpdGlvbmVkKCk7IH0KIAogICAgIGJvb2wgaXNUZXh0KCkg
Y29uc3QgIHsgcmV0dXJuICFtX2JpdGZpZWxkcy5pc0JveCgpICYmIG1fYml0ZmllbGRzLmlzVGV4
dE9yUmVuZGVyVmlldygpOyB9Ci0gICAgYm9vbCBpc0JSKCkgY29uc3QgeyByZXR1cm4gbV9iaXRm
aWVsZHMuaXNCUigpOyB9Ci0gICAgYm9vbCBpc1RleHRPckJSKCkgY29uc3QgeyByZXR1cm4gaXNU
ZXh0KCkgfHwgaXNCUigpOyB9CisgICAgYm9vbCBpc0xpbmVCcmVhaygpIGNvbnN0IHsgcmV0dXJu
IG1fYml0ZmllbGRzLmlzTGluZUJyZWFrKCk7IH0KKyAgICBib29sIGlzQlIoKSBjb25zdCB7IHJl
dHVybiBpc0xpbmVCcmVhaygpICYmICFpc1dCUigpOyB9CisgICAgYm9vbCBpc0xpbmVCcmVha09w
cG9ydHVuaXR5KCkgY29uc3QgeyByZXR1cm4gaXNMaW5lQnJlYWsoKSAmJiBpc1dCUigpOyB9Cisg
ICAgYm9vbCBpc1RleHRPckxpbmVCcmVhaygpIGNvbnN0IHsgcmV0dXJuIGlzVGV4dCgpIHx8IGlz
TGluZUJyZWFrKCk7IH0KICAgICBib29sIGlzQm94KCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVs
ZHMuaXNCb3goKTsgfQogICAgIGJvb2wgaXNSZW5kZXJWaWV3KCkgY29uc3QgIHsgcmV0dXJuIG1f
Yml0ZmllbGRzLmlzQm94KCkgJiYgbV9iaXRmaWVsZHMuaXNUZXh0T3JSZW5kZXJWaWV3KCk7IH0K
ICAgICBib29sIGlzSW5saW5lKCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuaXNJbmxpbmUo
KTsgfSAvLyBpbmxpbmUgb2JqZWN0CkBAIC03MDIsNyArNzA0LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBjb21wdXRlQmFja2dyb3VuZElzS25vd25Ub0JlT2JzY3VyZWQoKSB7IHJldHVy
biBmYWxzZTsgfQogCiAgICAgdm9pZCBzZXRJc1RleHQoKSB7IEFTU0VSVCghaXNCb3goKSk7IG1f
Yml0ZmllbGRzLnNldElzVGV4dE9yUmVuZGVyVmlldyh0cnVlKTsgfQotICAgIHZvaWQgc2V0SXNC
UigpIHsgbV9iaXRmaWVsZHMuc2V0SXNCUih0cnVlKTsgfQorICAgIHZvaWQgc2V0SXNMaW5lQnJl
YWsoKSB7IG1fYml0ZmllbGRzLnNldElzTGluZUJyZWFrKHRydWUpOyB9CiAgICAgdm9pZCBzZXRJ
c0JveCgpIHsgbV9iaXRmaWVsZHMuc2V0SXNCb3godHJ1ZSk7IH0KICAgICB2b2lkIHNldElzUmVu
ZGVyVmlldygpIHsgQVNTRVJUKGlzQm94KCkpOyBtX2JpdGZpZWxkcy5zZXRJc1RleHRPclJlbmRl
clZpZXcodHJ1ZSk7IH0KICAgICB2b2lkIHNldFJlcGxhY2VkKGJvb2wgYiA9IHRydWUpIHsgbV9i
aXRmaWVsZHMuc2V0SXNSZXBsYWNlZChiKTsgfQpAQCAtMTA1MCw2ICsxMDUyLDggQEAgcHJpdmF0
ZToKIAogICAgIE5vZGUqIGdlbmVyYXRpbmdQc2V1ZG9Ib3N0RWxlbWVudCgpIGNvbnN0OwogCisg
ICAgdmlydHVhbCBib29sIGlzV0JSKCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0
dXJuIGZhbHNlOyB9CisKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKICAgICB2b2lkIHJlbW92ZVNo
YXBlSW1hZ2VDbGllbnQoU2hhcGVWYWx1ZSopOwogI2VuZGlmCkBAIC0xMTAyLDcgKzExMDYsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgLCBtX2lzQm94KGZhbHNlKQogICAgICAgICAgICAgLCBt
X2lzSW5saW5lKHRydWUpCiAgICAgICAgICAgICAsIG1faXNSZXBsYWNlZChmYWxzZSkKLSAgICAg
ICAgICAgICwgbV9pc0JSKGZhbHNlKQorICAgICAgICAgICAgLCBtX2lzTGluZUJyZWFrKGZhbHNl
KQogICAgICAgICAgICAgLCBtX2hvcml6b250YWxXcml0aW5nTW9kZSh0cnVlKQogICAgICAgICAg
ICAgLCBtX2lzRHJhZ2dpbmcoZmFsc2UpCiAgICAgICAgICAgICAsIG1faGFzTGF5ZXIoZmFsc2Up
CkBAIC0xMTM0LDcgKzExMzgsNyBAQCBwcml2YXRlOgogICAgICAgICBBRERfQk9PTEVBTl9CSVRG
SUVMRChpc0JveCwgSXNCb3gpOwogICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVMRChpc0lubGlu
ZSwgSXNJbmxpbmUpOwogICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVMRChpc1JlcGxhY2VkLCBJ
c1JlcGxhY2VkKTsKLSAgICAgICAgQUREX0JPT0xFQU5fQklURklFTEQoaXNCUiwgSXNCUik7Cisg
ICAgICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKGlzTGluZUJyZWFrLCBJc0xpbmVCcmVhayk7CiAg
ICAgICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKGhvcml6b250YWxXcml0aW5nTW9kZSwgSG9yaXpv
bnRhbFdyaXRpbmdNb2RlKTsKICAgICAgICAgQUREX0JPT0xFQU5fQklURklFTEQoaXNEcmFnZ2lu
ZywgSXNEcmFnZ2luZyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3RDaGlsZExpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwCShyZXZpc2lvbiAxNTYwMjQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzYsNyArNzYsNyBAQCBSZW5kZXJPYmplY3QqIFJlbmRlck9iamVjdENoaWxkTGlzdDo6
cmVtCiAgICAgLy8gSWYgd2UgaGF2ZSBhIGxpbmUgYm94IHdyYXBwZXIsIGRlbGV0ZSBpdC4KICAg
ICBpZiAob2xkQ2hpbGQtPmlzQm94KCkpCiAgICAgICAgIHRvUmVuZGVyQm94KG9sZENoaWxkKS0+
ZGVsZXRlTGluZUJveFdyYXBwZXIoKTsKLSAgICBlbHNlIGlmIChvbGRDaGlsZC0+aXNCUigpKQor
ICAgIGVsc2UgaWYgKG9sZENoaWxkLT5pc0xpbmVCcmVhaygpKQogICAgICAgICB0b1JlbmRlckJS
KG9sZENoaWxkKS0+ZGVsZXRlSW5saW5lQm94V3JhcHBlcigpOwogCiAgICAgLy8gSWYgb2xkQ2hp
bGQgaXMgdGhlIHN0YXJ0IG9yIGVuZCBvZiB0aGUgc2VsZWN0aW9uLCB0aGVuIGNsZWFyIHRoZSBz
ZWxlY3Rpb24gdG8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAJ
KHJldmlzaW9uIDE1NjAyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg5LDExICsxODksNiBAQCBib29sIFJlbmRlclRleHQ6
OmlzVGV4dEZyYWdtZW50KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVu
ZGVyVGV4dDo6aXNXb3JkQnJlYWsoKSBjb25zdAotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQog
dm9pZCBSZW5kZXJUZXh0Ojp1cGRhdGVOZWVkc1RyYW5zY29kaW5nKCkKIHsKICAgICBjb25zdCBU
ZXh0RW5jb2RpbmcqIGVuY29kaW5nID0gZG9jdW1lbnQoKS5kZWNvZGVyKCkgPyAmZG9jdW1lbnQo
KS5kZWNvZGVyKCktPmVuY29kaW5nKCkgOiAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dC5oCShyZXZpc2lvbiAxNTYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw2IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBPVkVSUklERTsKIAog
ICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGcmFnbWVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9v
bCBpc1dvcmRCcmVhaygpIGNvbnN0OwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IG9yaWdpbmFsVGV4dCgpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCShyZXZpc2lvbiAxNTYwMjQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMwOCw3ICszMDgsNyBAQCB2b2lkIFJlbmRlclRyZWVBc1RleHQ6OndyaXRlUmVuZGVyT2JqZWN0
CiAgICAgICAgICAgICAgICAgdHMgPDwgIiBbdGV4dFN0cm9rZVdpZHRoPSIgPDwgby5zdHlsZSgp
LT50ZXh0U3Ryb2tlV2lkdGgoKSA8PCAiXSI7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIW8u
aXNCb3hNb2RlbE9iamVjdCgpIHx8IG8uaXNCUigpKQorICAgICAgICBpZiAoIW8uaXNCb3hNb2Rl
bE9iamVjdCgpIHx8IG8uaXNMaW5lQnJlYWsoKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICBjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgYm94ID0gdG9SZW5kZXJCb3hNb2RlbE9i
amVjdChvKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXb3JkQnJlYWsu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXb3JkQnJl
YWsuY3BwCShyZXZpc2lvbiAxNTYwMjQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyV29yZEJyZWFrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw0OSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSZW5kZXJXb3JkQnJlYWsuaCIK
LQotI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVu
ZGVyV29yZEJyZWFrOjpSZW5kZXJXb3JkQnJlYWsoSFRNTEVsZW1lbnQqIGVsZW1lbnQpCi0gICAg
OiBSZW5kZXJUZXh0KGVsZW1lbnQsIFN0cmluZ0ltcGw6OmVtcHR5KCkpCi17Ci19Ci0KLWNvbnN0
IGNoYXIqIFJlbmRlcldvcmRCcmVhazo6cmVuZGVyTmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
ICJSZW5kZXJXb3JkQnJlYWsiOwotfQotCi1ib29sIFJlbmRlcldvcmRCcmVhazo6aXNXb3JkQnJl
YWsoKSBjb25zdAotewotICAgIHJldHVybiB0cnVlOwotfQotCi19CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyV29yZEJyZWFrLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcldvcmRCcmVhay5oCShyZXZpc2lvbiAxNTYwMjQpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV29yZEJyZWFrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAotICoKLSAqLwotCi0jaWZuZGVmIFJlbmRlcldvcmRCcmVha19o
Ci0jZGVmaW5lIFJlbmRlcldvcmRCcmVha19oCi0KLSNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSFRNTEVsZW1lbnQ7Ci0KLWNsYXNzIFJlbmRl
cldvcmRCcmVhayBGSU5BTCA6IHB1YmxpYyBSZW5kZXJUZXh0IHsKLXB1YmxpYzoKLSAgICBleHBs
aWNpdCBSZW5kZXJXb3JkQnJlYWsoSFRNTEVsZW1lbnQqKTsKLQotICAgIHZpcnR1YWwgY29uc3Qg
Y2hhciogcmVuZGVyTmFtZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc1dvcmRCcmVhaygp
IGNvbnN0OwotfTsKLQotfQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJpbmdBbGxJbk9uZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcmluZ0FsbEluT25lLmNwcAkocmV2aXNpb24gMTU2MDI0KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcmluZ0FsbEluT25lLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTE4LDcgKzExOCw2IEBACiAjaW5jbHVkZSAiUmVuZGVyVmlkZW8uY3BwIgogI2luY2x1ZGUg
IlJlbmRlclZpZXcuY3BwIgogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5jcHAiCi0jaW5jbHVkZSAi
UmVuZGVyV29yZEJyZWFrLmNwcCIKICNpbmNsdWRlICJSb290SW5saW5lQm94LmNwcCIKICNpbmNs
dWRlICJTY3JvbGxCZWhhdmlvci5jcHAiCiAjaW5jbHVkZSAiYnJlYWtfbGluZXMuY3BwIgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAkocmV2aXNpb24g
MTU2MDI1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05MTUsNyArOTE1LDcgQEAgdm9pZCBSb290SW5saW5lQm94Ojphc2Nl
bnRBbmREZXNjZW50Rm9yQgogICAgIGlmIChpbmNsdWRlTWFyZ2luRm9yQm94KGJveCkpIHsKICAg
ICAgICAgTGF5b3V0VW5pdCBhc2NlbnRXaXRoTWFyZ2luID0gYm94LT5yZW5kZXJlcigpLnN0eWxl
KGlzRmlyc3RMaW5lU3R5bGUoKSktPmZvbnRNZXRyaWNzKCkuYXNjZW50KGJhc2VsaW5lVHlwZSgp
KTsKICAgICAgICAgTGF5b3V0VW5pdCBkZXNjZW50V2l0aE1hcmdpbiA9IGJveC0+cmVuZGVyZXIo
KS5zdHlsZShpc0ZpcnN0TGluZVN0eWxlKCkpLT5mb250TWV0cmljcygpLmRlc2NlbnQoYmFzZWxp
bmVUeXBlKCkpOwotICAgICAgICBpZiAoYm94LT5wYXJlbnQoKSAmJiAhYm94LT5yZW5kZXJlcigp
LmlzVGV4dE9yQlIoKSkgeworICAgICAgICBpZiAoYm94LT5wYXJlbnQoKSAmJiAhYm94LT5yZW5k
ZXJlcigpLmlzVGV4dE9yTGluZUJyZWFrKCkpIHsKICAgICAgICAgICAgIGFzY2VudFdpdGhNYXJn
aW4gKz0gYm94LT5ib3hNb2RlbE9iamVjdCgpLT5ib3JkZXJBbmRQYWRkaW5nQmVmb3JlKCkgKyBi
b3gtPmJveE1vZGVsT2JqZWN0KCktPm1hcmdpbkJlZm9yZSgpOwogICAgICAgICAgICAgZGVzY2Vu
dFdpdGhNYXJnaW4gKz0gYm94LT5ib3hNb2RlbE9iamVjdCgpLT5ib3JkZXJBbmRQYWRkaW5nQWZ0
ZXIoKSArIGJveC0+Ym94TW9kZWxPYmplY3QoKS0+bWFyZ2luQWZ0ZXIoKTsKICAgICAgICAgfQpA
QCAtOTI5LDcgKzkyOSw3IEBAIHZvaWQgUm9vdElubGluZUJveDo6YXNjZW50QW5kRGVzY2VudEZv
ckIKIAogTGF5b3V0VW5pdCBSb290SW5saW5lQm94Ojp2ZXJ0aWNhbFBvc2l0aW9uRm9yQm94KElu
bGluZUJveCogYm94LCBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUmIHZlcnRpY2FsUG9zaXRpb25DYWNo
ZSkKIHsKLSAgICBpZiAoYm94LT5yZW5kZXJlcigpLmlzVGV4dE9yQlIoKSkKKyAgICBpZiAoYm94
LT5yZW5kZXJlcigpLmlzVGV4dE9yTGluZUJyZWFrKCkpCiAgICAgICAgIHJldHVybiBib3gtPnBh
cmVudCgpLT5sb2dpY2FsVG9wKCk7CiAgICAgCiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJl
bmRlcmVyID0gYm94LT5ib3hNb2RlbE9iamVjdCgpOwpAQCAtMTAwMSw3ICsxMDAxLDcgQEAgTGF5
b3V0VW5pdCBSb290SW5saW5lQm94Ojp2ZXJ0aWNhbFBvc2l0aQogCiBib29sIFJvb3RJbmxpbmVC
b3g6OmluY2x1ZGVMZWFkaW5nRm9yQm94KElubGluZUJveCogYm94KSBjb25zdAogewotICAgIGlm
IChib3gtPnJlbmRlcmVyKCkuaXNSZXBsYWNlZCgpIHx8IChib3gtPnJlbmRlcmVyKCkuaXNUZXh0
T3JCUigpICYmICFib3gtPmJlaGF2ZXNMaWtlVGV4dCgpKSkKKyAgICBpZiAoYm94LT5yZW5kZXJl
cigpLmlzUmVwbGFjZWQoKSB8fCAoYm94LT5yZW5kZXJlcigpLmlzVGV4dE9yTGluZUJyZWFrKCkg
JiYgIWJveC0+YmVoYXZlc0xpa2VUZXh0KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBMaW5lQm94Q29udGFpbiBsaW5lQm94Q29udGFpbiA9IHJlbmRlcmVyKCkuc3R5bGUoKS0+bGlu
ZUJveENvbnRhaW4oKTsKQEAgLTEwMTAsNyArMTAxMCw3IEBAIGJvb2wgUm9vdElubGluZUJveDo6
aW5jbHVkZUxlYWRpbmdGb3JCb3gKIAogYm9vbCBSb290SW5saW5lQm94OjppbmNsdWRlRm9udEZv
ckJveChJbmxpbmVCb3gqIGJveCkgY29uc3QKIHsKLSAgICBpZiAoYm94LT5yZW5kZXJlcigpLmlz
UmVwbGFjZWQoKSB8fCAoYm94LT5yZW5kZXJlcigpLmlzVGV4dE9yQlIoKSAmJiAhYm94LT5iZWhh
dmVzTGlrZVRleHQoKSkpCisgICAgaWYgKGJveC0+cmVuZGVyZXIoKS5pc1JlcGxhY2VkKCkgfHwg
KGJveC0+cmVuZGVyZXIoKS5pc1RleHRPckxpbmVCcmVhaygpICYmICFib3gtPmJlaGF2ZXNMaWtl
VGV4dCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIGlmICghYm94LT5iZWhh
dmVzTGlrZVRleHQoKSAmJiBib3gtPmlzSW5saW5lRmxvd0JveCgpICYmICF0b0lubGluZUZsb3dC
b3goYm94KS0+aGFzVGV4dENoaWxkcmVuKCkpCkBAIC0xMDIzLDcgKzEwMjMsNyBAQCBib29sIFJv
b3RJbmxpbmVCb3g6OmluY2x1ZGVGb250Rm9yQm94KEluCiAKIGJvb2wgUm9vdElubGluZUJveDo6
aW5jbHVkZUdseXBoc0ZvckJveChJbmxpbmVCb3gqIGJveCkgY29uc3QKIHsKLSAgICBpZiAoYm94
LT5yZW5kZXJlcigpLmlzUmVwbGFjZWQoKSB8fCAoYm94LT5yZW5kZXJlcigpLmlzVGV4dE9yQlIo
KSAmJiAhYm94LT5iZWhhdmVzTGlrZVRleHQoKSkpCisgICAgaWYgKGJveC0+cmVuZGVyZXIoKS5p
c1JlcGxhY2VkKCkgfHwgKGJveC0+cmVuZGVyZXIoKS5pc1RleHRPckxpbmVCcmVhaygpICYmICFi
b3gtPmJlaGF2ZXNMaWtlVGV4dCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAg
IGlmICghYm94LT5iZWhhdmVzTGlrZVRleHQoKSAmJiBib3gtPmlzSW5saW5lRmxvd0JveCgpICYm
ICF0b0lubGluZUZsb3dCb3goYm94KS0+aGFzVGV4dENoaWxkcmVuKCkpCkBAIC0xMDM2LDcgKzEw
MzYsNyBAQCBib29sIFJvb3RJbmxpbmVCb3g6OmluY2x1ZGVHbHlwaHNGb3JCb3goCiAKIGJvb2wg
Um9vdElubGluZUJveDo6aW5jbHVkZU1hcmdpbkZvckJveChJbmxpbmVCb3gqIGJveCkgY29uc3QK
IHsKLSAgICBpZiAoYm94LT5yZW5kZXJlcigpLmlzUmVwbGFjZWQoKSB8fCAoYm94LT5yZW5kZXJl
cigpLmlzVGV4dE9yQlIoKSAmJiAhYm94LT5iZWhhdmVzTGlrZVRleHQoKSkpCisgICAgaWYgKGJv
eC0+cmVuZGVyZXIoKS5pc1JlcGxhY2VkKCkgfHwgKGJveC0+cmVuZGVyZXIoKS5pc1RleHRPckxp
bmVCcmVhaygpICYmICFib3gtPmJlaGF2ZXNMaWtlVGV4dCgpKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgTGluZUJveENvbnRhaW4gbGluZUJveENvbnRhaW4gPSByZW5kZXJlcigpLnN0
eWxlKCktPmxpbmVCb3hDb250YWluKCk7Cg==
</data>
<flag name="review"
          id="234142"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>