<?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>146615</bug_id>
          
          <creation_ts>2015-07-04 19:32:45 -0700</creation_ts>
          <short_desc>Reduce the memory usage of the prefix tree</short_desc>
          <delta_ts>2015-07-06 14:08:42 -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>New Bugs</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="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1106915</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-07-04 19:32:45 -0700</bug_when>
    <thetext>Reduce the memory usage of the prefix tree</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106916</commentid>
    <comment_count>1</comment_count>
      <attachid>256167</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-07-04 19:42:00 -0700</bug_when>
    <thetext>Created attachment 256167
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106950</commentid>
    <comment_count>2</comment_count>
      <attachid>256167</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-07-05 09:46:23 -0700</bug_when>
    <thetext>Comment on attachment 256167
Patch

Nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107215</commentid>
    <comment_count>3</comment_count>
      <attachid>256167</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-06 14:08:34 -0700</bug_when>
    <thetext>Comment on attachment 256167
Patch

Clearing flags on attachment: 256167

Committed r186375: &lt;http://trac.webkit.org/changeset/186375&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107216</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-06 14:08:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256167</attachid>
            <date>2015-07-04 19:42:00 -0700</date>
            <delta_ts>2015-07-06 14:08:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146615-20150704194104.patch</filename>
            <type>text/plain</type>
            <size>30266</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2MjcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzAyYjlkYjJhYjkzZTU1
MDliOGZkYzRmOTc5NWM2YTJlYjE0NTc0OC4uNTk4MTRkNzQyMTcwMDQyMjRjM2IxMTcwMDdlYzlm
ZTA3ZjMyZjc4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDE1LTA3LTA0ICBCZW5q
YW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgdGhl
IG1lbW9yeSB1c2FnZSBvZiB0aGUgcHJlZml4IHRyZWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjYxNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyB0d28gbGl0dGxl
IGNoYW5nZXMgdGhhdCByZWR1Y2VzIHRoZSBzaXplCisgICAgICAgIG9mIHRoZSBwcmVmaXggdHJl
ZSBieSBhYm91dCA0MCUuCisKKyAgICAgICAgRmlyc3QsIHRoZSBUZXJtcyBhcmUgaW50ZXJuZWQu
IFRoZSBuZXcgY2xhc3MgQ29tYmluZWRGaWx0ZXJzQWxwaGFiZXQKKyAgICAgICAgdGFrZXMgY2Fy
ZSBvZiBrZWVwaW5nIGEgdW5pcXVlIHZlcnNpb24gb2YgZWFjaCB0ZXJtIGZvciB1c2UKKyAgICAg
ICAgYnkgdGhlIENvbWJpbmVkVVJMRmlsdGVycy4KKworICAgICAgICBTaW5jZSBlYWNoIFRlcm0g
aXMgZmFpcmx5IGJpZyBidXQgd2UgaGF2ZSBhIHNtYWxsIG51bWJlciBvZgorICAgICAgICB1bmlx
dWUgdGVybSwgd2Ugc2lnbmlmaWNhbnRseSByZWR1Y2UgdGhlIGVkZ2Ugc2l6ZS4KKworICAgICAg
ICBTZWNvbmQsIHRoZSBhY3Rpb25zIGFyZSBubyBsb25nZXIgc3RvcmVkIG9uIGVhY2ggVmVydGV4
LgorICAgICAgICBUaGV5IGFyZSBub3cgc3RvcmVkIG9uIHRoZSBzaWRlLCBpbiBhIEhhc2hNYXAg
aW5kZXhlZCBieQorICAgICAgICB0aGVpciBWZXJ0ZXguCisKKyAgICAgICAgVGhpcyB3b3JrcyB3
ZWxsIGJlY2F1c2UgdGhlIEFjdGlvbnMgYXJlIHNwYXJzZSBvdmVyIHRoZSB0cmVlLgorICAgICAg
ICBUeXBpY2FsbHksIG9ubHkgdGhlIGxlYXZlcyBoYXZlIGFjdGlvbnMuIEludGVybmFsIHZlcnRp
Y2VzCisgICAgICAgIHNvbWV0aW1lIGdldCBhY3Rpb25zIGJ1dCB0aGF0J3MgdW5jb21tb24uCisK
KyAgICAgICAgLS0tCisKKyAgICAgICAgVGhlIG5leHQgc3RlcCB0byByZWR1Y2UgdGhlIG1lbW9y
eSBmb290cHJpbnQgd291bGQgYmUgdG8KKyAgICAgICAgbWFrZSBQcmVmaXhUcmVlVmVydGV4IGlu
dG8gYSBjdXN0b20gcGFja2VkIHN0cnVjdHVyZSBpbnN0ZWFkCisgICAgICAgIG9mIHVzaW5nIGEg
VmVjdG9yLgorCisgICAgICAgIFN1Y2ggY2hhbmdlIGlzIHZlcnkgaW52YXNpdmUgYW5kIG1vcmUg
ZXJyb3IgcHJvbmUgc28gSSBkZWNpZGVkCisgICAgICAgIGFnYWluc3QgaXQgZm9yIHRoaXMgcGF0
Y2guCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogY29udGVudGV4dGVuc2lvbnMvQ29tYmluZWRGaWx0ZXJzQWxwaGFiZXQuY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRl
cnMuaC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpUZXJtQ3JlYXRvclRy
YW5zbGF0b3I6Omhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlRl
cm1DcmVhdG9yVHJhbnNsYXRvcjo6ZXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6OlRlcm1DcmVhdG9yVHJhbnNsYXRvcjo6dHJhbnNsYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb21iaW5lZEZpbHRlcnNBbHBoYWJldDo6aW50ZXJu
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbWJpbmVkRmlsdGVy
c0FscGhhYmV0OjptZW1vcnlVc2VkKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db21i
aW5lZEZpbHRlcnNBbHBoYWJldC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuaC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRFeHRlbnNpb25zOjpDb21iaW5lZEZpbHRlcnNBbHBoYWJldDo6VGVybVBvaW50ZXJIYXNoOjpo
YXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb21iaW5lZEZpbHRl
cnNBbHBoYWJldDo6VGVybVBvaW50ZXJIYXNoOjplcXVhbCk6CisgICAgICAgICogY29udGVudGV4
dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRFeHRlbnNpb25zOjpyZWN1cnNpdmVNZW1vcnlVc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpDb21iaW5lZFVSTEZpbHRlcnM6Om1lbW9yeVVzZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OnByZWZpeFRyZWVWZXJ0ZXhUb1N0cmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6cmVjdXJzaXZlUHJpbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbWJpbmVkVVJMRmlsdGVyczo6
YWRkUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Z2VuZXJh
dGVORkFGb3JTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpD
b21iaW5lZFVSTEZpbHRlcnM6OnByb2Nlc3NORkFzKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5z
aW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuaDoKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uc0RlYnVnZ2luZy5oOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25z
L1Rlcm0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpUZXJtOjppc1Zh
bGlkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpUZXJtOjpkZXN0cm95
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpUZXJtOjptZW1vcnlVc2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpUZXJtOjp0b1N0cmluZyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6VGVybUhhc2g6
Omhhc2gpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlRl
cm1IYXNoOjplcXVhbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5z
aW9uczo6VGVybTo6VGVybSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0
ZW5zaW9uczo6VGVybTo6aXNLbm93blRvTWF0Y2hBbnlTdHJpbmcpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlRlcm06Omhhc0ZpeGVkTGVuZ3RoKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpUZXJtOjpvcGVyYXRv
cj09KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpUZXJt
OjpoYXNoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpU
ZXJtOjppc0RlbGV0ZWRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
RXh0ZW5zaW9uczo6VGVybTo6aXNVbml2ZXJzYWxUcmFuc2l0aW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpUZXJtOjpnZW5lcmF0ZVN1YmdyYXBoRm9y
QXRvbSk6IERlbGV0ZWQuCisKIDIwMTUtMDctMDMgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1p
bkB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDb250ZW50IEV4dGVuc2lvbnNdIE1ha2UgdGhlIERG
QSB0cmFuc2l0aW9ucyByYW5nZXMgaW5zdGVhZCBvZiBjaGFyYWN0ZXJzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjVmYTAzOWEw
NTkwN2E5ZTQzZTEzYmY2MTdkMmYxZTI5ZmJkZTc4YS4uMzNiZTllMTIxMWFkNDE3N2NkZjk2ZDc5
NzhlMWFlMWNjMTZmYjkyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAzNCw3ICsxMDM0LDcgQEAKIAkJMjZENEU4NDYxQjQy
NTM5RDAwRTAzM0EyIC8qIERGQU5vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMjZENEU4NDUxQjQyNTM5RDAwRTAzM0EyIC8qIERGQU5vZGUuY3Bw
ICovOyB9OwogCQkyNkU5NDREODFBQzRCMkREMDA3Qjg1QjUgLyogQ29tYmluZWRVUkxGaWx0ZXJz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2RTk0
NEQ0MUFDNEIyREQwMDdCODVCNSAvKiBDb21iaW5lZFVSTEZpbHRlcnMuY3BwICovOyB9OwogCQky
NkU5NDREOTFBQzRCMkREMDA3Qjg1QjUgLyogQ29tYmluZWRVUkxGaWx0ZXJzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkU5NDRENTFBQzRCMkREMDA3
Qjg1QjUgLyogQ29tYmluZWRVUkxGaWx0ZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMjZFOTQ0REQxQUM0QjRFQTAwN0I4NUI1IC8qIFRlcm0u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2RTk0NERD
MUFDNEI0RUEwMDdCODVCNSAvKiBUZXJtLmggKi87IH07CisJCTI2RTk0NEREMUFDNEI0RUEwMDdC
ODVCNSAvKiBUZXJtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyNkU5NDREQzFBQzRCNEVBMDA3Qjg1QjUgLyogVGVybS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTI2RTk4QTEwMTMwQTlGQ0EwMDhFQjdC
MiAvKiBUZXh0Q29kZWNBU0NJSUZhc3RQYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyNkU5OEEwRjEzMEE5RkNBMDA4RUI3QjIgLyogVGV4dENvZGVj
QVNDSUlGYXN0UGF0aC5oICovOyB9OwogCQkyNkYwQzg5NzFBMkU3MjRCMDAyNzk0RjggLyogQ29u
dGVudEV4dGVuc2lvblBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyNkYwQzg5NTFBMkU3MjRCMDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lv
blBhcnNlci5jcHAgKi87IH07CiAJCTI2RjBDODk4MUEyRTcyNEIwMDI3OTRGOCAvKiBDb250ZW50
RXh0ZW5zaW9uUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyNkYwQzg5NjFBMkU3MjRCMDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lvblBhcnNl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0x
NTk5LDYgKzE1OTksOCBAQAogCQk0M0I5MzM2QTEzQjI2MUIxMDA0NTg0QkYgLyogU1ZHQW5pbWF0
ZWRQb2ludExpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDNCOTMzNjgxM0IyNjFCMTAwNDU4NEJGIC8qIFNWR0FuaW1hdGVkUG9pbnRMaXN0LmNw
cCAqLzsgfTsKIAkJNDNDMDkyQkMxMkQ5RTRFRTAwQTk4OUMzIC8qIFJlbmRlclNWR0ZvcmVpZ25P
YmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQz
QzA5MkJBMTJEOUU0RUUwMEE5ODlDMyAvKiBSZW5kZXJTVkdGb3JlaWduT2JqZWN0LmggKi87IH07
CiAJCTQzRDI1OTc3MTNDODE2RjQwMDYwODU1OSAvKiBJbWFnZUJ1ZmZlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0M0QyNTk3NjEzQzgxNkY0MDA2
MDg1NTkgLyogSW1hZ2VCdWZmZXIuY3BwICovOyB9OworCQk0M0VERDY3RTFCNDg1REJGMDA2NDBF
NzUgLyogQ29tYmluZWRGaWx0ZXJzQWxwaGFiZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDNFREQ2N0MxQjQ4NURCRjAwNjQwRTc1IC8qIENvbWJp
bmVkRmlsdGVyc0FscGhhYmV0LmNwcCAqLzsgfTsKKwkJNDNFREQ2N0YxQjQ4NURCRjAwNjQwRTc1
IC8qIENvbWJpbmVkRmlsdGVyc0FscGhhYmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0M0VERDY3RDFCNDg1REJGMDA2NDBFNzUgLyogQ29tYmluZWRG
aWx0ZXJzQWxwaGFiZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0M0Y2RkQ5NjEzQkNEMEIxMDAyMjQwNTIgLyogU1ZHQW5pbWF0ZWRJbnRlZ2Vy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzRjZG
RDk1MTNCQ0QwQjEwMDIyNDA1MiAvKiBTVkdBbmltYXRlZEludGVnZXIuY3BwICovOyB9OwogCQk0
NDE1MjkyRTBFMUFFOEEwMDBDNEEyRDAgLyogSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQxNTI5MkMwRTFBRThB
MDAwQzRBMkQwIC8qIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NDE1MjkyRjBFMUFFOEEwMDBDNEEyRDAg
LyogSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NDE1MjkyRDBFMUFFOEEwMDBDNEEyRDAgLyogSFRNTFBsdWdJ
bkltYWdlRWxlbWVudC5jcHAgKi87IH07CkBAIC04ODA2LDYgKzg4MDgsOCBAQAogCQk0M0MwOTJC
OTEyRDlFNEVFMDBBOTg5QzMgLyogUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDNDMDkyQkExMkQ5RTRFRTAwQTk4OUMzIC8q
IFJlbmRlclNWR0ZvcmVpZ25PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0M0QyNTk3NjEzQzgxNkY0MDA2MDg1NTkgLyogSW1hZ2VCdWZmZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0M0VERDY3QzFCNDg1REJGMDA2NDBFNzUgLyogQ29tYmluZWRGaWx0
ZXJzQWxwaGFiZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29t
YmluZWRGaWx0ZXJzQWxwaGFiZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
M0VERDY3RDFCNDg1REJGMDA2NDBFNzUgLyogQ29tYmluZWRGaWx0ZXJzQWxwaGFiZXQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tYmluZWRGaWx0ZXJzQWxwaGFiZXQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDNGNkZEOTUxM0JDRDBCMTAwMjI0MDUyIC8q
IFNWR0FuaW1hdGVkSW50ZWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTVkdBbmltYXRlZEludGVnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NDE1MjkyQzBFMUFFOEEwMDBDNEEyRDAgLyogSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0MTUyOTJEMEUxQUU4QTAwMEM0QTJEMCAv
KiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTU2NzcsNiArMTU2ODEsOCBAQAogCQkyNkYwQzg5MDFBMkQ3OUNCMDAyNzk0
RjggLyogY29udGVudGV4dGVuc2lvbnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAorCQkJCTQzRURENjdDMUI0ODVEQkYwMDY0MEU3NSAvKiBDb21iaW5lZEZpbHRl
cnNBbHBoYWJldC5jcHAgKi8sCisJCQkJNDNFREQ2N0QxQjQ4NURCRjAwNjQwRTc1IC8qIENvbWJp
bmVkRmlsdGVyc0FscGhhYmV0LmggKi8sCiAJCQkJMjZFOTQ0RDQxQUM0QjJERDAwN0I4NUI1IC8q
IENvbWJpbmVkVVJMRmlsdGVycy5jcHAgKi8sCiAJCQkJMjZFOTQ0RDUxQUM0QjJERDAwN0I4NUI1
IC8qIENvbWJpbmVkVVJMRmlsdGVycy5oICovLAogCQkJCTdDOTNGMzQ3MUFBNkJBNUUwMEE5OEJB
QiAvKiBDb21waWxlZENvbnRlbnRFeHRlbnNpb24uY3BwICovLApAQCAtMjYwMDEsNiArMjYwMDcs
NyBAQAogCQkJCTZCMzQ4MDk0MEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZVB0ci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTEwQjlCNkMwQjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRo
TlNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDQ0YwMjcwQUY2QzUyOTAwMDE4RTg5
IC8qIE5hdmlnYXRpb25BY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTQzRURENjdGMUI0ODVE
QkYwMDY0MEU3NSAvKiBDb21iaW5lZEZpbHRlcnNBbHBoYWJldC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTc5RjQzRDQxMDc1RTQ0QTAwMDBGODNCIC8qIE5hdmlnYXRpb25TY2hlZHVsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE5QzZFNUE2MEQ3NDY0NTgwMDY0NDJFOSAvKiBOYXZpZ2F0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCUUxMjcxOUM3MEVFRUMxNjgwMEY2MTIxMyAvKiBOYXZpZ2F0b3JC
YXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTI4NjA2LDYgKzI4NjEzLDcgQEAKIAkJCQk1MTY5NTM5
NzEzMjlBM0M4MDBCOTJEMDQgLyogSWNvbkRhdGFiYXNlQmFzZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlGRUQxM0Q0MDBDRUE5Mzk0MDBEODk0NjYgLyogSWNvbklPUy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTUxM0YxNDUzMEFCNjM0QzQwMDA5NERERiAvKiBJY29uTG9hZGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTQzRURENjdFMUI0ODVEQkYwMDY0MEU3NSAvKiBDb21iaW5lZEZpbHRlcnNB
bHBoYWJldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjc1MzU4RTBCMDUzQTY2MDAyQ0U2NEYg
LyogSWNvbk1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxRTFFQ0MwMEM5MUM5MDQwMERDMjU1
QiAvKiBJY29uUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRDcxOUI5MTgxMTA2RTAw
MDE2REM1MSAvKiBJREJBbnkuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZEZpbHRlcnNBbHBoYWJldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZEZpbHRlcnNBbHBoYWJldC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTM4MzE2OWRjYzNlNDEyYzRhODIzNjA0MTAzNzIxZGU1YTE1ODhlYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbWJp
bmVkRmlsdGVyc0FscGhhYmV0LmNwcApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNvbWJpbmVkRmlsdGVyc0FscGhhYmV0LmgiCisK
KyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K25hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CisKK3N0cnVjdCBUZXJtQ3JlYXRvcklucHV0
IHsKKyAgICBjb25zdCBUZXJtJiB0ZXJtOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VGVy
bT4+JiBpbnRlcm5lZFRlcm1zU3RvcmFnZTsKK307CisKK3N0cnVjdCBUZXJtQ3JlYXRvclRyYW5z
bGF0b3IgeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFRlcm1DcmVhdG9ySW5wdXQm
IGlucHV0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlucHV0LnRlcm0uaGFzaCgpOworICAgIH0K
KworICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBlcXVhbChjb25zdCBUZXJtKiB0ZXJtLCBjb25zdCBU
ZXJtQ3JlYXRvcklucHV0JiBpbnB1dCkKKyAgICB7CisgICAgICAgIHJldHVybiAqdGVybSA9PSBp
bnB1dC50ZXJtOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShjb25zdCBUZXJt
KiYgbG9jYXRpb24sIGNvbnN0IFRlcm1DcmVhdG9ySW5wdXQmIGlucHV0LCB1bnNpZ25lZCkKKyAg
ICB7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXJtPiBuZXdVbmlxdWVUZXJtKG5ldyBUZXJt
KGlucHV0LnRlcm0pKTsKKyAgICAgICAgbG9jYXRpb24gPSBuZXdVbmlxdWVUZXJtLmdldCgpOwor
ICAgICAgICBpbnB1dC5pbnRlcm5lZFRlcm1zU3RvcmFnZS5hcHBlbmQoV1RGOjptb3ZlKG5ld1Vu
aXF1ZVRlcm0pKTsKKyAgICB9Cit9OworCitjb25zdCBUZXJtKiBDb21iaW5lZEZpbHRlcnNBbHBo
YWJldDo6aW50ZXJuZWQoY29uc3QgVGVybSYgdGVybSkKK3sKKyAgICBUZXJtQ3JlYXRvcklucHV0
IGlucHV0IHsgdGVybSwgbV9pbnRlcm5lZFRlcm1zU3RvcmFnZSB9OworICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV91bmlxdWVUZXJtcy5hZGQ8VGVybUNyZWF0b3JUcmFuc2xhdG9yPihpbnB1dCk7Cisg
ICAgcmV0dXJuICphZGRSZXN1bHQuaXRlcmF0b3I7Cit9CisKKyNpZiBDT05URU5UX0VYVEVOU0lP
TlNfUEVSRk9STUFOQ0VfUkVQT1JUSU5HCitzaXplX3QgQ29tYmluZWRGaWx0ZXJzQWxwaGFiZXQ6
Om1lbW9yeVVzZWQoKSBjb25zdAoreworICAgIHNpemVfdCB0ZXJtc1NpemUgPSAwOworICAgIGZv
ciAoY29uc3QgYXV0byYgdGVybVBvaW50ZXIgOiBtX2ludGVybmVkVGVybXNTdG9yYWdlKQorICAg
ICAgICB0ZXJtc1NpemUgKz0gdGVybVBvaW50ZXItPm1lbW9yeVVzZWQoKTsKKyAgICByZXR1cm4g
c2l6ZW9mKENvbWJpbmVkRmlsdGVyc0FscGhhYmV0KQorICAgICAgICArIHRlcm1zU2l6ZQorICAg
ICAgICArIG1fdW5pcXVlVGVybXMuY2FwYWNpdHkoKSAqIHNpemVvZihUZXJtKikKKyAgICAgICAg
KyBtX2ludGVybmVkVGVybXNTdG9yYWdlLmNhcGFjaXR5KCkgKiBzaXplb2Yoc3RkOjp1bmlxdWVf
cHRyPFRlcm0+KTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9u
cworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRVhU
RU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0Nv
bWJpbmVkRmlsdGVyc0FscGhhYmV0LmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db21iaW5lZEZpbHRlcnNBbHBoYWJldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxMzNkZWFmYjE3YjM0NDhl
YTRkNTU1YjI1MTc4NjMwZjNjM2NlY2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZEZpbHRlcnNBbHBoYWJldC5oCkBAIC0wLDAgKzEs
NjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENvbWJpbmVkRmlsdGVyc0FscGhhYmV0X2gKKyNk
ZWZpbmUgQ29tYmluZWRGaWx0ZXJzQWxwaGFiZXRfaAorCisjaWYgRU5BQkxFKENPTlRFTlRfRVhU
RU5TSU9OUykKKworI2luY2x1ZGUgIkNvbnRlbnRFeHRlbnNpb25zRGVidWdnaW5nLmgiCisjaW5j
bHVkZSAiVGVybS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBDb250ZW50RXh0ZW5z
aW9ucyB7CisKK2NsYXNzIENvbWJpbmVkRmlsdGVyc0FscGhhYmV0IHsKK3B1YmxpYzoKKyAgICBj
b25zdCBUZXJtKiBpbnRlcm5lZChjb25zdCBUZXJtJik7CisjaWYgQ09OVEVOVF9FWFRFTlNJT05T
X1BFUkZPUk1BTkNFX1JFUE9SVElORworICAgIHNpemVfdCBtZW1vcnlVc2VkKCkgY29uc3Q7Cisj
ZW5kaWYKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgVGVybVBvaW50ZXJIYXNoIHsKKyAgICAgICAg
c3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVGVybSoga2V5KSB7IHJldHVybiBrZXktPmhhc2go
KTsgfQorICAgICAgICBzdGF0aWMgaW5saW5lIGJvb2wgZXF1YWwoY29uc3QgVGVybSogYSwgY29u
c3QgVGVybSogYikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICphID09ICpiOworICAg
ICAgICB9CisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JE
ZWxldGVkID0gZmFsc2U7CisgICAgfTsKKworICAgIEhhc2hTZXQ8Y29uc3QgVGVybSosIFRlcm1Q
b2ludGVySGFzaD4gbV91bmlxdWVUZXJtczsKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFRl
cm0+PiBtX2ludGVybmVkVGVybXNTdG9yYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2UgQ29udGVu
dEV4dGVuc2lvbnMKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShD
T05URU5UX0VYVEVOU0lPTlMpCisKKyNlbmRpZiAvLyBDb21iaW5lZEZpbHRlcnNBbHBoYWJldF9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVS
TEZpbHRlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29tYmluZWRV
UkxGaWx0ZXJzLmNwcAppbmRleCBiNmU0YjBhYTAxNDhmNDNmYWRmNzg0YTFiMTNlYzcyYzM0MDM2
ZjBkLi5kYjM5NDc1NTA3OTM5YzE4Yjg2ZWM0ZGEzZDliYjAxNzZlYzAxMjA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVy
cy5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIENv
bnRlbnRFeHRlbnNpb25zIHsKIAogc3RydWN0IFByZWZpeFRyZWVFZGdlIHsKLSAgICBUZXJtIHRl
cm07CisgICAgY29uc3QgVGVybSogdGVybTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJlZml4VHJl
ZVZlcnRleD4gY2hpbGQ7CiB9OwogICAgIApAQCAtNDYsMTUgKzQ2LDEzIEBAIHR5cGVkZWYgVmVj
dG9yPFByZWZpeFRyZWVFZGdlLCAwLCBXVEY6OkNyYXNoT25PdmVyZmxvdywgMT4gUHJlZml4VHJl
ZUVkZ2VzOwogCiBzdHJ1Y3QgUHJlZml4VHJlZVZlcnRleCB7CiAgICAgUHJlZml4VHJlZUVkZ2Vz
IGVkZ2VzOwotICAgIEFjdGlvbkxpc3QgZmluYWxBY3Rpb25zOwogfTsKIAogI2lmIENPTlRFTlRf
RVhURU5TSU9OU19QRVJGT1JNQU5DRV9SRVBPUlRJTkcKIHN0YXRpYyBzaXplX3QgcmVjdXJzaXZl
TWVtb3J5VXNlZChjb25zdCBQcmVmaXhUcmVlVmVydGV4JiB2ZXJ0ZXgpCiB7CiAgICAgc2l6ZV90
IHNpemUgPSBzaXplb2YoUHJlZml4VHJlZVZlcnRleCkKLSAgICAgICAgKyB2ZXJ0ZXguZWRnZXMu
Y2FwYWNpdHkoKSAqIHNpemVvZihQcmVmaXhUcmVlRWRnZSkKLSAgICAgICAgKyB2ZXJ0ZXguZmlu
YWxBY3Rpb25zLmNhcGFjaXR5KCkgKiBzaXplb2YodWludDY0X3QpOworICAgICAgICArIHZlcnRl
eC5lZGdlcy5jYXBhY2l0eSgpICogc2l6ZW9mKFByZWZpeFRyZWVFZGdlKTsKICAgICBmb3IgKGNv
bnN0IGF1dG8mIGVkZ2UgOiB2ZXJ0ZXguZWRnZXMpIHsKICAgICAgICAgQVNTRVJUKGVkZ2UuY2hp
bGQpOwogICAgICAgICBzaXplICs9IHJlY3Vyc2l2ZU1lbW9yeVVzZWQoKmVkZ2UuY2hpbGQuZ2V0
KCkpOwpAQCAtNjUsNyArNjMsMTcgQEAgc3RhdGljIHNpemVfdCByZWN1cnNpdmVNZW1vcnlVc2Vk
KGNvbnN0IFByZWZpeFRyZWVWZXJ0ZXgmIHZlcnRleCkKIHNpemVfdCBDb21iaW5lZFVSTEZpbHRl
cnM6Om1lbW9yeVVzZWQoKSBjb25zdAogewogICAgIEFTU0VSVChtX3ByZWZpeFRyZWVSb290KTsK
LSAgICByZXR1cm4gcmVjdXJzaXZlTWVtb3J5VXNlZCgqbV9wcmVmaXhUcmVlUm9vdC5nZXQoKSk7
CisKKyAgICBzaXplX3QgYWN0aW9uc1NpemUgPSAwOworICAgIGZvciAoY29uc3QgYXV0byYgc2xv
dCA6IG1fYWN0aW9ucykKKyAgICAgICAgYWN0aW9uc1NpemUgKz0gc2xvdC52YWx1ZS5jYXBhY2l0
eSgpICogc2l6ZW9mKHVpbnQ2NF90KTsKKworICAgIHJldHVybiBzaXplb2YoQ29tYmluZWRVUkxG
aWx0ZXJzKQorICAgICAgICArIG1fYWxwaGFiZXQubWVtb3J5VXNlZCgpCisgICAgICAgICsgcmVj
dXJzaXZlTWVtb3J5VXNlZCgqbV9wcmVmaXhUcmVlUm9vdC5nZXQoKSkKKyAgICAgICAgKyBzaXpl
b2YoSGFzaE1hcDxQcmVmaXhUcmVlVmVydGV4KiwgQWN0aW9uTGlzdD4pCisgICAgICAgICsgbV9h
Y3Rpb25zLmNhcGFjaXR5KCkgKiAoc2l6ZW9mKFByZWZpeFRyZWVWZXJ0ZXgqKSArIHNpemVvZihB
Y3Rpb25MaXN0KSkKKyAgICAgICAgKyBhY3Rpb25zU2l6ZTsKIH0KICNlbmRpZgogICAgIApAQCAt
NzYsOSArODQsMTMgQEAgc3RhdGljIFN0cmluZyBwcmVmaXhUcmVlVmVydGV4VG9TdHJpbmcoY29u
c3QgUHJlZml4VHJlZVZlcnRleCYgdmVydGV4LCB1bnNpZ25lZAogICAgIHdoaWxlIChkZXB0aC0t
KQogICAgICAgICBidWlsZGVyLmFwcGVuZCgiICAiKTsKICAgICBidWlsZGVyLmFwcGVuZCgidmVy
dGV4IGFjdGlvbnM6ICIpOwotICAgIGZvciAoYXV0byBhY3Rpb24gOiB2ZXJ0ZXguZmluYWxBY3Rp
b25zKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGFjdGlvbik7Ci0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCcsJyk7CisKKyAgICBhdXRvIGFjdGlvbnNTbG90ID0gbV9hY3Rpb25zLmZp
bmQoJnZlcnRleCk7CisgICAgaWYgKGFjdGlvbnNTbG90ICE9IG1fYWN0aW9ucy5lbmQoKSkgewor
ICAgICAgICBmb3IgKGF1dG8gYWN0aW9uIDogKmFjdGlvbnNTbG90LT52YWx1ZSkgeworICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoYWN0aW9uKTsKKyAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCcsJyk7CisgICAgICAgIH0KICAgICB9CiAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7
CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTkyLDcgKzEwNCw3IEBAIHN0YXRp
YyB2b2lkIHJlY3Vyc2l2ZVByaW50KGNvbnN0IFByZWZpeFRyZWVWZXJ0ZXgmIHZlcnRleCwgdW5z
aWduZWQgZGVwdGgpCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZXB0aCAqIDI7
ICsraSkKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CiAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCJ2ZXJ0ZXggZWRnZTogIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGVkZ2UudGVy
bS50b1N0cmluZygpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoZWRnZS50ZXJtLT50b1N0cmlu
ZygpKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgICAgIGRhdGFMb2dGKCIl
cyIsIGJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgQVNTRVJUKGVk
Z2UuY2hpbGQpOwpAQCAtMTc1LDcgKzE4Nyw3IEBAIHZvaWQgQ29tYmluZWRVUkxGaWx0ZXJzOjph
ZGRQYXR0ZXJuKHVpbnQ2NF90IGFjdGlvbklkLCBjb25zdCBWZWN0b3I8VGVybT4mIHBhdHRlCiAg
ICAgZm9yIChjb25zdCBUZXJtJiB0ZXJtIDogcGF0dGVybikgewogICAgICAgICBzaXplX3QgbmV4
dEVudHJ5SW5kZXggPSBXVEY6Om5vdEZvdW5kOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGxhc3RQcmVmaXhUcmVlLT5lZGdlcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYg
KGxhc3RQcmVmaXhUcmVlLT5lZGdlc1tpXS50ZXJtID09IHRlcm0pIHsKKyAgICAgICAgICAgIGlm
ICgqbGFzdFByZWZpeFRyZWUtPmVkZ2VzW2ldLnRlcm0gPT0gdGVybSkgewogICAgICAgICAgICAg
ICAgIG5leHRFbnRyeUluZGV4ID0gaTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KQEAgLTE4MywxNyArMTk1LDE4IEBAIHZvaWQgQ29tYmluZWRVUkxGaWx0ZXJzOjphZGRQ
YXR0ZXJuKHVpbnQ2NF90IGFjdGlvbklkLCBjb25zdCBWZWN0b3I8VGVybT4mIHBhdHRlCiAgICAg
ICAgIGlmIChuZXh0RW50cnlJbmRleCAhPSBXVEY6Om5vdEZvdW5kKQogICAgICAgICAgICAgbGFz
dFByZWZpeFRyZWUgPSBsYXN0UHJlZml4VHJlZS0+ZWRnZXNbbmV4dEVudHJ5SW5kZXhdLmNoaWxk
LmdldCgpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGxhc3RQcmVmaXhUcmVlLT5lZGdl
cy5hcHBlbmQoUHJlZml4VHJlZUVkZ2Uoe3Rlcm0sIHN0ZDo6bWFrZV91bmlxdWU8UHJlZml4VHJl
ZVZlcnRleD4oKX0pKTsKKyAgICAgICAgICAgIGxhc3RQcmVmaXhUcmVlLT5lZGdlcy5hcHBlbmQo
UHJlZml4VHJlZUVkZ2Uoe21fYWxwaGFiZXQuaW50ZXJuZWQodGVybSksIHN0ZDo6bWFrZV91bmlx
dWU8UHJlZml4VHJlZVZlcnRleD4oKX0pKTsKICAgICAgICAgICAgIGxhc3RQcmVmaXhUcmVlID0g
bGFzdFByZWZpeFRyZWUtPmVkZ2VzLmxhc3QoKS5jaGlsZC5nZXQoKTsKICAgICAgICAgfQogICAg
IH0KIAotICAgIEFjdGlvbkxpc3QmIGFjdGlvbnMgPSBsYXN0UHJlZml4VHJlZS0+ZmluYWxBY3Rp
b25zOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9hY3Rpb25zLmFkZChsYXN0UHJlZml4VHJlZSwg
QWN0aW9uTGlzdCgpKTsKKyAgICBBY3Rpb25MaXN0JiBhY3Rpb25zID0gYWRkUmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZTsKICAgICBpZiAoYWN0aW9ucy5maW5kKGFjdGlvbklkKSA9PSBXVEY6Om5vdEZv
dW5kKQogICAgICAgICBhY3Rpb25zLmFwcGVuZChhY3Rpb25JZCk7CiB9CiAKLXN0YXRpYyB2b2lk
IGdlbmVyYXRlTkZBRm9yU3VidHJlZShORkEmIG5mYSwgSW1tdXRhYmxlQ2hhck5GQU5vZGVCdWls
ZGVyJiYgc3VidHJlZVJvb3QsIFByZWZpeFRyZWVWZXJ0ZXgmIHJvb3QsIHNpemVfdCBtYXhORkFT
aXplKQorc3RhdGljIHZvaWQgZ2VuZXJhdGVORkFGb3JTdWJ0cmVlKE5GQSYgbmZhLCBJbW11dGFi
bGVDaGFyTkZBTm9kZUJ1aWxkZXImJiBzdWJ0cmVlUm9vdCwgUHJlZml4VHJlZVZlcnRleCYgcm9v
dCwgSGFzaE1hcDxjb25zdCBQcmVmaXhUcmVlVmVydGV4KiwgQWN0aW9uTGlzdD4mIGFjdGlvbnMs
IHNpemVfdCBtYXhORkFTaXplKQogewogICAgIC8vIFRoaXMgcmVjdXJzZXMgdGhlIHN1YnRyZWUg
b2YgdGhlIHByZWZpeCB0cmVlLgogICAgIC8vIEZvciBlYWNoIGVkZ2UgdGhhdCBoYXMgZml4ZWQg
bGVuZ3RoIChubyBxdWFudGlmaWVycyBsaWtlID8sICosIG9yICspIGl0IGdlbmVyYXRlcyB0aGUg
bmZhIGdyYXBoLApAQCAtMjMzLDI2ICsyNDYsMjcgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVORkFG
b3JTdWJ0cmVlKE5GQSYgbmZhLCBJbW11dGFibGVDaGFyTkZBTm9kZUJ1aWxkZXImJiBzdWJ0cmUK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gUXVhbnRpZmllZCBl
ZGdlcyBpbiB0aGUgc3VidHJlZSB3aWxsIGJlIGEgcGFydCBvZiBhbm90aGVyIE5GQS4KLSAgICAg
ICAgICAgIGlmICghZWRnZS50ZXJtLmhhc0ZpeGVkTGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIGlm
ICghZWRnZS50ZXJtLT5oYXNGaXhlZExlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgc3RhY2su
bGFzdCgpLmVkZ2VJbmRleCsrOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBJbW11dGFibGVDaGFyTkZBTm9kZUJ1aWxkZXIgbmV3Tm9kZSA9
IGVkZ2UudGVybS5nZW5lcmF0ZUdyYXBoKG5mYSwgc3RhY2subGFzdCgpLm5mYU5vZGUsIGVkZ2Uu
Y2hpbGQtPmZpbmFsQWN0aW9ucyk7CisKKyAgICAgICAgICAgIEltbXV0YWJsZUNoYXJORkFOb2Rl
QnVpbGRlciBuZXdOb2RlID0gZWRnZS50ZXJtLT5nZW5lcmF0ZUdyYXBoKG5mYSwgc3RhY2subGFz
dCgpLm5mYU5vZGUsIGFjdGlvbnMuZ2V0KGVkZ2UuY2hpbGQuZ2V0KCkpKTsKICAgICAgICAgICAg
IEFTU0VSVChlZGdlLmNoaWxkLmdldCgpKTsKICAgICAgICAgICAgIHN0YWNrLmFwcGVuZChBY3Rp
dmVTdWJ0cmVlKCplZGdlLmNoaWxkLmdldCgpLCBXVEY6Om1vdmUobmV3Tm9kZSksIDApKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChlZGdlSW5kZXggPT0gdmVydGV4LmVk
Z2VzLnNpemUoKSk7CiAgICAgICAgICAgICB2ZXJ0ZXguZWRnZXMucmVtb3ZlQWxsTWF0Y2hpbmco
W10oUHJlZml4VHJlZUVkZ2UmIGVkZ2UpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIGVkZ2UudGVybS5pc0RlbGV0ZWRWYWx1ZSgpOworICAgICAgICAgICAgICAgIHJldHVy
biAhZWRnZS50ZXJtOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBzdGFjay5yZW1vdmVM
YXN0KCk7CiAgICAgICAgICAgICBpZiAoIXN0YWNrLmlzRW1wdHkoKSkgewogICAgICAgICAgICAg
ICAgIGF1dG8mIGFjdGl2ZVN1YnRyZWUgPSBzdGFjay5sYXN0KCk7CiAgICAgICAgICAgICAgICAg
YXV0byYgZWRnZSA9IGFjdGl2ZVN1YnRyZWUudmVydGV4LmVkZ2VzW3N0YWNrLmxhc3QoKS5lZGdl
SW5kZXhdOwogICAgICAgICAgICAgICAgIGlmIChlZGdlLmNoaWxkLT5lZGdlcy5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICAgICAgICAgIGVkZ2UudGVybSA9IFRlcm0oVGVybTo6RGVsZXRlZFZhbHVl
KTsgLy8gTWFyayB0aGlzIGxlYWYgZm9yIGRlbGV0aW5nLgorICAgICAgICAgICAgICAgICAgICBl
ZGdlLnRlcm0gPSBudWxscHRyOyAvLyBNYXJrIHRoaXMgbGVhZiBmb3IgZGVsZXRpbmcuCiAgICAg
ICAgICAgICAgICAgYWN0aXZlU3VidHJlZS5lZGdlSW5kZXgrKzsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpAQCAtMjgxLDcgKzI5NSw3IEBAIHZvaWQgQ29tYmluZWRVUkxGaWx0ZXJzOjpwcm9j
ZXNzTkZBcyhzaXplX3QgbWF4TkZBU2l6ZSwgc3RkOjpmdW5jdGlvbjx2b2lkKE5GQSYmCiAgICAg
ICAgIC8vIEZpbmQgdGhlIHByZWZpeCByb290IGZvciB0aGlzIE5GQS4gVGhpcyBpcyB0aGUgdmVy
dGV4IGFmdGVyIHRoZSBsYXN0IHRlcm0gd2l0aCBhIHF1YW50aWZpZXIgaWYgdGhlcmUgaXMgb25l
LAogICAgICAgICAvLyBvciB0aGUgcm9vdCBpZiB0aGVyZSBhcmUgbm8gcXVhbnRpZmllcnMgbGVm
dC4KICAgICAgICAgd2hpbGUgKHN0YWNrLnNpemUoKSA+IDEpIHsKLSAgICAgICAgICAgIGlmICgh
c3RhY2tbc3RhY2suc2l6ZSgpIC0gMl0tPmVkZ2VzLmxhc3QoKS50ZXJtLmhhc0ZpeGVkTGVuZ3Ro
KCkpCisgICAgICAgICAgICBpZiAoIXN0YWNrW3N0YWNrLnNpemUoKSAtIDJdLT5lZGdlcy5sYXN0
KCkudGVybS0+aGFzRml4ZWRMZW5ndGgoKSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIHN0YWNrLnJlbW92ZUxhc3QoKTsKICAgICAgICAgfQpAQCAtMjk0LDEzICszMDgsMTMg
QEAgdm9pZCBDb21iaW5lZFVSTEZpbHRlcnM6OnByb2Nlc3NORkFzKHNpemVfdCBtYXhORkFTaXpl
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoTkZBJiYKICAgICAgICAgICAgIEltbXV0YWJsZUNoYXJORkFO
b2RlQnVpbGRlciBsYXN0Tm9kZShuZmEpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHN0YWNrLnNpemUoKSAtIDE7ICsraSkgewogICAgICAgICAgICAgICAgIGNvbnN0IFBy
ZWZpeFRyZWVFZGdlJiBlZGdlID0gc3RhY2tbaV0tPmVkZ2VzLmxhc3QoKTsKLSAgICAgICAgICAg
ICAgICBJbW11dGFibGVDaGFyTkZBTm9kZUJ1aWxkZXIgbmV3Tm9kZSA9IGVkZ2UudGVybS5nZW5l
cmF0ZUdyYXBoKG5mYSwgbGFzdE5vZGUsIGVkZ2UuY2hpbGQtPmZpbmFsQWN0aW9ucyk7CisgICAg
ICAgICAgICAgICAgSW1tdXRhYmxlQ2hhck5GQU5vZGVCdWlsZGVyIG5ld05vZGUgPSBlZGdlLnRl
cm0tPmdlbmVyYXRlR3JhcGgobmZhLCBsYXN0Tm9kZSwgbV9hY3Rpb25zLmdldChlZGdlLmNoaWxk
LmdldCgpKSk7CiAgICAgICAgICAgICAgICAgbGFzdE5vZGUgPSBXVEY6Om1vdmUobmV3Tm9kZSk7
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIFB1dCB0aGUgbm9uLXF1YW50aWZpZWQg
dmVydGljZXMgaW4gdGhlIHN1YnRyZWUgaW50byB0aGUgTkZBIGFuZCBkZWxldGUgdGhlbS4KICAg
ICAgICAgICAgIEFTU0VSVChzdGFjay5sYXN0KCkpOwotICAgICAgICAgICAgZ2VuZXJhdGVORkFG
b3JTdWJ0cmVlKG5mYSwgV1RGOjptb3ZlKGxhc3ROb2RlKSwgKnN0YWNrLmxhc3QoKSwgbWF4TkZB
U2l6ZSk7CisgICAgICAgICAgICBnZW5lcmF0ZU5GQUZvclN1YnRyZWUobmZhLCBXVEY6Om1vdmUo
bGFzdE5vZGUpLCAqc3RhY2subGFzdCgpLCBtX2FjdGlvbnMsIG1heE5GQVNpemUpOwogICAgICAg
ICB9CiAgICAgICAgIG5mYS5maW5hbGl6ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5oCmluZGV4IGUyYzkwZGZkMzFj
M2Y3OWYzZWYzNjNkYmI4ZDNiMDc3MjgxYWEzZDYuLjA4NmYwMTA4YmI2ODU0YmU2OGE1NjliMmVl
YWU4NjY4ZTRiMzY2NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL0NvbWJpbmVkVVJMRmlsdGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFC
TEUoQ09OVEVOVF9FWFRFTlNJT05TKQogCisjaW5jbHVkZSAiQ29tYmluZWRGaWx0ZXJzQWxwaGFi
ZXQuaCIKICNpbmNsdWRlICJDb250ZW50RXh0ZW5zaW9uc0RlYnVnZ2luZy5oIgogI2luY2x1ZGUg
Ik5GQS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC0zNyw3ICszOCw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKIAotY2xhc3Mg
VGVybTsKIHN0cnVjdCBQcmVmaXhUcmVlVmVydGV4OwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBD
b21iaW5lZFVSTEZpbHRlcnMgewpAQCAtNTksNyArNTksOSBAQCBwdWJsaWM6CiAjZW5kaWYKICAg
ICAKIHByaXZhdGU6CisgICAgQ29tYmluZWRGaWx0ZXJzQWxwaGFiZXQgbV9hbHBoYWJldDsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UHJlZml4VHJlZVZlcnRleD4gbV9wcmVmaXhUcmVlUm9vdDsKKyAg
ICBIYXNoTWFwPGNvbnN0IFByZWZpeFRyZWVWZXJ0ZXgqLCBBY3Rpb25MaXN0PiBtX2FjdGlvbnM7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVGVybS5oIGIvU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvVGVybS5oCmluZGV4IGZjOTlmNmZjNmFhNjNjNjE3ZDcyY2QxZjBmZmRi
YWYxNTgxNDY2OGEuLjZjNWI4N2MwM2UxYWZlNDNlYWU3OTQxZDdlNjY1NDEzN2YwZmJjZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1Rlcm0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9UZXJtLmgKQEAgLTcxLDkgKzcxLDYgQEAg
cHVibGljOgogICAgIGVudW0gRW1wdHlWYWx1ZVRhZyB7IEVtcHR5VmFsdWUgfTsKICAgICBUZXJt
KEVtcHR5VmFsdWVUYWcpOwogCi0gICAgZW51bSBEZWxldGVkVmFsdWVUYWcgeyBEZWxldGVkVmFs
dWUgfTsKLSAgICBUZXJtKERlbGV0ZWRWYWx1ZVRhZyk7Ci0KICAgICB+VGVybSgpOwogCiAgICAg
Ym9vbCBpc1ZhbGlkKCkgY29uc3Q7CkBAIC0xMDcsMTEgKzEwNCwxNCBAQCBwdWJsaWM6CiAgICAg
dW5zaWduZWQgaGFzaCgpIGNvbnN0OwogCiAgICAgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdDsK
LSAgICBib29sIGlzRGVsZXRlZFZhbHVlKCkgY29uc3Q7CiAKICNpZiBDT05URU5UX0VYVEVOU0lP
TlNfU1RBVEVfTUFDSElORV9ERUJVR0dJTkcKICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsK
ICNlbmRpZgorCisjaWYgQ09OVEVOVF9FWFRFTlNJT05TX1BFUkZPUk1BTkNFX1JFUE9SVElORwor
ICAgIHNpemVfdCBtZW1vcnlVc2VkKCkgY29uc3Q7CisjZW5kaWYKICAgICAKIHByaXZhdGU6CiAg
ICAgLy8gVGhpcyBpcyBleGFjdCBmb3IgY2hhcmFjdGVyIHNldHMgYnV0IGNvbnNlcnZhdGl2ZSBm
b3IgZ3JvdXBzLgpAQCAtMTI0LDcgKzEyNCw2IEBAIHByaXZhdGU6CiAKICAgICBlbnVtIGNsYXNz
IFRlcm1UeXBlIDogdWludDhfdCB7CiAgICAgICAgIEVtcHR5LAotICAgICAgICBEZWxldGVkLAog
ICAgICAgICBDaGFyYWN0ZXJTZXQsCiAgICAgICAgIEdyb3VwCiAgICAgfTsKQEAgLTIzMCw4ICsy
MjksNiBAQCBpbmxpbmUgU3RyaW5nIFRlcm06OnRvU3RyaW5nKCkgY29uc3QKICAgICBzd2l0Y2gg
KG1fdGVybVR5cGUpIHsKICAgICBjYXNlIFRlcm1UeXBlOjpFbXB0eToKICAgICAgICAgcmV0dXJu
ICIoRW1wdHkpIjsKLSAgICBjYXNlIFRlcm1UeXBlOjpEZWxldGVkOgotICAgICAgICByZXR1cm4g
IihEZWxldGVkKSI7CiAgICAgY2FzZSBUZXJtVHlwZTo6Q2hhcmFjdGVyU2V0OiB7CiAgICAgICAg
IFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1snKTsKQEAg
LTI2MiwxNCArMjU5LDYgQEAgaW5saW5lIFN0cmluZyBUZXJtOjp0b1N0cmluZygpIGNvbnN0CiAg
ICAgfQogfQogI2VuZGlmCi0gICAgCi1zdHJ1Y3QgVGVybUhhc2ggewotICAgIHN0YXRpYyB1bnNp
Z25lZCBoYXNoKGNvbnN0IFRlcm0mIHRlcm0pIHsgcmV0dXJuIHRlcm0uaGFzaCgpOyB9Ci0gICAg
c3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVGVybSYgYSwgY29uc3QgVGVybSYgYikgeyByZXR1cm4g
YSA9PSBiOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRl
bGV0ZWQgPSB0cnVlOwotfTsKLQotc3RydWN0IFRlcm1IYXNoVHJhaXRzIDogcHVibGljIFdURjo6
Q3VzdG9tSGFzaFRyYWl0czxUZXJtPiB7IH07CiAKIGlubGluZSBUZXJtOjpUZXJtKCkKIHsKQEAg
LTMxNiw3ICszMDUsNiBAQCBpbmxpbmUgVGVybTo6VGVybShjb25zdCBUZXJtJiBvdGhlcikKIHsK
ICAgICBzd2l0Y2ggKG1fdGVybVR5cGUpIHsKICAgICBjYXNlIFRlcm1UeXBlOjpFbXB0eToKLSAg
ICBjYXNlIFRlcm1UeXBlOjpEZWxldGVkOgogICAgICAgICBicmVhazsKICAgICBjYXNlIFRlcm1U
eXBlOjpDaGFyYWN0ZXJTZXQ6CiAgICAgICAgIG5ldyAoTm90TnVsbCwgJm1fYXRvbURhdGEuY2hh
cmFjdGVyU2V0KSBDaGFyYWN0ZXJTZXQob3RoZXIubV9hdG9tRGF0YS5jaGFyYWN0ZXJTZXQpOwpA
QCAtMzMzLDcgKzMyMSw2IEBAIGlubGluZSBUZXJtOjpUZXJtKFRlcm0mJiBvdGhlcikKIHsKICAg
ICBzd2l0Y2ggKG1fdGVybVR5cGUpIHsKICAgICBjYXNlIFRlcm1UeXBlOjpFbXB0eToKLSAgICBj
YXNlIFRlcm1UeXBlOjpEZWxldGVkOgogICAgICAgICBicmVhazsKICAgICBjYXNlIFRlcm1UeXBl
OjpDaGFyYWN0ZXJTZXQ6CiAgICAgICAgIG5ldyAoTm90TnVsbCwgJm1fYXRvbURhdGEuY2hhcmFj
dGVyU2V0KSBDaGFyYWN0ZXJTZXQoV1RGOjptb3ZlKG90aGVyLm1fYXRvbURhdGEuY2hhcmFjdGVy
U2V0KSk7CkBAIC0zNTAsMTEgKzMzNyw2IEBAIGlubGluZSBUZXJtOjpUZXJtKEVtcHR5VmFsdWVU
YWcpCiB7CiB9CiAKLWlubGluZSBUZXJtOjpUZXJtKERlbGV0ZWRWYWx1ZVRhZykKLSAgICA6IG1f
dGVybVR5cGUoVGVybVR5cGU6OkRlbGV0ZWQpCi17Ci19Ci0KIGlubGluZSBUZXJtOjp+VGVybSgp
CiB7CiAgICAgZGVzdHJveSgpOwpAQCAtMzYyLDcgKzM0NCw3IEBAIGlubGluZSBUZXJtOjp+VGVy
bSgpCiAKIGlubGluZSBib29sIFRlcm06OmlzVmFsaWQoKSBjb25zdAogewotICAgIHJldHVybiBt
X3Rlcm1UeXBlICE9IFRlcm1UeXBlOjpFbXB0eSAmJiBtX3Rlcm1UeXBlICE9IFRlcm1UeXBlOjpE
ZWxldGVkOworICAgIHJldHVybiBtX3Rlcm1UeXBlICE9IFRlcm1UeXBlOjpFbXB0eTsKIH0KIAog
aW5saW5lIHZvaWQgVGVybTo6YWRkQ2hhcmFjdGVyKFVDaGFyIGNoYXJhY3RlciwgYm9vbCBpc0Nh
c2VTZW5zaXRpdmUpCkBAIC00NzEsNyArNDUzLDYgQEAgaW5saW5lIGJvb2wgVGVybTo6aXNLbm93
blRvTWF0Y2hBbnlTdHJpbmcoKSBjb25zdAogCiAgICAgc3dpdGNoIChtX3Rlcm1UeXBlKSB7CiAg
ICAgY2FzZSBUZXJtVHlwZTo6RW1wdHk6Ci0gICAgY2FzZSBUZXJtVHlwZTo6RGVsZXRlZDoKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVGVy
bVR5cGU6OkNoYXJhY3RlclNldDoKQEAgLTUxMyw3ICs0OTQsNiBAQCBpbmxpbmUgYm9vbCBUZXJt
OjpoYXNGaXhlZExlbmd0aCgpIGNvbnN0CiAKICAgICBzd2l0Y2ggKG1fdGVybVR5cGUpIHsKICAg
ICBjYXNlIFRlcm1UeXBlOjpFbXB0eToKLSAgICBjYXNlIFRlcm1UeXBlOjpEZWxldGVkOgogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUZXJt
VHlwZTo6Q2hhcmFjdGVyU2V0OgpAQCAtNTUyLDcgKzUzMiw2IEBAIGlubGluZSBib29sIFRlcm06
Om9wZXJhdG9yPT0oY29uc3QgVGVybSYgb3RoZXIpIGNvbnN0CiAKICAgICBzd2l0Y2ggKG1fdGVy
bVR5cGUpIHsKICAgICBjYXNlIFRlcm1UeXBlOjpFbXB0eToKLSAgICBjYXNlIFRlcm1UeXBlOjpE
ZWxldGVkOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIFRlcm1UeXBlOjpDaGFyYWN0
ZXJTZXQ6CiAgICAgICAgIHJldHVybiBtX2F0b21EYXRhLmNoYXJhY3RlclNldCA9PSBvdGhlci5t
X2F0b21EYXRhLmNoYXJhY3RlclNldDsKQEAgLTU3MSw5ICs1NTAsNiBAQCBpbmxpbmUgdW5zaWdu
ZWQgVGVybTo6aGFzaCgpIGNvbnN0CiAgICAgY2FzZSBUZXJtVHlwZTo6RW1wdHk6CiAgICAgICAg
IHNlY29uZGFyeSA9IDUyMTg0MzkzOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRlcm1UeXBl
OjpEZWxldGVkOgotICAgICAgICBzZWNvbmRhcnkgPSA0MDM0Mjk4ODsKLSAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBUZXJtVHlwZTo6Q2hhcmFjdGVyU2V0OgogICAgICAgICBzZWNvbmRhcnkgPSBt
X2F0b21EYXRhLmNoYXJhY3RlclNldC5oYXNoKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTg5LDE4
ICs1NjUsMTIgQEAgaW5saW5lIGJvb2wgVGVybTo6aXNFbXB0eVZhbHVlKCkgY29uc3QKICAgICBy
ZXR1cm4gbV90ZXJtVHlwZSA9PSBUZXJtVHlwZTo6RW1wdHk7CiB9CiAKLWlubGluZSBib29sIFRl
cm06OmlzRGVsZXRlZFZhbHVlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV90ZXJtVHlwZSA9PSBU
ZXJtVHlwZTo6RGVsZXRlZDsKLX0KLQogaW5saW5lIGJvb2wgVGVybTo6aXNVbml2ZXJzYWxUcmFu
c2l0aW9uKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNWYWxpZCgpKTsKIAogICAgIHN3aXRjaCAo
bV90ZXJtVHlwZSkgewogICAgIGNhc2UgVGVybVR5cGU6OkVtcHR5OgotICAgIGNhc2UgVGVybVR5
cGU6OkRlbGV0ZWQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIFRlcm1UeXBlOjpDaGFyYWN0ZXJTZXQ6CkBAIC02MTYsNyArNTg2LDYgQEAg
aW5saW5lIEltbXV0YWJsZUNoYXJORkFOb2RlQnVpbGRlciBUZXJtOjpnZW5lcmF0ZVN1YmdyYXBo
Rm9yQXRvbShORkEmIG5mYSwgSW1tdXQKIHsKICAgICBzd2l0Y2ggKG1fdGVybVR5cGUpIHsKICAg
ICBjYXNlIFRlcm1UeXBlOjpFbXB0eToKLSAgICBjYXNlIFRlcm1UeXBlOjpEZWxldGVkOgogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIEltbXV0YWJsZUNoYXJO
RkFOb2RlQnVpbGRlcigpOwogICAgIGNhc2UgVGVybVR5cGU6OkNoYXJhY3RlclNldDogewpAQCAt
Njc2LDcgKzY0NSw2IEBAIGlubGluZSB2b2lkIFRlcm06OmRlc3Ryb3koKQogewogICAgIHN3aXRj
aCAobV90ZXJtVHlwZSkgewogICAgIGNhc2UgVGVybVR5cGU6OkVtcHR5OgotICAgIGNhc2UgVGVy
bVR5cGU6OkRlbGV0ZWQ6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVGVybVR5cGU6OkNoYXJh
Y3RlclNldDoKICAgICAgICAgbV9hdG9tRGF0YS5jaGFyYWN0ZXJTZXQufkNoYXJhY3RlclNldCgp
OwpAQCAtNjg1LDggKzY1MywyMCBAQCBpbmxpbmUgdm9pZCBUZXJtOjpkZXN0cm95KCkKICAgICAg
ICAgbV9hdG9tRGF0YS5ncm91cC5+R3JvdXAoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAg
IG1fdGVybVR5cGUgPSBUZXJtVHlwZTo6RGVsZXRlZDsKKyAgICBtX3Rlcm1UeXBlID0gVGVybVR5
cGU6OkVtcHR5OworfQorCisjaWYgQ09OVEVOVF9FWFRFTlNJT05TX1BFUkZPUk1BTkNFX1JFUE9S
VElORworaW5saW5lIHNpemVfdCBUZXJtOjptZW1vcnlVc2VkKCkgY29uc3QKK3sKKyAgICBzaXpl
X3QgZXh0cmFNZW1vcnkgPSAwOworICAgIGlmIChtX3Rlcm1UeXBlID09IFRlcm1UeXBlOjpHcm91
cCkgeworICAgICAgICBmb3IgKGNvbnN0IFRlcm0mIHRlcm0gOiBtX2F0b21EYXRhLmdyb3VwLnRl
cm1zKQorICAgICAgICAgICAgZXh0cmFNZW1vcnkgKz0gdGVybS5tZW1vcnlVc2VkKCk7CisgICAg
fQorICAgIHJldHVybiBzaXplb2YoVGVybSkgKyBleHRyYU1lbW9yeTsKIH0KKyNlbmRpZgogCiB9
IC8vIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>